[Home] [Help]
PACKAGE BODY: APPS.JTF_TTY_GEN_TERR_PVT
Source
1 Package Body JTF_TTY_GEN_TERR_PVT AS
2 /* $Header: jtftsstb.pls 120.22 2006/09/29 07:30:35 spai ship $ */
3 -- Start of Comments
4 -- ---------------------------------------------------
5 -- PACKAGE NAME: JTF_TTY_GEN_TERR_PVT
6 -- ---------------------------------------------------
7 -- PURPOSE
8 -- Joint task force core territory manager public api's.
9 -- This package is used to generate the territories
10 -- based on tha data setup in the JTF territory tables
11 --
12 -- Procedures:
13 -- (see below for specification)
14 --
15 -- NOTES
16 -- This package is publicly available for use
17 --
18 -- HISTORY
19 -- 11/19/03 ACHANDA Created
20 --
21 -- 03/04/04 ACHANDA Bug# 3426946 : Uptake of party number matching rule
22 -- 05/24/04 ACHANDA Fix Bug# 3645451
23 --
24 -- End of Comments
25 --
26 --------------------------------------------------
27 --- GLOBAL Declarations Starts here -----
28 --------------------------------------------------
29
30 /* Global System Variables */
31 G_Debug BOOLEAN := FALSE;
32 G_APPL_ID NUMBER := FND_GLOBAL.prog_appl_id;
33 G_LOGIN_ID NUMBER := FND_GLOBAL.conc_login_id;
34 G_PROGRAM_ID NUMBER := FND_GLOBAL.conc_program_id;
35 G_USER_ID NUMBER := FND_GLOBAL.user_id;
36 G_REQUEST_ID NUMBER := FND_GLOBAL.conc_request_id;
37 G_APP_SHORT_NAME VARCHAR2(15) := FND_GLOBAL.application_short_name;
38 G_SYSDATE DATE := SYSDATE;
39 G_JTF_SCHEMA VARCHAR2(20) := 'JTF';
40 G_CUTOFF_TIME DATE;
41 G_COMMIT_CHUNK_SIZE NUMBER := 50000;
42 g_prod_cat_enabled BOOLEAN;
43 g_opp_qual_usg_id NUMBER;
44 g_lead_qual_usg_id NUMBER;
45
46
47 TYPE g_terr_group_id_tab IS TABLE OF jtf_tty_terr_groups.terr_group_id%TYPE;
48 TYPE g_terr_group_name_tab IS TABLE OF jtf_tty_terr_groups.terr_group_name%TYPE;
49 TYPE g_rank_tab IS TABLE OF jtf_tty_terr_groups.rank%TYPE;
50 TYPE g_active_from_date_tab IS TABLE OF jtf_tty_terr_groups.active_from_date%TYPE;
51 TYPE g_active_to_date_tab IS TABLE OF jtf_tty_terr_groups.active_to_date%TYPE;
52 TYPE g_parent_terr_id_tab IS TABLE OF jtf_tty_terr_groups.parent_terr_id%TYPE;
53 TYPE g_matching_rule_code_tab IS TABLE OF jtf_tty_terr_groups.matching_rule_code%TYPE;
54 TYPE g_created_by_tab IS TABLE OF jtf_tty_terr_groups.created_by%TYPE;
55 TYPE g_creation_date_tab IS TABLE OF jtf_tty_terr_groups.creation_date%TYPE;
56 TYPE g_last_updated_by_tab IS TABLE OF jtf_tty_terr_groups.last_updated_by%TYPE;
57 TYPE g_last_update_date_tab IS TABLE OF jtf_tty_terr_groups.last_update_date%TYPE;
58 TYPE g_last_update_login_tab IS TABLE OF jtf_tty_terr_groups.last_update_login%TYPE;
59 TYPE g_catch_all_resource_id_tab IS TABLE OF jtf_tty_terr_groups.catch_all_resource_id%TYPE;
60 TYPE g_catch_all_resource_type_tab IS TABLE OF jtf_tty_terr_groups.catch_all_resource_type%TYPE;
61 TYPE g_generate_catchall_flag_tab IS TABLE OF jtf_tty_terr_groups.generate_catchall_flag%TYPE;
62 TYPE g_num_winners_tab IS TABLE OF jtf_tty_terr_groups.num_winners%TYPE;
63 TYPE g_org_id_tab IS TABLE OF jtf_terr_all.org_id%TYPE;
64 TYPE g_change_type_tab IS TABLE OF jtf_tty_named_acct_changes.change_type%TYPE;
65 TYPE g_from_where_tab IS TABLE OF jtf_tty_named_acct_changes.from_where%TYPE;
66 TYPE g_terr_group_account_id_tab IS TABLE OF jtf_tty_terr_grp_accts.terr_group_account_id%TYPE;
67 TYPE g_terr_id_tab IS TABLE OF jtf_terr_all.terr_id%TYPE;
68 TYPE g_geo_territory_id_tab IS TABLE OF jtf_tty_geo_terr.geo_territory_id%TYPE;
69 TYPE g_geo_terr_name_tab IS TABLE OF jtf_tty_geo_terr.geo_terr_name%TYPE;
70 TYPE g_terr_attribute_tab IS TABLE OF jtf_tty_terr_grp_accts.attribute1%TYPE;
71 TYPE g_terr_attr_cat_tab IS TABLE OF jtf_terr_all.attribute_category%TYPE;
72 -- TYPE g_terr_created_id_tab IS TABLE OF jtf_terr_all.terr_id%TYPE;
73 -- TYPE g_terr_creation_flag_tab IS TABLE OF VARCHAR2(1);
74
75
76 --------------------------------------------------------------------
77 -- Logging PROCEDURE
78 --
79 -- which = 1. write to log
80 -- which = 2, write to output
81 --------------------------------------------------------------------
82 --
83 PROCEDURE Write_Log(which NUMBER, mssg VARCHAR2 ) IS
84
85 l_mssg VARCHAR2(4000);
86 l_sub_mssg VARCHAR2(255);
87 l_begin NUMBER := 1;
88 l_mssg_length NUMBER := 0;
89 l_time VARCHAR2(60) := TO_CHAR(SYSDATE, 'mm/dd/yyyy hh24:mi:ss');
90
91 BEGIN
92 --
93 l_mssg := mssg;
94
95 /* If the output message and if debug flag is set then also write
96 ** to the log file
97 */
98 IF which = 2 THEN
99 FND_FILE.PUT(1, mssg);
100 FND_FILE.NEW_LINE(1, 1);
101 END IF;
102
103 l_sub_mssg := 'Time = ' || l_time;
104 --FND_FILE.PUT_LINE(FND_FILE.LOG, l_sub_mssg);
105 --dbms_output.put_line('LOG: ' || l_sub_mssg);
106
107 l_mssg := l_sub_mssg || ' => ' || l_mssg;
108
109 /* get total message length */
110 l_mssg_length := LENGTH(l_mssg);
111
112 /* Output message in 250 maximum character lines */
113 WHILE ( l_mssg_length > 250 ) LOOP
114
115 /* get message substring */
116 l_sub_mssg := SUBSTR(l_mssg, l_begin, 250);
117
118 /* write message to log file */
119 FND_FILE.PUT_LINE(FND_FILE.LOG, l_sub_mssg);
120 --dbms_output.put_line('LOG: ' || l_mssg );
121
122 /* Increment message start position to output from */
123 l_begin := l_begin + 250;
124
125 /* Decrement message length to be output */
126 l_mssg_length := l_mssg_length - 250;
127
128 END LOOP;
129
130 /* get last remaining part of message, i.e, when
131 ** there is less than 250 characters left to be output*/
132 l_sub_mssg := SUBSTR(l_mssg, l_begin);
133 FND_FIlE.PUT_LINE(FND_FILE.LOG, l_sub_mssg);
134 --dbms_output.put_line('LOG: ' || l_mssg );
135 EXCEPTION
136 WHEN OTHERS THEN
137 RAISE;
138 END Write_Log;
139
140
141 /* (1) START: ENABLE/DISABLE TERRITORY TRIGGERS */
142 PROCEDURE alter_triggers(p_status VARCHAR2)
143 IS
144 BEGIN
145 IF G_Debug THEN
146 Write_Log(2, 'Start enabling/disabling the triggers');
147 END IF;
148
149 IF (p_status = 'DISABLE') THEN
150
151 BEGIN
152 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORIES_BIUD DISABLE';
153 EXCEPTION
154 WHEN OTHERS THEN
155 NULL;
156 END;
157
158 BEGIN
159 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORY_RSC_BIUD DISABLE';
160 EXCEPTION
161 WHEN OTHERS THEN
162 NULL;
163 END;
164
165 BEGIN
166 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORY_VALUES_BIUD DISABLE';
167 EXCEPTION
168 WHEN OTHERS THEN
169 NULL;
170 END;
171
172 BEGIN
173 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERR_QTYPE_USGS_BIUD DISABLE';
174 EXCEPTION
175 WHEN OTHERS THEN
176 NULL;
177 END;
178
179 BEGIN
180 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERR_RSC_ACCESS_BIUD DISABLE';
181 EXCEPTION
182 WHEN OTHERS THEN
183 NULL;
184 END;
185
186 ELSIF (p_status = 'ENABLE') THEN
187
188 BEGIN
189 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORIES_BIUD ENABLE';
190 EXCEPTION
191 WHEN OTHERS THEN
192 NULL;
193 END;
194
195 BEGIN
196 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORY_RSC_BIUD ENABLE';
197 EXCEPTION
198 WHEN OTHERS THEN
199 NULL;
200 END;
201
202 BEGIN
203 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORY_VALUES_BIUD ENABLE';
204 EXCEPTION
205 WHEN OTHERS THEN
206 NULL;
207 END;
208
209 BEGIN
210 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERR_QTYPE_USGS_BIUD ENABLE';
211 EXCEPTION
212 WHEN OTHERS THEN
213 NULL;
214 END;
215
216 BEGIN
217 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERR_RSC_ACCESS_BIUD ENABLE';
218 EXCEPTION
219 WHEN OTHERS THEN
220 NULL;
221 END;
222
223 END IF;
224
225 IF G_Debug THEN
226 Write_Log(2, 'Start enabling/disabling the triggers');
227 END IF;
228
229 EXCEPTION
230 WHEN OTHERS THEN
231 IF G_Debug THEN
232 Write_Log(2, 'Error in procedure alter_triggers');
233 END IF;
234 RAISE;
235 END alter_triggers;
236
237
238 /* (1) START: DELETE ALL EXISTING NAMED ACCOUNT AND GEOGRAPHY TERRITORIES */
239 PROCEDURE cleanup_na_territories ( p_mode VARCHAR2 )
240 IS
241 BEGIN
242 IF G_Debug THEN
243 Write_Log(2, 'Start deleting all the territories');
244 END IF;
245
246 /* TOTAL mode => re-generate all NA and GEO territories */
247 IF (p_mode = 'TOTAL') THEN
248
249 --DELETE territory value records
250 DELETE FROM jtf_terr_values_all jtv
251 WHERE jtv.terr_qual_id IN
252 ( SELECT jtq.terr_qual_id
253 FROM jtf_terr_qual_all jtq, jtf_terr_all jt
254 WHERE jtq.terr_id = jt.terr_id
255 AND jt.terr_group_flag = 'Y' );
256
257 --Delete Territory Qualifer records
258 DELETE FROM JTF_TERR_QUAL_ALL jtq
259 WHERE jtq.terr_id IN
260 ( SELECT jt.terr_id
261 FROM jtf_terr_all jt
262 WHERE jt.terr_group_flag = 'Y' );
263
264
265 --Delete Territory qual type usgs
266 DELETE FROM JTF_TERR_QTYPE_USGS_ALL jtqu
267 WHERE jtqu.terr_id IN
268 ( SELECT jt.terr_id
269 FROM jtf_terr_all jt
270 WHERE jt.terr_group_flag = 'Y' );
271
272
273 --Delete Territory usgs
274 DELETE FROM JTF_TERR_USGS_ALL jtu
275 WHERE jtu.terr_id IN
276 ( SELECT jt.terr_id
277 FROM jtf_terr_all jt
278 WHERE jt.terr_group_flag = 'Y' );
279
280
281 --Delete Territory Resource Access
282 DELETE FROM JTF_TERR_RSC_ACCESS_ALL jtra
283 WHERE jtra.terr_rsc_id IN
284 ( SELECT jtr.terr_rsc_id
285 FROM jtf_terr_rsc_all jtr, jtf_terr_all jt
286 WHERE jtr.terr_id = jt.terr_id
287 AND jt.terr_group_flag = 'Y' );
288
289
290 -- Delete the Territory Resource records
291 DELETE FROM JTF_TERR_RSC_ALL jtr
292 WHERE jtr.terr_id IN
293 ( SELECT jt.terr_id
294 FROM jtf_terr_all jt
295 WHERE jt.terr_group_flag = 'Y' );
296
297
298 --Delete Territory record
299 DELETE FROM JTF_TERR_ALL jt
300 WHERE jt.terr_id IN
301 ( SELECT jt.terr_id
302 FROM jtf_terr_all jt
303 WHERE jt.terr_group_flag = 'Y' );
304
305
306 END IF;
307 /* (1) END: DELETE ALL EXISTING NAMED ACCOUNT AND GEOGRAPHY TERRITORIES */
308
309 IF G_Debug THEN
310 Write_Log(2, 'Finish deleting all the territories');
311 END IF;
312
313 EXCEPTION
314 WHEN NO_DATA_FOUND THEN
315 NULL;
316 WHEN OTHERS THEN
317 IF G_Debug THEN
318 Write_Log(2, 'Error in procedure cleanup_na_territories');
319 END IF;
320 RAISE;
321 END cleanup_na_territories;
322
323 /*---------------------------------------------------------------------------------------------------
324 This procedure will delete territories corresponding to a particulat self service geography territory
325 ----------------------------------------------------------------------------------------------------*/
326 PROCEDURE delete_geo_terr(p_geo_territory_id IN NUMBER)
327 IS
328 BEGIN
329 IF G_Debug THEN
330 Write_Log(2, 'Start deleting the territories corresponding to the self-service geography territory : ' || p_geo_territory_id);
331 END IF;
332
333 --Delete Territory Values
334 DELETE FROM JTF_TERR_VALUES_ALL WHERE TERR_QUAL_ID IN
335 ( SELECT TERR_QUAL_ID
336 FROM JTF_TERR_QUAL_ALL A
337 ,JTF_TERR_ALL B
338 WHERE B.GEO_TERRITORY_ID = p_geo_territory_id
339 AND B.TERR_ID = A.TERR_ID );
340
341 --Delete Territory Qualifer records
342 DELETE FROM JTF_TERR_QUAL_ALL WHERE TERR_ID IN
343 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE GEO_TERRITORY_ID = p_geo_territory_id );
344
345 --Delete Territory qual type usgs
346 DELETE FROM JTF_TERR_QTYPE_USGS_ALL WHERE TERR_ID IN
347 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE GEO_TERRITORY_ID = p_geo_territory_id );
348
349 --Delete Territory usgs
350 DELETE FROM JTF_TERR_USGS_ALL WHERE TERR_ID IN
351 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE GEO_TERRITORY_ID = p_geo_territory_id );
352
353 --Delete Territory Resource Access
354 DELETE FROM JTF_TERR_RSC_ACCESS_ALL WHERE TERR_RSC_ID IN
355 ( SELECT TERR_RSC_ID
356 FROM JTF_TERR_RSC_ALL A
357 ,JTF_TERR_ALL B
358 WHERE B.GEO_TERRITORY_ID = p_geo_territory_id
359 AND B.TERR_ID = A.TERR_ID );
360
361 -- Delete the Territory Resource records
362 DELETE FROM JTF_TERR_RSC_ALL WHERE TERR_ID IN
363 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE GEO_TERRITORY_ID = p_geo_territory_id );
364
365 --Delete Territory records corresponding to the territory group
366 DELETE FROM JTF_TERR_ALL WHERE GEO_TERRITORY_ID = p_geo_territory_id;
367
368 IF G_Debug THEN
369 Write_Log(2, 'End deleting the territories corresponding to the self-service geography territory : ' || p_geo_territory_id);
370 END IF;
371
372 EXCEPTION
373 WHEN NO_DATA_FOUND THEN
374 NULL;
375 WHEN OTHERS THEN
376 IF G_Debug THEN
377 Write_Log(2, 'Error in procedure delete_geo_terr');
378 END IF;
379 RAISE;
380 END delete_geo_terr;
381
382
383 /*------------------------------------------------------------------------------------------
384 This procedure will delete territories corresponding to a particulat territory group account
385 -------------------------------------------------------------------------------------------*/
386 PROCEDURE delete_TGA(p_terr_grp_acct_id IN NUMBER
387 ,p_terr_group_id IN NUMBER
388 ,p_catchall_terr_id IN NUMBER
389 ,p_change_type IN VARCHAR2)
390 IS
391 BEGIN
392 IF G_Debug THEN
393 Write_Log(2, 'Start deleting the territories corresponding to the territory group account : ' || p_terr_grp_acct_id);
394 END IF;
395
396 --Delete Territory Values
397 DELETE FROM JTF_TERR_VALUES_ALL WHERE TERR_QUAL_ID IN
398 ( SELECT TERR_QUAL_ID
399 FROM JTF_TERR_QUAL_ALL A
400 ,JTF_TERR_ALL B
401 WHERE B.TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id
402 AND B.TERR_ID = A.TERR_ID );
403
404 --Delete Territory Qualifer records
405 DELETE FROM JTF_TERR_QUAL_ALL WHERE TERR_ID IN
406 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id );
407
408 --Delete Territory qual type usgs
409 DELETE FROM JTF_TERR_QTYPE_USGS_ALL WHERE TERR_ID IN
410 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id );
411
412 --Delete Territory usgs
413 DELETE FROM JTF_TERR_USGS_ALL WHERE TERR_ID IN
414 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id );
415
416 --Delete Territory Resource Access
417 DELETE FROM JTF_TERR_RSC_ACCESS_ALL WHERE TERR_RSC_ID IN
418 ( SELECT TERR_RSC_ID
419 FROM JTF_TERR_RSC_ALL A
420 ,JTF_TERR_ALL B
421 WHERE B.TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id
422 AND B.TERR_ID = A.TERR_ID );
423
424 -- Delete the Territory Resource records
425 DELETE FROM JTF_TERR_RSC_ALL WHERE TERR_ID IN
426 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id );
427
428 --Delete Territory records corresponding to the territory group
429 DELETE FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id;
430 /* if the user has deleted the TGA or update the mapping */
431 /* then delete the customer key name values from jtf_terr_values_all */
432 /* corresponding to the catch-all territory which are not present */
433 /* in jtf_tty_acct_qual_maps for the territory group */
434 /* but we do not need to do this if only sales team has been updated */
435 IF (p_change_type <> 'SALES_TEAM_UPDATE') THEN
436 DELETE FROM jtf_terr_values_all jtv
437 WHERE NOT EXISTS
438 (SELECT 1
439 FROM jtf_tty_terr_grp_accts A
440 ,jtf_tty_acct_qual_maps B
441 WHERE A.named_account_id = B.named_account_id
442 AND A.terr_group_id = p_terr_group_id
443 AND B.qual_usg_id = -1012
444 AND B.COMPARISON_OPERATOR = jtv.COMPARISON_OPERATOR
445 AND B.VALUE1_CHAR = jtv.LOW_VALUE_CHAR)
446 AND terr_qual_id =
447 (SELECT terr_qual_id FROM jtf_terr_qual_all WHERE terr_id = p_catchall_terr_id);
448 END IF;
449
450 IF G_Debug THEN
451 Write_Log(2, 'End deleting the territories corresponding to the territory group account : ' || p_terr_grp_acct_id);
452 END IF;
453
454 EXCEPTION
455 WHEN NO_DATA_FOUND THEN
456 NULL;
457 WHEN OTHERS THEN
458 IF G_Debug THEN
459 Write_Log(2, 'Error in procedure delete_TGA');
460 END IF;
461 RAISE;
462 END delete_TGA;
463
464 /*----------------------------------------------------------
465 This procedure will delete territories from the JTF_TERR...
466 tables for the specified Terr Group Account Ids.
467 ----------------------------------------------------------*/
468 PROCEDURE delete_bulk_TGA(p_terrGrpId_tbl IN jtf_terr_number_list,
469 p_grpAcctId_tbl IN jtf_terr_number_list,
470 p_change_type IN VARCHAR2,
471 x_return_status OUT NOCOPY VARCHAR2,
472 x_msg_count OUT NOCOPY NUMBER,
473 x_msg_data OUT NOCOPY VARCHAR2)
474 IS
475
476 idx integer;
477
478 BEGIN
479
480 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
481 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,
482 'jtf.plsql.JTF_TTY_GEN_TERR_PVT.delete_bulk_TGA',
483 'Start of the procedure JTF_TTY_GEN_TERR_PVT.delete_bulk_TGA');
484 END IF;
485
486 x_return_status := FND_API.G_RET_STS_SUCCESS;
487
488 IF (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
489 FND_LOG.string(FND_LOG.LEVEL_STATEMENT,
490 'jtf.plsql.JTF_TTY_GEN_TERR_PVT.delete_bulk_TGA',
491 'Deleting from JTF_TERR... tables');
492 END IF;
493
494 --Delete Territory Values
495 forall idx in p_grpAcctId_tbl.FIRST .. p_grpAcctId_tbl.LAST
496 DELETE from JTF_TERR_VALUES_ALL WHERE TERR_QUAL_ID IN
497 ( SELECT TERR_QUAL_ID
498 FROM JTF_TERR_QUAL_ALL A
499 ,JTF_TERR_ALL B
500 WHERE B.TERR_GROUP_ACCOUNT_ID = p_grpAcctId_tbl(idx)
501 AND B.TERR_ID = A.TERR_ID );
502
503 --Delete Territory Qualifer records
504 forall idx in p_grpAcctId_tbl.FIRST .. p_grpAcctId_tbl.LAST
505 DELETE from JTF_TERR_QUAL_ALL WHERE TERR_ID IN
506 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_grpAcctId_tbl(idx) );
507
508 --Delete Territory qual type usgs
509 forall idx in p_grpAcctId_tbl.FIRST .. p_grpAcctId_tbl.LAST
510 DELETE from JTF_TERR_QTYPE_USGS_ALL WHERE TERR_ID IN
511 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_grpAcctId_tbl(idx) );
512
513 --Delete Territory usgs
514 forall idx in p_grpAcctId_tbl.FIRST .. p_grpAcctId_tbl.LAST
515 DELETE from JTF_TERR_USGS_ALL WHERE TERR_ID IN
516 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_grpAcctId_tbl(idx) );
517
518 --Delete Territory Resource Access
519 forall idx in p_grpAcctId_tbl.FIRST .. p_grpAcctId_tbl.LAST
520 DELETE from JTF_TERR_RSC_ACCESS_ALL WHERE TERR_RSC_ID IN
521 ( SELECT TERR_RSC_ID
522 FROM JTF_TERR_RSC_ALL A
523 ,JTF_TERR_ALL B
524 WHERE B.TERR_GROUP_ACCOUNT_ID = p_grpAcctId_tbl(idx)
525 AND B.TERR_ID = A.TERR_ID );
526
527 -- Delete the Territory Resource records
528 forall idx in p_grpAcctId_tbl.FIRST .. p_grpAcctId_tbl.LAST
529 DELETE from JTF_TERR_RSC_ALL Where TERR_ID IN
530 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_grpAcctId_tbl(idx) );
531
532 --Delete Territory records corresponding to the territory group
533 forall idx in p_grpAcctId_tbl.FIRST .. p_grpAcctId_tbl.LAST
534 DELETE from JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_grpAcctId_tbl(idx);
535
536 /* if the user has deleted the TGA or update the mapping */
537 /* then delete the customer key name values from jtf_terr_values_all */
538 /* corresponding to the catch-all territory which are not present */
539 /* in jtf_tty_acct_qual_maps for the territory group */
540 /* but we do not need to do this if only sales team has been updated */
541
542 IF (p_change_type <> 'SALES_TEAM_UPDATE') THEN
543 forall idx in p_terrGrpId_tbl.FIRST .. p_terrGrpId_tbl.LAST
544 DELETE from jtf_terr_values_all jtv
545 WHERE NOT EXISTS
546 (SELECT 1
547 FROM jtf_tty_terr_grp_accts A
548 ,jtf_tty_acct_qual_maps B
549 WHERE A.named_account_id = B.named_account_id
550 AND A.terr_group_id = p_terrGrpId_tbl(idx)
551 AND B.qual_usg_id = -1012
552 AND B.COMPARISON_OPERATOR = jtv.COMPARISON_OPERATOR
553 AND B.VALUE1_CHAR = jtv.LOW_VALUE_CHAR)
554 AND terr_qual_id =
555 ( SELECT terr_qual_id
556 FROM jtf_terr_qual_all tqa,
557 jtf_terr_all ta
558 WHERE tqa.terr_id = ta.terr_id
559 AND ta.catch_all_flag='Y'
560 AND enabled_flag='Y'
561 AND SYSDATE BETWEEN ta.start_date_active AND NVL(ta.end_date_active, SYSDATE+1)
562 AND ta.terr_group_id = p_terrGrpId_tbl(idx)
563 );
564 END IF;
565
566 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
567 FND_LOG.string(FND_LOG.LEVEL_PROCEDURE,
568 'jtf.plsql.JTF_TTY_GEN_TERR_PVT.delete_bulk_TGA',
569 'End of the procedure JTF_TTY_GEN_TERR_PVT.delete_bulk_TGA');
570 END IF;
571
572 EXCEPTION
573 WHEN NO_DATA_FOUND THEN
574 NULL;
575 WHEN OTHERS THEN
576 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
577 x_msg_data := SQLCODE || ' : ' || SQLERRM;
578 x_msg_count := 1;
579 IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
580 FND_LOG.string(FND_LOG.LEVEL_EXCEPTION,
581 'jtf.plsql.JTF_TTY_GEN_TERR_PVT.delete_bulk_TGA.OTHERS',
582 substr(x_msg_data, 1, 4000));
583 END IF;
584 RAISE;
585 END delete_bulk_TGA;
586
587
588 /*---------------------------------------------------------------------------------------------------------
589 This procedure will delete territories corresponding to the territory group accounts that have been deleted
590 ----------------------------------------------------------------------------------------------------------*/
591 PROCEDURE process_TGA_delete
592 IS
593
594 /* Territory Group Accounts that are deleted */
595 CURSOR terr_grp_acct_delete(l_date DATE) IS
596 SELECT DISTINCT A.object_id
597 ,B.terr_group_id
598 FROM jtf_tty_named_acct_changes A
599 ,jtf_terr_all B
600 WHERE A.creation_date <= l_date
601 AND A.change_type = 'DELETE'
602 AND A.object_type = 'TGA'
603 AND A.object_id = B.terr_group_account_id
604 /* no need to process the deleted TGA if the corresponding TG has been updated */
605 AND NOT EXISTS (
606 SELECT 1
607 FROM jtf_tty_named_acct_changes F
608 WHERE F.object_type = 'TG'
609 AND F.object_id = B.terr_group_id
610 AND F.creation_date <= l_date);
611
612 l_terr_group_account_id g_terr_group_account_id_tab;
613 l_terr_group_id g_terr_group_id_tab;
614
615 l_no_of_records NUMBER;
616 BEGIN
617 IF G_Debug THEN
618 Write_Log(2, 'open the cursor terr_grp_acct_delete');
619 END IF;
620
621 -- open the cursor
622 OPEN terr_grp_acct_delete(g_cutoff_time);
623
624 -- loop till all the TGAs that have been deleted are processed
625 LOOP
626
627 IF G_Debug THEN
628 Write_Log(2, 'fetching the next set of TGAs');
629 END IF;
630
631 /* Bulk collect TGA information and process them row by row */
632 FETCH terr_grp_acct_delete BULK COLLECT INTO
633 l_terr_group_account_id
634 ,l_terr_group_id
635 LIMIT g_commit_chunk_size;
636
637 /* Get the number of rows returned by the fetch */
638 l_no_of_records := l_terr_group_account_id.COUNT;
639
640 /* process the return set if the fetch has returned at least 1 row */
641 IF (l_no_of_records > 0) THEN
642
643 FOR i IN l_terr_group_account_id.FIRST .. l_terr_group_account_id.LAST LOOP
644
645 IF G_Debug THEN
646 Write_Log(2, 'START: delete_TGA');
647 END IF;
648
649 delete_TGA(l_terr_group_account_id(i)
650 ,l_terr_group_id(i)
651 ,l_terr_group_id(i) * -1
652 ,'DELETE_TGA');
653
654 IF G_Debug THEN
655 Write_Log(2, 'END: delete_TGA');
656 Write_Log(2, 'All the territories corresponding to the territory group account ' || l_terr_group_account_id(i) ||
657 ' have been deleted successfully.');
658 END IF;
659 END LOOP;
660
661 /* trim the pl/sql tables to free up memory */
662 l_terr_group_account_id.TRIM(l_no_of_records);
663 l_terr_group_id.TRIM(l_no_of_records);
664
665 END IF;
666
667 IF G_Debug THEN
668 Write_Log(2, 'Finished process the current set of TGs');
669 END IF;
670
671 EXIT WHEN terr_grp_acct_delete%NOTFOUND;
672
673 END LOOP;
674
675 CLOSE terr_grp_acct_delete;
676
677 EXCEPTION
678 WHEN OTHERS THEN
679 IF G_Debug THEN
680 Write_Log(2, 'Error in procedure process_TGA_delete');
681 END IF;
682 IF (terr_grp_acct_delete%ISOPEN) THEN
683 CLOSE terr_grp_acct_delete;
684 END IF;
685 RAISE;
686 END process_TGA_delete;
687
688 /*----------------------------------------------------------------------------------
689 This procedure will delete territories corresponding to a particulat territory group
690 -----------------------------------------------------------------------------------*/
691 PROCEDURE delete_TG( p_terr_grp_id IN NUMBER,
692 p_terr_id IN VARCHAR2,
693 p_terr_creation_flag IN VARCHAR2)
694 IS
695 BEGIN
696 IF G_Debug THEN
697 Write_Log(2, 'Start deleting the territories for the territory group : ' || p_terr_grp_id);
698 END IF;
699
700 IF p_terr_creation_flag IS NULL THEN
701 --Delete Territory Values
702 DELETE FROM JTF_TERR_VALUES_ALL WHERE TERR_QUAL_ID IN
703 ( SELECT TERR_QUAL_ID
704 FROM JTF_TERR_QUAL_ALL A
705 ,JTF_TERR_ALL B
706 WHERE B.TERR_GROUP_ID = p_terr_grp_id
707 AND B.TERR_ID = A.TERR_ID );
708
709 --Delete Territory Qualifer records
710 DELETE FROM JTF_TERR_QUAL_ALL WHERE TERR_ID IN
711 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ID = p_terr_grp_id );
712
713 --Delete Territory qual type usgs
714 DELETE FROM JTF_TERR_QTYPE_USGS_ALL WHERE TERR_ID IN
715 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ID = p_terr_grp_id );
716
717 --Delete Territory usgs
718 DELETE FROM JTF_TERR_USGS_ALL WHERE TERR_ID IN
719 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ID = p_terr_grp_id );
720
721 --Delete Territory Resource Access
722 DELETE FROM JTF_TERR_RSC_ACCESS_ALL WHERE TERR_RSC_ID IN
723 ( SELECT TERR_RSC_ID
724 FROM JTF_TERR_RSC_ALL A
725 ,JTF_TERR_ALL B
726 WHERE B.TERR_GROUP_ID = p_terr_grp_id
727 AND B.TERR_ID = A.TERR_ID );
728
729 -- Delete the Territory Resource records
730 DELETE FROM JTF_TERR_RSC_ALL WHERE TERR_ID IN
731 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ID = p_terr_grp_id );
732
733 --Delete Territory records corresponding to the territory group
734
735 DELETE FROM JTF_TERR_ALL WHERE TERR_GROUP_ID = p_terr_grp_id;
736
737 ELSE
738 --Delete Territory Values
739 DELETE FROM JTF_TERR_VALUES_ALL WHERE TERR_QUAL_ID IN
740 ( SELECT TERR_QUAL_ID
741 FROM JTF_TERR_QUAL_ALL A
742 ,JTF_TERR_ALL B
743 WHERE B.TERR_GROUP_ID = p_terr_grp_id
744 AND B.TERR_ID = A.TERR_ID
745 AND B.TERR_ID <> p_terr_id );
746
747 --Delete Territory Qualifer records
748 DELETE FROM JTF_TERR_QUAL_ALL WHERE TERR_ID IN
749 ( SELECT TERR_ID FROM JTF_TERR_ALL
750 WHERE TERR_GROUP_ID = p_terr_grp_id
751 AND TERR_ID <> p_terr_id
752 );
753
754 --Delete Territory qual type usgs
755 DELETE FROM JTF_TERR_QTYPE_USGS_ALL WHERE TERR_ID IN
756 ( SELECT TERR_ID FROM JTF_TERR_ALL
757 WHERE TERR_GROUP_ID = p_terr_grp_id
758 );
759
760 --Delete Territory usgs
761 DELETE FROM JTF_TERR_USGS_ALL WHERE TERR_ID IN
762 ( SELECT TERR_ID FROM JTF_TERR_ALL
763 WHERE TERR_GROUP_ID = p_terr_grp_id
764 -- AND TERR_ID <> p_terr_id
765 );
766
767 --Delete Territory Resource Access
768 DELETE FROM JTF_TERR_RSC_ACCESS_ALL WHERE TERR_RSC_ID IN
769 ( SELECT TERR_RSC_ID
770 FROM JTF_TERR_RSC_ALL A
771 ,JTF_TERR_ALL B
772 WHERE B.TERR_GROUP_ID = p_terr_grp_id
773 AND B.TERR_ID = A.TERR_ID
774 );
775
776 -- Delete the Territory Resource records
777 DELETE FROM JTF_TERR_RSC_ALL WHERE TERR_ID IN
778 ( SELECT TERR_ID FROM JTF_TERR_ALL
779 WHERE TERR_GROUP_ID = p_terr_grp_id
780 );
781
782 --Delete Territory records corresponding to the territory group
783
784 DELETE FROM JTF_TERR_ALL
785 WHERE TERR_GROUP_ID = p_terr_grp_id
786 AND TERR_ID <> p_terr_id;
787 END IF;
788
789 IF G_Debug THEN
790 Write_Log(2, 'Finish deleting the territories for the territory group : ' || p_terr_grp_id);
791 END IF;
792 COMMIT;
793 EXCEPTION
794 WHEN NO_DATA_FOUND THEN
795 NULL;
796 WHEN OTHERS THEN
797 IF G_Debug THEN
798 Write_Log(2, 'delete_TG : Error in procedure delete_TG');
799 END IF;
800 RAISE;
801 END delete_TG;
802
803 /*-------------------------------------------------------------------------------------------------
804 This procedure will delete territories corresponding to the territory groups that have been deleted
805 --------------------------------------------------------------------------------------------------*/
806 PROCEDURE process_TG_delete
807 IS
808
809 /* Territory Groups that are deleted */
810 CURSOR terr_grp_delete(l_date DATE) IS
811 /* Get the territory groups that have been physically deleted */
812 SELECT A.object_id
813 FROM jtf_tty_named_acct_changes A
814 WHERE A.creation_date <= l_date
815 AND A.change_type = 'DELETE'
816 AND A.object_type = 'TG'
817 UNION
818 /* Get the territory groups which has expired as end_date_active < sysdate */
819 SELECT DISTINCT A.terr_group_id
820 FROM jtf_terr_all A
821 WHERE A.terr_group_flag = 'Y'
822 AND A.end_date_active < l_date;
823
824 TYPE l_object_id_tab IS TABLE OF jtf_tty_named_acct_changes.object_id%TYPE;
825
826 l_object_id l_object_id_tab;
827 l_no_of_records NUMBER;
828 BEGIN
829 IF G_Debug THEN
830 Write_Log(2, 'Open the cursor terr_grp_delete');
831 END IF;
832
833 -- open the cursor
834 OPEN terr_grp_delete(g_cutoff_time);
835
836 -- loop till all the TGs that have been deleted are processed
837 LOOP
838
839 IF G_Debug THEN
840 Write_Log(2, 'fetching the next set of TGs');
841 END IF;
842
843 /* Bulk collect TG information and process them row by row */
844 FETCH terr_grp_delete BULK COLLECT INTO
845 l_object_id
846 LIMIT g_commit_chunk_size;
847
848 /* Get the number of rows returned by the fetch */
849 l_no_of_records := l_object_id.COUNT;
850
851 /* process the return set if the fetch has returned at least 1 row */
852 IF (l_no_of_records > 0) THEN
853
854 FOR i IN l_object_id.FIRST .. l_object_id.LAST LOOP
855
856 IF G_Debug THEN
857 Write_Log(2, 'START: delete_TG');
858 END IF;
859
860 delete_TG(l_object_id(i), NULL, NULL);
861
862 IF G_Debug THEN
863 Write_Log(2, 'END: delete_TG');
864 Write_Log(2, 'All the territories corresponding to the territory group ' || l_object_id(i) ||
865 ' have been deleted successfully.');
866 END IF;
867 END LOOP;
868
869 /* trim the pl/sql tables to free up memory */
870 l_object_id.TRIM(l_no_of_records);
871
872 END IF;
873
874 IF G_Debug THEN
875 Write_Log(2, 'Finished process the current set of TGs');
876 END IF;
877
878 EXIT WHEN terr_grp_delete%NOTFOUND;
879
880 END LOOP;
881
882 CLOSE terr_grp_delete;
883
884 EXCEPTION
885 WHEN OTHERS THEN
886 IF G_Debug THEN
887 Write_Log(2, 'Error in procedure process_TG_delete');
888 END IF;
889 IF (terr_grp_delete%ISOPEN) THEN
890 CLOSE terr_grp_delete;
891 END IF;
892 RAISE;
893 END process_TG_delete;
894
895 /*-------------------------------------------------------------------------------------------------
896 This procedure will create Geography and Overlay Territory for a self-service geography territory .
897 --------------------------------------------------------------------------------------------------*/
898 PROCEDURE create_geo_terr_for_GT(p_geo_territory_id IN g_geo_territory_id_tab
899 ,p_geo_terr_name IN g_geo_terr_name_tab
900 ,p_terr_group_id IN g_terr_group_id_tab
901 ,p_rank IN g_rank_tab
902 ,p_active_from_date IN g_active_from_date_tab
903 ,p_active_to_date IN g_active_to_date_tab
904 ,p_created_by IN g_created_by_tab
905 ,p_creation_date IN g_creation_date_tab
906 ,p_last_updated_by IN g_last_updated_by_tab
907 ,p_last_update_date IN g_last_update_date_tab
908 ,p_last_update_login IN g_last_update_login_tab
909 ,p_org_id IN g_org_id_tab
910 ,p_terr_id IN g_terr_id_tab
911 ,p_overlay_top IN g_terr_id_tab)
912 IS
913
914 l_terr_all_rec JTF_TERRITORY_PVT.terr_all_rec_type;
915 l_terr_usgs_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
916 l_terr_qualtypeusgs_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
917 l_terr_qual_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
918 l_terr_values_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
919 l_TerrRsc_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type;
920 l_TerrRsc_Access_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
921
922 l_TerrRsc_empty_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type;
923 l_TerrRsc_Access_empty_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
924 l_terr_usgs_empty_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
925 l_terr_qualtypeusgs_empty_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
926 l_terr_qual_empty_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
927 l_terr_values_empty_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
928
929 TYPE role_typ IS RECORD(
930 grp_role_id NUMBER:=FND_API.G_MISS_NUM
931 );
932
933 TYPE grp_role_tbl_type IS TABLE OF role_typ
934 INDEX BY BINARY_INTEGER;
935
936 l_overnon_role_tbl grp_role_tbl_type;
937 l_overnon_role_empty_tbl grp_role_tbl_type;
938
939 i NUMBER;
940 j NUMBER;
941 k NUMBER;
942 a NUMBER;
943 x NUMBER;
944
945 l_terr_qual_id NUMBER;
946 l_terr_usg_id NUMBER;
947 l_terr_qtype_usg_id NUMBER;
948 l_terr_rsc_id NUMBER;
949 l_terr_rsc_access_id NUMBER;
950 l_api_version_number CONSTANT NUMBER := 1.0;
951 l_init_msg_list VARCHAR2(1);
952 l_commit VARCHAR2(1);
953
954 l_ovnon_flag VARCHAR2(1):='N';
955 l_overlay_top NUMBER;
956 l_overlay NUMBER;
957 l_role_counter NUMBER := 0;
958 l_id NUMBER;
959 l_nacat NUMBER;
960 l_geo_count NUMBER;
961
962 l_pi_count NUMBER := 0;
963 l_prev_qual_usg_id NUMBER;
964 l_na_count NUMBER;
965
966 x_terr_usgs_out_tbl JTF_TERRITORY_PVT.terr_usgs_out_tbl_type;
967 x_terr_qualtypeusgs_out_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_out_tbl_type;
968 x_terr_qual_out_tbl JTF_TERRITORY_PVT.terr_qual_out_tbl_type;
969 x_terr_values_out_tbl JTF_TERRITORY_PVT.terr_values_out_tbl_type;
970 x_TerrRsc_Out_Tbl Jtf_Territory_Resource_Pvt.TerrResource_out_tbl_type;
971 x_TerrRsc_Access_Out_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_out_tbl_type;
972
973 x_terr_id NUMBER;
974 x_msg_count NUMBER;
975 x_msg_data VARCHAR2(2000);
976 x_return_status VARCHAR2(1);
977
978
979 /* get all the geographies for a given territory group id */
980 CURSOR geo_territories( l_terr_group_id NUMBER) IS
981 SELECT gterr.geo_territory_id
982 , gterr.geo_terr_name
983 FROM jtf_tty_geo_terr gterr
984 WHERE gterr.terr_group_id = l_terr_group_id;
985
986 /** Transaction Types for a NON-OVERLAY territory are
987 ** determined by all salesteam members on this geography territories
988 ** having Roles without Product Interests defined
989 ** so there is no Overlay Territories to assign
990 ** Leads and Opportunities. If all Roles have Product Interests
991 ** then only ACCOUNT transaction type should
992 ** be used in Non-Overlay Named Account definition
993 */
994 CURSOR get_NON_OVLY_geo_trans(l_geo_territory_id NUMBER) IS
995 SELECT ra.access_type
996 FROM
997 JTF_TTY_GEO_TERR_RSC grsc
998 , jtf_tty_geo_terr gtr
999 , jtf_tty_terr_grp_roles tgr
1000 , jtf_tty_role_access ra
1001 WHERE grsc.GEO_TERRITORY_ID = l_geo_territory_id
1002 AND gtr.geo_territory_id = grsc.geo_territory_id
1003 AND grsc.rsc_role_code = tgr.role_code
1004 AND tgr.terr_group_id = gtr.terr_group_id
1005 AND ra.terr_group_role_id = tgr.terr_group_role_id
1006 AND ra.access_type IN ('ACCOUNT')
1007 UNION
1008 SELECT ra.access_type
1009 FROM
1010 JTF_TTY_GEO_TERR_RSC grsc
1011 , jtf_tty_geo_terr gtr
1012 , jtf_tty_terr_grp_roles tgr
1013 , jtf_tty_role_access ra
1014 WHERE grsc.GEO_TERRITORY_ID = l_geo_territory_id
1015 AND gtr.geo_territory_id = grsc.geo_territory_id
1016 AND grsc.rsc_role_code = tgr.role_code
1017 AND tgr.terr_group_id = gtr.terr_group_id
1018 AND ra.terr_group_role_id = tgr.terr_group_role_id
1019 AND NOT EXISTS (
1020 SELECT NULL
1021 FROM jtf_tty_role_prod_int rpi
1022 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id );
1023
1024 /* same sql used in geography download to Excel
1025 This query will find out all the postal codes
1026 for a given geography territoy.
1027 Also if the geography territory is for a territory
1028 group it will find out the postal codes
1029 looking at country, state, city or posta code
1030 associated with the territory group */
1031 CURSOR geo_values(l_geo_territory_id NUMBER) IS
1032 SELECT -1007 qual_usg_id
1033 , '=' comparison_operator
1034 , main.postal_code value1_char
1035 , main.geo_territory_id
1036 FROM (
1037 /* postal code */
1038 SELECT g.postal_code postal_code
1039 ,g.geo_id geo_id
1040 ,terr.geo_territory_id geo_territory_id
1041 FROM jtf_tty_geo_grp_values grpv,
1042 jtf_tty_terr_groups tg,
1043 jtf_tty_geo_terr terr,
1044 jtf_tty_geographies g --postal_code level
1045 WHERE terr.terr_group_id = tg.terr_group_id
1046 AND terr.terr_group_id = grpv.terr_group_id
1047 AND terr.owner_resource_id < 0
1048 AND terr.parent_geo_terr_id < 0 -- default terr
1049 AND grpv.geo_type = 'POSTAL_CODE'
1050 AND grpv.comparison_operator = '='
1051 AND g.geo_id = grpv.geo_id_from
1052 AND g.geo_type = 'POSTAL_CODE'
1053 UNION
1054 /* postal code range */
1055 SELECT g.postal_code postal_code
1056 ,g.geo_id geo_id
1057 ,terr.geo_territory_id geo_territory_id
1058 FROM jtf_tty_geo_grp_values grpv,
1059 jtf_tty_terr_groups tg,
1060 jtf_tty_geo_terr terr,
1061 jtf_tty_geographies g, --postal_code level
1062 jtf_tty_geographies g1,
1063 jtf_tty_geographies g2
1064 WHERE terr.terr_group_id = tg.terr_group_id
1065 AND terr.terr_group_id = grpv.terr_group_id
1066 AND terr.owner_resource_id < 0
1067 AND terr.parent_geo_terr_id < 0 -- default terr
1068 AND grpv.geo_type = 'POSTAL_CODE'
1069 AND grpv.comparison_operator = 'BETWEEN'
1070 AND g1.geo_id = grpv.geo_id_from
1071 AND g2.geo_id = grpv.geo_id_to
1072 AND g.geo_name BETWEEN g1.geo_name AND g2.geo_name
1073 UNION
1074 SELECT g.postal_code postal_code
1075 ,g.geo_id geo_id
1076 ,terr.geo_territory_id geo_territory_id
1077 FROM jtf_tty_geo_grp_values grpv,
1078 jtf_tty_terr_groups tg,
1079 jtf_tty_geo_terr terr,
1080 jtf_tty_geographies g,
1081 jtf_tty_geographies g1
1082 WHERE terr.terr_group_id = tg.terr_group_id
1083 AND terr.terr_group_id = grpv.terr_group_id
1084 AND terr.owner_resource_id < 0
1085 AND terr.parent_geo_terr_id < 0 -- default terr
1086 AND (
1087 (
1088 grpv.geo_type = 'STATE'
1089 AND g1.geo_id = grpv.geo_id_from
1090 AND g.STATE_CODE = g1.state_Code
1091 AND g.country_code = g1.country_Code
1092 AND g.geo_type = 'POSTAL_CODE'
1093 )
1094 OR
1095 (
1096 grpv.geo_type = 'CITY'
1097 AND g.geo_type = 'POSTAL_CODE'
1098 AND g.country_code = g1.country_code
1099 AND (
1100 (g.state_code = g1.state_code AND g1.province_code IS NULL)
1101 OR
1102 (g1.province_code = g.province_code AND g1.state_code IS NULL)
1103 )
1104 AND (g1.county_code IS NULL OR g.county_code = g1.county_code)
1105 AND g.city_code = g1.city_code
1106 AND grpv.geo_id_from = g1.geo_id
1107 )
1108 OR
1109 (
1110 grpv.geo_type = 'COUNTRY'
1111 AND grpv.geo_id_from = g1.geo_id
1112 AND g.geo_type = 'POSTAL_CODE'
1113 AND g.country_code = g1.country_code
1114 )
1115 OR
1116 (
1117 grpv.geo_type = 'PROVINCE'
1118 AND grpv.geo_id_from = g1.geo_id
1119 AND g.geo_type = 'POSTAL_CODE'
1120 AND g.country_code = g1.country_code
1121 AND g.province_code = g1.province_code
1122 )
1123 )
1124 UNION
1125 SELECT g.postal_code postal_code
1126 ,g.geo_id geo_id
1127 ,terr.geo_territory_id geo_territory_id
1128 FROM jtf_tty_terr_groups tg,
1129 jtf_tty_geo_terr terr,
1130 jtf_tty_geographies g,
1131 jtf_tty_geo_terr_values tv
1132 WHERE terr.terr_group_id = tg.terr_group_id
1133 AND terr.owner_resource_id >= 0
1134 AND terr.parent_geo_terr_id >= 0 -- not default terr
1135 AND tv.geo_territory_id = terr.geo_territory_id
1136 AND g.geo_id = tv.geo_id
1137 ) main
1138 WHERE main.geo_id NOT IN -- the terr the user owners
1139 (
1140 SELECT tv.geo_id geo_id
1141 FROM jtf_tty_geo_terr terr,
1142 jtf_tty_geo_terr_values tv
1143 WHERE tv.geo_territory_id = terr.geo_territory_id
1144 AND main.geo_territory_id = terr.parent_geo_terr_id
1145 )
1146 AND geo_territory_id = l_geo_territory_id;
1147
1148 /* Access Types for a particular Role within a Territory Group */
1149 CURSOR NON_OVLY_role_access( lp_terr_group_id NUMBER
1150 , lp_role VARCHAR2) IS
1151 SELECT DISTINCT a.access_type
1152 FROM jtf_tty_role_access a
1153 , jtf_tty_terr_grp_roles b
1154 WHERE a.terr_group_role_id = b.terr_group_role_id
1155 AND b.terr_group_id = lp_terr_group_id
1156 AND b.role_code = lp_role
1157 AND NOT EXISTS (
1158 /* Product Interest does not exist for this role */
1159 SELECT NULL
1160 FROM jtf_tty_role_prod_int rpi
1161 WHERE rpi.terr_group_role_id = B.TERR_GROUP_ROLE_ID )
1162 ORDER BY a.access_type ;
1163
1164 /* Roles WITHOUT a Product Iterest defined */
1165 CURSOR role_interest_nonpi(l_terr_group_id NUMBER) IS
1166 SELECT b.role_code role_code
1167 --,a.interest_type_id
1168 ,b.terr_group_id
1169 FROM jtf_tty_role_prod_int a
1170 , jtf_tty_terr_grp_roles b
1171 WHERE a.terr_group_role_id(+) = b.terr_group_role_id
1172 AND b.terr_group_id = l_terr_group_id
1173 AND a.terr_group_role_id IS NULL
1174 ORDER BY b.role_code;
1175
1176 CURSOR terr_resource (l_geo_territory_id NUMBER,l_role VARCHAR2) IS
1177 SELECT DISTINCT a.resource_id
1178 , a.rsc_group_id
1179 , NVL(a.rsc_resource_type,'RS_EMPLOYEE') rsc_resource_type
1180 FROM jtf_tty_geo_terr_rsc a
1181 , jtf_tty_geo_terr b
1182 WHERE a.geo_territory_id = b.geo_territory_id
1183 AND b.geo_territory_id = l_geo_territory_id
1184 AND a.rsc_role_code = l_role;
1185
1186 /* Get Top-Level Parent Territory details */
1187 CURSOR topterr(l_terr NUMBER) IS
1188 SELECT name
1189 , description
1190 , rank
1191 , parent_territory_id
1192 , terr_id
1193 FROM jtf_terr_all
1194 WHERE terr_id = l_terr;
1195
1196 /* get Qualifiers used in a territory */
1197 CURSOR csr_get_qual( lp_terr_id NUMBER) IS
1198 SELECT jtq.terr_qual_id
1199 , jtq.qual_usg_id
1200 FROM jtf_terr_qual_all jtq
1201 WHERE jtq.terr_id = lp_terr_id;
1202
1203 /* get Values used in a territory qualifier */
1204 CURSOR csr_get_qual_val ( lp_terr_qual_id NUMBER ) IS
1205 SELECT jtv.TERR_VALUE_ID
1206 , jtv.INCLUDE_FLAG
1207 , jtv.COMPARISON_OPERATOR
1208 , jtv.LOW_VALUE_CHAR
1209 , jtv.HIGH_VALUE_CHAR
1210 , jtv.LOW_VALUE_NUMBER
1211 , jtv.HIGH_VALUE_NUMBER
1212 , jtv.VALUE_SET
1213 , jtv.INTEREST_TYPE_ID
1214 , jtv.PRIMARY_INTEREST_CODE_ID
1215 , jtv.SECONDARY_INTEREST_CODE_ID
1216 , jtv.CURRENCY_CODE
1217 , jtv.ORG_ID
1218 , jtv.ID_USED_FLAG
1219 , jtv.LOW_VALUE_CHAR_ID
1220 FROM jtf_terr_values_all jtv
1221 WHERE jtv.terr_qual_id = lp_terr_qual_id;
1222
1223 /* get the geographies
1224 ** used for OVERLAY territory creation */
1225 CURSOR get_OVLY_geographies(LP_terr_group_id NUMBER) IS
1226 SELECT gterr.geo_territory_id
1227 , gterr.geo_terr_name
1228 FROM jtf_tty_geo_terr gterr
1229 WHERE gterr.terr_group_id = lp_terr_group_id
1230 AND EXISTS (
1231 /* Salesperson, with Role that has a Product Interest defined, exists for this Named Account */
1232 SELECT NULL
1233 FROM jtf_tty_geo_terr_rsc grsc
1234 , jtf_tty_role_prod_int rpi
1235 , jtf_tty_terr_grp_roles tgr
1236 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
1237 AND tgr.terr_group_id = gterr.TERR_GROUP_ID
1238 AND tgr.role_code = grsc.rsc_role_code
1239 AND grsc.geo_territory_id = gterr.geo_territory_id );
1240
1241
1242 /* Roles WITH a Product Iterest defined */
1243 CURSOR role_pi( lp_terr_group_id NUMBER
1244 , lp_geo_territory_id NUMBER) IS
1245 SELECT DISTINCT
1246 b.role_code role_code
1247 , r.role_name role_name
1248 FROM jtf_rs_roles_vl r
1249 , jtf_tty_role_prod_int a
1250 , jtf_tty_terr_grp_roles b
1251 WHERE r.role_code = b.role_code
1252 AND a.terr_group_role_id = b.terr_group_role_id
1253 AND b.terr_group_id = lp_terr_group_id
1254 AND EXISTS (
1255 /* Named Account exists with Salesperson with this role */
1256 SELECT NULL
1257 FROM jtf_tty_geo_terr_rsc grsc, jtf_tty_geo_terr gterr
1258 WHERE gterr.geo_territory_id = grsc.geo_territory_id
1259 AND grsc.geo_territory_id = lp_geo_territory_id
1260 AND gterr.terr_group_id = b.terr_group_id
1261 AND grsc.rsc_role_code = b.role_code );
1262
1263
1264 /* Access Types for a particular Role within a Territory Group */
1265 CURSOR role_access(l_terr_group_id NUMBER,l_role VARCHAR2) IS
1266 SELECT DISTINCT a.access_type
1267 FROM jtf_tty_role_access a
1268 , jtf_tty_terr_grp_roles b
1269 WHERE a.terr_group_role_id = b.terr_group_role_id
1270 AND b.terr_group_id = l_terr_group_id
1271 AND b.role_code = l_role
1272 ORDER BY a.access_type ;
1273
1274 /* Product Interest for a Role */
1275 CURSOR role_pi_interest(l_terr_group_id NUMBER,l_role VARCHAR2) IS
1276 SELECT a.interest_type_id
1277 ,a.product_category_id
1278 ,a.product_category_set_id
1279 FROM jtf_tty_role_prod_int a
1280 , jtf_tty_terr_grp_roles b
1281 WHERE a.terr_group_role_id = b.terr_group_role_id
1282 AND b.terr_group_id = l_terr_group_id
1283 AND b.role_code = l_role;
1284
1285 /* get those roles for a territory Group that
1286 ** do not have Product Interest defined */
1287 CURSOR role_no_pi(l_terr_group_id NUMBER) IS
1288 SELECT DISTINCT b.role_code
1289 FROM jtf_tty_role_access a
1290 , jtf_tty_terr_grp_roles b
1291 , jtf_tty_role_prod_int c
1292 WHERE a.terr_group_role_id = b.terr_group_role_id
1293 AND b.terr_group_id = l_terr_group_id
1294 AND a.access_type = 'ACCOUNT'
1295 AND c.terr_group_role_id = b.terr_group_role_id
1296 AND NOT EXISTS ( SELECT 1
1297 FROM jtf_tty_role_prod_int e
1298 , jtf_tty_terr_grp_roles d
1299 WHERE e.terr_group_role_id (+) = d.terr_group_role_id
1300 AND d.terr_group_id = b.terr_group_id
1301 AND d.role_code = b.role_code
1302 AND e.interest_type_id IS NULL);
1303
1304
1305 BEGIN
1306 FOR x IN p_geo_territory_id.FIRST .. p_geo_territory_id.LAST LOOP
1307
1308 -- delete the territories corresponding to the TGA before creating the new ones
1309 delete_geo_terr(p_geo_territory_id(x));
1310
1311 IF G_Debug THEN
1312 write_log(2, '');
1313 write_log(2, '----------------------------------------------------------');
1314 write_log(2, 'BEGIN: Territory Creation for SS Geography territory : ' || p_geo_territory_id(x));
1315 END IF;
1316
1317 /* reset these processing values for the Territory Group */
1318 l_ovnon_flag := 'N';
1319 l_overnon_role_tbl := l_overnon_role_empty_tbl;
1320
1321 /** Roles with No Product Interest */
1322 i:=0;
1323 FOR overlayandnon IN role_no_pi(p_terr_group_id(x)) LOOP
1324
1325 l_ovnon_flag:='Y';
1326 i :=i +1;
1327
1328 SELECT JTF_TTY_TERR_GRP_ROLES_S.NEXTVAL
1329 INTO l_id
1330 FROM DUAL;
1331
1332 l_overnon_role_tbl(i).grp_role_id:= l_id;
1333
1334 INSERT INTO JTF_TTY_TERR_GRP_ROLES(
1335 TERR_GROUP_ROLE_ID
1336 , OBJECT_VERSION_NUMBER
1337 , TERR_GROUP_ID
1338 , ROLE_CODE
1339 , CREATED_BY
1340 , CREATION_DATE
1341 , LAST_UPDATED_BY
1342 , LAST_UPDATE_DATE
1343 , LAST_UPDATE_LOGIN)
1344 VALUES(
1345 l_overnon_role_tbl(i).grp_role_id
1346 , 1
1347 , p_terr_group_id(x)
1348 , overlayandnon.role_code
1349 , G_USER_ID
1350 , SYSDATE
1351 , G_USER_ID
1352 , SYSDATE
1353 , G_LOGIN_ID);
1354
1355 INSERT INTO JTF_TTY_ROLE_ACCESS(
1356 TERR_GROUP_ROLE_ACCESS_ID
1357 , OBJECT_VERSION_NUMBER
1358 , TERR_GROUP_ROLE_ID
1359 , ACCESS_TYPE
1360 , CREATED_BY
1361 , CREATION_DATE
1362 , LAST_UPDATED_BY
1363 , LAST_UPDATE_DATE
1364 , LAST_UPDATE_LOGIN)
1365 VALUES(
1366 JTF_TTY_ROLE_ACCESS_S.NEXTVAL
1367 , 1
1368 , l_overnon_role_tbl(i).grp_role_id
1369 , 'ACCOUNT'
1370 , G_USER_ID
1371 , SYSDATE
1372 , G_USER_ID
1373 , SYSDATE
1374 , G_LOGIN_ID);
1375
1376 END LOOP; /* for overlayandnon in role_no_pi */
1377
1378
1379 /*********************************************************************/
1380 /*********************************************************************/
1381 /************** NON-OVERLAY TERRITORY CREATION ***********************/
1382 /*********************************************************************/
1383 /*********************************************************************/
1384
1385 /****************************************************************/
1386 /* (4) START: CREATE Territories for geo territory */
1387 /****************************************************************/
1388
1389 /* Check to see if the self service territory has at least one geography assigend to it */
1390 /* or it must be the default geography territory */
1391 BEGIN
1392 SELECT 1
1393 INTO l_geo_count
1394 FROM jtf_tty_geo_terr gterr
1395 WHERE gterr.geo_territory_id = p_geo_territory_id(x)
1396 AND ( gterr.parent_geo_terr_id < 0
1397 OR EXISTS (
1398 SELECT 1
1399 FROM jtf_tty_geo_terr_values gtval
1400 WHERE gterr.geo_territory_id = gtval.geo_territory_id));
1401 EXCEPTION
1402 WHEN NO_DATA_FOUND THEN
1403 l_geo_count := 0;
1404 END;
1405
1406 IF (l_geo_count > 0) THEN
1407
1408 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
1409 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
1410 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
1411 l_terr_values_tbl:=l_terr_values_empty_tbl;
1412 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
1413 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
1414
1415 l_terr_all_rec.terr_id := NULL;
1416 l_terr_all_rec.LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1417 l_terr_all_rec.LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1418 l_terr_all_rec.CREATION_DATE := p_CREATION_DATE(x);
1419 l_terr_all_rec.CREATED_BY := p_CREATED_BY(x);
1420 l_terr_all_rec.LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1421 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
1422 l_terr_all_rec.NAME := p_geo_terr_name(x) || ' ' || p_geo_territory_id(x);
1423 l_terr_all_rec.start_date_active := p_active_from_date(x);
1424 l_terr_all_rec.end_date_active := p_active_to_date(x);
1425 l_terr_all_rec.PARENT_TERRITORY_ID := p_terr_id(x);
1426 l_terr_all_rec.RANK := p_RANK(x) + 10;
1427 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
1428 l_terr_all_rec.TEMPLATE_FLAG := 'N';
1429 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
1430 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
1431 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
1432 l_terr_all_rec.DESCRIPTION := p_geo_terr_name(x);
1433 l_terr_all_rec.UPDATE_FLAG := 'N';
1434 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
1435 l_terr_all_rec.ORG_ID := p_org_id(x);
1436 l_terr_all_rec.NUM_WINNERS := NULL ;
1437
1438 /* Oracle Sales and Telesales Usage */
1439 SELECT JTF_TERR_USGS_S.NEXTVAL
1440 INTO l_terr_usg_id
1441 FROM DUAL;
1442
1443 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
1444 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1445 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1446 l_terr_usgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
1447 l_terr_usgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
1448 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1449 l_terr_usgs_tbl(1).TERR_ID := NULL;
1450 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
1451 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
1452
1453 i:=0;
1454
1455 /* BEGIN: For each Access Type defined for the Territory Group */
1456
1457 FOR acctype IN get_NON_OVLY_geo_trans( p_geo_territory_id(x) ) LOOP
1458
1459 i:=i+1;
1460
1461 /* ACCOUNT TRANSACTION TYPE */
1462
1463 IF acctype.access_type='ACCOUNT' THEN
1464
1465 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
1466 INTO l_terr_qtype_usg_id
1467 FROM DUAL;
1468
1469 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
1470 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1471 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1472 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
1473 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
1474 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1475 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
1476 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1001;
1477 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
1478
1479 /* LEAD TRANSACTION TYPE */
1480 ELSIF acctype.access_type='LEAD' THEN
1481
1482 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
1483 INTO l_terr_qtype_usg_id
1484 FROM DUAL;
1485
1486 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
1487 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1488 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1489 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
1490 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
1491 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1492 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
1493 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
1494 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
1495
1496 /* OPPORTUNITY TRANSACTION TYPE */
1497 ELSIF acctype.access_type='OPPORTUNITY' THEN
1498
1499 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
1500 INTO l_terr_qtype_usg_id
1501 FROM DUAL;
1502
1503 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
1504 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1505 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1506 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
1507 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
1508 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1509 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
1510 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1003;
1511 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
1512
1513 END IF;
1514
1515 END LOOP; /* end for acctype in get_NON_OVLY_geo_trans */
1516
1517 /*
1518 ** get Postal Code Mapping rules, to use as territory definition qualifier values
1519 */
1520
1521 j := 0;
1522 K := 0;
1523
1524 l_prev_qual_usg_id:=1;
1525
1526 FOR gval IN geo_values( p_geo_territory_id(x) ) LOOP
1527
1528 IF l_prev_qual_usg_id <> gval.qual_usg_id THEN
1529
1530 j:=j+1;
1531
1532 SELECT JTF_TERR_QUAL_S.NEXTVAL
1533 INTO l_terr_qual_id
1534 FROM DUAL;
1535
1536 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
1537 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1538 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1539 l_terr_qual_tbl(j).CREATION_DATE := p_CREATION_DATE(x);
1540 l_terr_qual_tbl(j).CREATED_BY := p_CREATED_BY(x);
1541 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1542 l_terr_qual_tbl(j).TERR_ID := NULL;
1543 l_terr_qual_tbl(j).QUAL_USG_ID := gval.qual_usg_id;
1544 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
1545 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
1546 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
1547 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
1548 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
1549 l_prev_qual_usg_id := gval.qual_usg_id;
1550
1551 END IF;
1552
1553 k:=k+1;
1554
1555 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
1556 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_UPDATED_BY(x);
1557 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_UPDATE_DATE(x);
1558 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
1559 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
1560 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_UPDATE_LOGIN(x);
1561 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
1562 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
1563 l_terr_values_tbl(k).COMPARISON_OPERATOR := gval.COMPARISON_OPERATOR;
1564 l_terr_values_tbl(k).LOW_VALUE_CHAR := gval.value1_char;
1565 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
1566 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
1567 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
1568 l_terr_values_tbl(k).VALUE_SET := NULL;
1569 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
1570 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
1571 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
1572 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
1573 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
1574 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
1575 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
1576 l_terr_values_tbl(k).qualifier_tbl_index := j;
1577
1578 END LOOP; /* end FOR gval IN geo_values */
1579
1580 l_init_msg_list := FND_API.G_TRUE;
1581
1582 IF l_prev_qual_usg_id <> 1 THEN -- geography territory values are there if this condition is true
1583 JTF_TERRITORY_PVT.create_territory (
1584 p_api_version_number => l_api_version_number,
1585 p_init_msg_list => l_init_msg_list,
1586 p_commit => l_commit,
1587 p_validation_level => FND_API.g_valid_level_NONE,
1588 x_return_status => x_return_status,
1589 x_msg_count => x_msg_count,
1590 x_msg_data => x_msg_data,
1591 p_terr_all_rec => l_terr_all_rec,
1592 p_terr_usgs_tbl => l_terr_usgs_tbl,
1593 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
1594 p_terr_qual_tbl => l_terr_qual_tbl,
1595 p_terr_values_tbl => l_terr_values_tbl,
1596 x_terr_id => x_terr_id,
1597 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
1598 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
1599 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
1600 x_terr_values_out_tbl => x_terr_values_out_tbl
1601
1602 );
1603
1604 /* BEGIN: Successful Territory creation? */
1605 IF x_return_status = 'S' THEN
1606
1607 UPDATE JTF_TERR_ALL
1608 SET TERR_GROUP_FLAG = 'Y'
1609 , TERR_GROUP_ID = p_terr_group_id(x)
1610 , CATCH_ALL_FLAG = 'N'
1611 , GEO_TERR_FLAG = 'Y'
1612 , GEO_TERRITORY_ID = p_geo_territory_id(x)
1613 WHERE terr_id = x_terr_id;
1614
1615 l_init_msg_list :=FND_API.G_TRUE;
1616 i := 0;
1617 a := 0;
1618
1619 FOR tran_type IN role_interest_nonpi(p_Terr_gROUP_ID(x)) LOOP
1620
1621 FOR rsc IN terr_resource(p_geo_territory_id(x),tran_type.role_code) LOOP
1622
1623 i := i+1;
1624
1625 SELECT JTF_TERR_RSC_S.NEXTVAL
1626 INTO l_terr_rsc_id
1627 FROM DUAL;
1628
1629 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
1630 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
1631 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
1632 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
1633 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
1634 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
1635 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
1636 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
1637 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
1638 l_TerrRsc_Tbl(i).ROLE := tran_type.role_code;
1639 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
1640 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
1641 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
1642 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
1643 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
1644 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
1645
1646 FOR rsc_acc IN NON_OVLY_role_access(p_terr_group_id(x), tran_type.role_code) LOOP
1647 a := a+1;
1648
1649 /* ACCOUNT ACCESS TYPE */
1650 IF (rsc_acc.access_type= 'ACCOUNT') THEN
1651
1652 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
1653 INTO l_terr_rsc_access_id
1654 FROM DUAL;
1655
1656 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
1657 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
1658 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
1659 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
1660 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
1661 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
1662 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
1663 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'ACCOUNT';
1664 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
1665 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
1666
1667 /* OPPORTUNITY ACCESS TYPE */
1668 ELSIF rsc_acc.access_type= 'OPPORTUNITY' THEN
1669
1670 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
1671 INTO l_terr_rsc_access_id
1672 FROM DUAL;
1673
1674 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
1675 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
1676 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
1677 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
1678 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
1679 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
1680 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
1681 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
1682 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
1683 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
1684
1685 /* LEAD ACCESS TYPE */
1686 ELSIF rsc_acc.access_type= 'LEAD' THEN
1687
1688 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
1689 INTO l_terr_rsc_access_id
1690 FROM DUAL;
1691
1692 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
1693 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
1694 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
1695 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
1696 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
1697 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
1698 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
1699 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
1700 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
1701 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
1702 END IF;
1703 END LOOP; /* FOR rsc_acc in NON_OVLY_role_access */
1704
1705 END LOOP; /* FOR rsc in resource_grp */
1706
1707 END LOOP;/* FOR tran_type in role_interest_nonpi */
1708
1709 l_init_msg_list :=FND_API.G_TRUE;
1710
1711 Jtf_Territory_Resource_Pvt.create_terrresource (
1712 p_api_version_number => l_Api_Version_Number,
1713 p_init_msg_list => l_Init_Msg_List,
1714 p_commit => l_Commit,
1715 p_validation_level => FND_API.g_valid_level_NONE,
1716 x_return_status => x_Return_Status,
1717 x_msg_count => x_Msg_Count,
1718 x_msg_data => x_msg_data,
1719 p_terrrsc_tbl => l_TerrRsc_tbl,
1720 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
1721 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
1722 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
1723 );
1724
1725 IF x_Return_Status='S' THEN
1726 IF G_Debug THEN
1727 write_log(2,'Resource created for Geo territory # ' ||x_terr_id);
1728 END IF;
1729 ELSE
1730 IF G_Debug THEN
1731 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
1732 write_log(2,x_msg_data);
1733 write_log(2, ' Failed in resource creation for Geo territory # ' || x_terr_id);
1734 END IF;
1735 END IF;
1736
1737 ELSE
1738 IF G_Debug THEN
1739 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
1740 write_log(2,SUBSTR(x_msg_data,1,254));
1741 END IF;
1742 END IF; /* END: Successful Territory creation? */
1743 END IF; /* end if l_prev_qual_usg_id <> 1 */
1744 END IF; /* end if l_geo_count > 0 */
1745
1746 /********************************************************/
1747 /* delete the role and access */
1748 /********************************************************/
1749 IF l_ovnon_flag = 'Y' THEN
1750 FOR i IN l_overnon_role_tbl.first.. l_overnon_role_tbl.last LOOP
1751 DELETE FROM jtf_tty_terr_grp_roles
1752 WHERE TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
1753
1754 DELETE FROM jtf_tty_role_access
1755 WHERE TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
1756 END LOOP;
1757 END IF;
1758
1759 /*********************************************************************/
1760 /*********************************************************************/
1761 /************** OVERLAY TERRITORY CREATION ***************************/
1762 /*********************************************************************/
1763 /*********************************************************************/
1764
1765 /* if any role with PI and Account access and no non pi role exist */
1766 /* we need to create a new branch with geography territory */
1767 /* OVERLAY BRANCH */
1768
1769 BEGIN
1770
1771 SELECT COUNT( DISTINCT b.role_code )
1772 INTO l_pi_count
1773 FROM jtf_rs_roles_vl r
1774 , jtf_tty_role_prod_int a
1775 , jtf_tty_terr_grp_roles b
1776 WHERE r.role_code = b.role_code
1777 AND a.terr_group_role_id = b.terr_group_role_id
1778 AND b.terr_group_id = p_TERR_GROUP_ID(x)
1779 AND EXISTS (
1780 /* Geography Territory exists with Salesperson with this role */
1781 SELECT NULL
1782 FROM jtf_tty_geo_terr_rsc grsc, jtf_tty_geo_terr gterr
1783 WHERE grsc.geo_territory_id = gterr.geo_territory_id
1784 AND gterr.terr_group_id = b.terr_group_id
1785 AND grsc.rsc_role_code = b.role_code )
1786 AND ROWNUM < 2;
1787
1788 EXCEPTION
1789 WHEN OTHERS THEN NULL;
1790 END;
1791
1792
1793 /* are there overlay roles, i.e., are there roles with Product
1794 ** Interests defined for this Territory Group */
1795
1796 IF l_pi_count > 0 THEN
1797
1798 /*****************************************************************/
1799 /* (8) START: CREATE OVERLAY TERRITORIES FOR GEOGRAPHY TERRITORY */
1800 /*****************************************************************/
1801
1802 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
1803 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
1804 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
1805 l_terr_values_tbl:=l_terr_values_empty_tbl;
1806 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
1807 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
1808
1809 l_terr_all_rec.TERR_ID := NULL;
1810 l_terr_all_rec.LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1811 l_terr_all_rec.LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1812 l_terr_all_rec.CREATION_DATE := p_CREATION_DATE(x);
1813 l_terr_all_rec.CREATED_BY := p_CREATED_BY(x);
1814 l_terr_all_rec.LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1815 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
1816 l_terr_all_rec.NAME := p_geo_terr_name(x) || ' (OVERLAY)';
1817 l_terr_all_rec.start_date_active := p_active_from_date(x);
1818 l_terr_all_rec.end_date_active := p_active_to_date(x);
1819 l_terr_all_rec.PARENT_TERRITORY_ID := p_overlay_top(x);
1820 l_terr_all_rec.RANK := p_RANK(x) + 10;
1821 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
1822 l_terr_all_rec.TEMPLATE_FLAG := 'N';
1823 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
1824 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
1825 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
1826 l_terr_all_rec.DESCRIPTION := p_geo_terr_name(x) || ' (OVERLAY)';
1827 l_terr_all_rec.UPDATE_FLAG := 'N';
1828 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
1829 l_terr_all_rec.ORG_ID := p_ORG_ID(x);
1830 l_terr_all_rec.NUM_WINNERS := NULL ;
1831
1832
1833 SELECT JTF_TERR_USGS_S.NEXTVAL
1834 INTO l_terr_usg_id
1835 FROM DUAL;
1836
1837 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
1838 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1839 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1840 l_terr_usgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
1841 l_terr_usgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
1842 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1843 l_terr_usgs_tbl(1).TERR_ID := NULL;
1844 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
1845 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
1846
1847 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
1848 INTO l_terr_qtype_usg_id
1849 FROM DUAL;
1850
1851 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
1852 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1853 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1854 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
1855 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
1856 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1857 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
1858 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1002;
1859 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_org_id(x);
1860
1861 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
1862 INTO l_terr_qtype_usg_id
1863 FROM DUAL;
1864
1865 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
1866 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1867 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1868 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_CREATION_DATE(x);
1869 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_CREATED_BY(x);
1870 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1871 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
1872 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1003;
1873 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_org_id(x);
1874
1875 SELECT JTF_TERR_QUAL_S.NEXTVAL
1876 INTO l_terr_qual_id
1877 FROM DUAL;
1878
1879 j:=0;
1880 K:=0;
1881 l_prev_qual_usg_id:=1;
1882
1883 FOR gval IN geo_values(p_geo_territory_id(x) ) LOOP
1884
1885 IF l_prev_qual_usg_id <> gval.qual_usg_id THEN
1886
1887 j:=j+1;
1888 SELECT JTF_TERR_QUAL_S.NEXTVAL
1889 INTO l_terr_qual_id
1890 FROM DUAL;
1891
1892 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
1893 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1894 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1895 l_terr_qual_tbl(j).CREATION_DATE := p_CREATION_DATE(x);
1896 l_terr_qual_tbl(j).CREATED_BY := p_CREATED_BY(x);
1897 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1898 l_terr_qual_tbl(j).TERR_ID := NULL;
1899 l_terr_qual_tbl(j).QUAL_USG_ID := gval.qual_usg_id;
1900 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
1901 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
1902 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
1903 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
1904 l_terr_qual_tbl(j).ORG_ID := p_ORG_ID(x);
1905 l_prev_qual_usg_id := gval.qual_usg_id;
1906 END IF; /* l_prev_qual_usg_id */
1907
1908 k:=k+1;
1909
1910 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
1911 l_terr_values_tbl(k).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1912 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1913 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
1914 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
1915 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1916 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
1917 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
1918 l_terr_values_tbl(k).COMPARISON_OPERATOR := gval.COMPARISON_OPERATOR;
1919 l_terr_values_tbl(k).LOW_VALUE_CHAR := gval.value1_char;
1920 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
1921 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
1922 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
1923 l_terr_values_tbl(k).VALUE_SET := NULL;
1924 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
1925 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
1926 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
1927 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
1928 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
1929 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
1930 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
1931 l_terr_values_tbl(k).qualifier_tbl_index := j;
1932
1933 END LOOP; /* gval */
1934
1935 l_init_msg_list :=FND_API.G_TRUE;
1936
1937 JTF_TERRITORY_PVT.create_territory (
1938 p_api_version_number => l_api_version_number,
1939 p_init_msg_list => l_init_msg_list,
1940 p_commit => l_commit,
1941 p_validation_level => FND_API.g_valid_level_NONE,
1942 x_return_status => x_return_status,
1943 x_msg_count => x_msg_count,
1944 x_msg_data => x_msg_data,
1945 p_terr_all_rec => l_terr_all_rec,
1946 p_terr_usgs_tbl => l_terr_usgs_tbl,
1947 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
1948 p_terr_qual_tbl => l_terr_qual_tbl,
1949 p_terr_values_tbl => l_terr_values_tbl,
1950 x_terr_id => x_terr_id,
1951 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
1952 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
1953 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
1954 x_terr_values_out_tbl => x_terr_values_out_tbl
1955
1956 );
1957
1958 IF x_return_status = 'S' THEN
1959
1960 UPDATE JTF_TERR_ALL
1961 SET TERR_GROUP_FLAG = 'Y'
1962 , TERR_GROUP_ID = p_terr_group_id(x)
1963 , CATCH_ALL_FLAG = 'N'
1964 , GEO_TERR_FLAG = 'Y'
1965 , GEO_TERRITORY_ID = p_geo_territory_id(x)
1966 WHERE terr_id = x_terr_id;
1967
1968 l_overlay:=x_terr_id;
1969
1970 FOR pit IN role_pi(p_terr_group_id(x), p_geo_territory_id(x)) LOOP
1971
1972 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
1973 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
1974 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
1975 l_terr_values_tbl:=l_terr_values_empty_tbl;
1976 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
1977 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
1978
1979 l_role_counter := l_role_counter + 1;
1980
1981 l_terr_all_rec.TERR_ID := p_geo_territory_id(x) * -30 * l_role_counter;
1982 l_terr_all_rec.LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
1983 l_terr_all_rec.LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
1984 l_terr_all_rec.CREATION_DATE := p_CREATION_DATE(x);
1985 l_terr_all_rec.CREATED_BY := p_CREATED_BY(x);
1986 l_terr_all_rec.LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
1987 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
1988 l_terr_all_rec.NAME := p_geo_terr_name(x) || ': ' || pit.role_name || ' (OVERLAY)';
1989 l_terr_all_rec.start_date_active := p_active_from_date(x);
1990 l_terr_all_rec.end_date_active := p_active_to_date(x);
1991 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay;
1992 l_terr_all_rec.RANK := p_RANK(x)+10;
1993 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
1994 l_terr_all_rec.TEMPLATE_FLAG := 'N';
1995 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
1996 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
1997 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
1998 l_terr_all_rec.DESCRIPTION := p_geo_terr_name(x) || ': ' || pit.role_name || ' (OVERLAY)';
1999 l_terr_all_rec.UPDATE_FLAG := 'N';
2000 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
2001 l_terr_all_rec.ORG_ID := p_ORG_ID(x);
2002 l_terr_all_rec.NUM_WINNERS := NULL ;
2003
2004 SELECT JTF_TERR_USGS_S.NEXTVAL
2005 INTO l_terr_usg_id
2006 FROM DUAL;
2007
2008 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
2009 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2010 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
2011 l_terr_usgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
2012 l_terr_usgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
2013 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
2014 l_terr_usgs_tbl(1).TERR_ID := NULL;
2015 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
2016 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
2017
2018 i := 0;
2019 K:= 0;
2020
2021 FOR acc_type IN role_access(p_terr_group_id(x),pit.role_code) LOOP
2022
2023 IF acc_type.access_type= 'OPPORTUNITY' THEN
2024 i:=i+1;
2025
2026 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
2027 INTO l_terr_qtype_usg_id
2028 FROM DUAL;
2029
2030 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
2031 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2032 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
2033 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
2034 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
2035 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
2036 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
2037 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1003;
2038 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
2039
2040 SELECT JTF_TERR_QUAL_S.NEXTVAL
2041 INTO l_terr_qual_id
2042 FROM DUAL;
2043
2044 /* opp expected purchase */
2045
2046 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
2047 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2048 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
2049 l_terr_qual_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
2050 l_terr_qual_tbl(i).CREATED_BY := p_CREATED_BY(x);
2051 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
2052 l_terr_qual_tbl(i).TERR_ID := NULL;
2053 l_terr_qual_tbl(i).QUAL_USG_ID := g_opp_qual_usg_id;
2054 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
2055 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
2056 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
2057 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
2058 l_terr_qual_tbl(i).ORG_ID := p_ORG_ID(x);
2059
2060 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
2061
2062 k:=k+1;
2063 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
2064 l_terr_values_tbl(k).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
2065 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2066 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
2067 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
2068 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
2069 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
2070 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
2071 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
2072 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
2073 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
2074 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
2075 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
2076 l_terr_values_tbl(k).VALUE_SET := NULL;
2077 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
2078 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
2079 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
2080 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
2081 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
2082 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
2083 l_terr_values_tbl(k).qualifier_tbl_index := i;
2084
2085 IF (g_prod_cat_enabled) THEN
2086 l_terr_values_tbl(k).value1_id := qval.product_category_id;
2087 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
2088 ELSE
2089 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
2090 END IF;
2091
2092 END LOOP; /* qval */
2093
2094 ELSIF acc_type.access_type= 'LEAD' THEN
2095
2096 i:=i+1;
2097 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
2098 INTO l_terr_qtype_usg_id
2099 FROM DUAL;
2100
2101 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
2102 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2103 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
2104 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
2105 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
2106 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
2107 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
2108 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
2109 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
2110
2111 SELECT JTF_TERR_QUAL_S.NEXTVAL
2112 INTO l_terr_qual_id
2113 FROM DUAL;
2114
2115 /* lead expected purchase */
2116 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
2117 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2118 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
2119 l_terr_qual_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
2120 l_terr_qual_tbl(i).CREATED_BY := p_CREATED_BY(x);
2121 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
2122 l_terr_qual_tbl(i).TERR_ID := NULL;
2123 l_terr_qual_tbl(i).QUAL_USG_ID := g_lead_qual_usg_id;
2124 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
2125 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
2126 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
2127 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
2128 l_terr_qual_tbl(i).ORG_ID := p_ORG_ID(x);
2129
2130 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
2131
2132 k:=k+1;
2133
2134 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
2135 l_terr_values_tbl(k).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
2136 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2137 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
2138 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
2139 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
2140 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
2141 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
2142 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
2143 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
2144 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
2145 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
2146 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
2147 l_terr_values_tbl(k).VALUE_SET := NULL;
2148 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
2149 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
2150 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
2151 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
2152 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
2153 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
2154 l_terr_values_tbl(k).qualifier_tbl_index := i;
2155
2156 IF (g_prod_cat_enabled) THEN
2157 l_terr_values_tbl(k).value1_id := qval.product_category_id;
2158 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
2159 ELSE
2160 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
2161 END IF;
2162
2163 END LOOP; /* qval */
2164
2165 ELSE
2166 IF G_Debug THEN
2167 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||p_terr_group_id(x));
2168 END IF;
2169 END IF;
2170
2171 END LOOP; /* end for acc_type in role_access */
2172
2173 l_init_msg_list :=FND_API.G_TRUE;
2174
2175 JTF_TERRITORY_PVT.create_territory (
2176 p_api_version_number => l_api_version_number,
2177 p_init_msg_list => l_init_msg_list,
2178 p_commit => l_commit,
2179 p_validation_level => FND_API.g_valid_level_NONE,
2180 x_return_status => x_return_status,
2181 x_msg_count => x_msg_count,
2182 x_msg_data => x_msg_data,
2183 p_terr_all_rec => l_terr_all_rec,
2184 p_terr_usgs_tbl => l_terr_usgs_tbl,
2185 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
2186 p_terr_qual_tbl => l_terr_qual_tbl,
2187 p_terr_values_tbl => l_terr_values_tbl,
2188 x_terr_id => x_terr_id,
2189 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
2190 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
2191 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
2192 x_terr_values_out_tbl => x_terr_values_out_tbl
2193
2194 );
2195
2196 IF (x_return_status = 'S') THEN
2197
2198 UPDATE JTF_TERR_ALL
2199 SET TERR_GROUP_FLAG = 'Y'
2200 , TERR_GROUP_ID = p_terr_group_id(x)
2201 , CATCH_ALL_FLAG = 'N'
2202 , GEO_TERR_FLAG = 'Y'
2203 , GEO_TERRITORY_ID = p_geo_territory_id(x)
2204 WHERE terr_id = x_terr_id;
2205
2206 IF G_Debug THEN
2207 write_log(2,' OVERLAY PI Territory Created = '||l_terr_all_rec.NAME);
2208 END IF;
2209
2210 ELSE
2211 IF G_Debug THEN
2212 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
2213 write_log(2,x_msg_data);
2214 END IF;
2215
2216 END IF; /* x_return_status */
2217
2218 i:=0;
2219
2220 FOR rsc IN terr_resource(p_geo_territory_id(x), pit.role_code) LOOP
2221
2222 i:=i+1;
2223
2224 SELECT JTF_TERR_RSC_S.NEXTVAL
2225 INTO l_terr_rsc_id
2226 FROM DUAL;
2227
2228 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
2229 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
2230 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
2231 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
2232 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
2233 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
2234 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
2235 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
2236 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
2237 l_TerrRsc_Tbl(i).ROLE := pit.role_code;
2238 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
2239 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
2240 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
2241 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
2242 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
2243 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
2244
2245 a := 0;
2246
2247 FOR rsc_acc IN role_access(p_terr_group_id(x),pit.role_code) LOOP
2248
2249 IF rsc_acc.access_type= 'OPPORTUNITY' THEN
2250
2251 a := a+1;
2252
2253 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
2254 INTO l_terr_rsc_access_id
2255 FROM DUAL;
2256
2257 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
2258 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
2259 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
2260 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
2261 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
2262 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
2263 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
2264 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
2265 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
2266 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
2267
2268 ELSIF rsc_acc.access_type= 'LEAD' THEN
2269
2270 a := a+1;
2271
2272 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
2273 INTO l_terr_rsc_access_id
2274 FROM DUAL;
2275
2276 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
2277 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
2278 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
2279 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
2280 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
2281 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
2282 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
2283 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
2284 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
2285 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
2286 END IF;
2287
2288 END LOOP; /* rsc_acc in role_access */
2289
2290 END LOOP; /* rsc in resource_grp */
2291
2292 l_init_msg_list :=FND_API.G_TRUE;
2293
2294 Jtf_Territory_Resource_Pvt.create_terrresource (
2295 p_api_version_number => l_Api_Version_Number,
2296 p_init_msg_list => l_Init_Msg_List,
2297 p_commit => l_Commit,
2298 p_validation_level => FND_API.g_valid_level_NONE,
2299 x_return_status => x_Return_Status,
2300 x_msg_count => x_Msg_Count,
2301 x_msg_data => x_msg_data,
2302 p_terrrsc_tbl => l_TerrRsc_tbl,
2303 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
2304 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
2305 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
2306 );
2307
2308 IF x_Return_Status='S' THEN
2309 IF G_Debug THEN
2310 write_log(2,'Resource created for Product Interest OVERLAY Territory '|| l_terr_all_rec.NAME);
2311 END IF;
2312 ELSE
2313 IF G_Debug THEN
2314 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '|| x_terr_id);
2315 write_log(2,'Message_data '|| x_msg_data);
2316 END IF;
2317 END IF;
2318
2319 END LOOP; /* end for pit in role_pi */
2320
2321 ELSE
2322 IF G_Debug THEN
2323 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
2324 write_log(2,x_msg_data);
2325 write_log(2,'Failed in OVERLAY Territory Creation for Territory : ' ||
2326 p_geo_territory_id(x) || ' : ' ||
2327 p_geo_terr_name(x) );
2328 END IF;
2329 END IF; /* if (x_return_status = 'S' */
2330
2331 /***************************************************************/
2332 /* (8) END: CREATE OVERLAY TERRITORIES FOR GEOGRAPHY TERRITORY */
2333 /***************************************************************/
2334
2335 END IF; /* l_pi_count*/
2336
2337 END LOOP; /* end FOR x in p_geo_terr_id */
2338
2339
2340 EXCEPTION
2341 WHEN OTHERS THEN
2342 IF G_Debug THEN
2343 Write_Log(2, 'Error in procedure create_geo_terr_for_GT');
2344 END IF;
2345 IF (geo_territories%ISOPEN) THEN
2346 CLOSE geo_territories;
2347 END IF;
2348 IF (get_NON_OVLY_geo_trans%ISOPEN) THEN
2349 CLOSE get_NON_OVLY_geo_trans;
2350 END IF;
2351 IF (geo_values%ISOPEN) THEN
2352 CLOSE geo_values;
2353 END IF;
2354 IF (NON_OVLY_role_access%ISOPEN) THEN
2355 CLOSE NON_OVLY_role_access;
2356 END IF;
2357 IF (role_interest_nonpi%ISOPEN) THEN
2358 CLOSE role_interest_nonpi;
2359 END IF;
2360 IF (terr_resource%ISOPEN) THEN
2361 CLOSE terr_resource;
2362 END IF;
2363 IF (topterr%ISOPEN) THEN
2364 CLOSE topterr;
2365 END IF;
2366 IF (csr_get_qual%ISOPEN) THEN
2367 CLOSE csr_get_qual;
2368 END IF;
2369 IF (csr_get_qual_val%ISOPEN) THEN
2370 CLOSE csr_get_qual_val;
2371 END IF;
2372 IF (get_OVLY_geographies%ISOPEN) THEN
2373 CLOSE get_OVLY_geographies;
2374 END IF;
2375 IF (role_pi%ISOPEN) THEN
2376 CLOSE role_pi;
2377 END IF;
2378 IF (role_access%ISOPEN) THEN
2379 CLOSE role_access;
2380 END IF;
2381 IF (role_pi_interest%ISOPEN) THEN
2382 CLOSE role_pi_interest;
2383 END IF;
2384 IF (role_no_pi%ISOPEN) THEN
2385 CLOSE role_no_pi;
2386 END IF;
2387
2388 RAISE;
2389
2390 END create_geo_terr_for_GT;
2391
2392 /*----------------------------------------------------------------------------------------
2393 This procedure will create Geography and Overlay Territory for geography territory group .
2394 -----------------------------------------------------------------------------------------*/
2395 PROCEDURE create_geo_terr_for_TG(p_terr_group_id IN g_terr_group_id_tab
2396 ,p_terr_group_name IN g_terr_group_name_tab
2397 ,p_rank IN g_rank_tab
2398 ,p_active_from_date IN g_active_from_date_tab
2399 ,p_active_to_date IN g_active_to_date_tab
2400 ,p_parent_terr_id IN g_parent_terr_id_tab
2401 ,p_created_by IN g_created_by_tab
2402 ,p_creation_date IN g_creation_date_tab
2403 ,p_last_updated_by IN g_last_updated_by_tab
2404 ,p_last_update_date IN g_last_update_date_tab
2405 ,p_last_update_login IN g_last_update_login_tab
2406 ,p_num_winners IN g_num_winners_tab
2407 ,p_org_id IN g_org_id_tab
2408 ,p_change_type IN g_change_type_tab)
2409 IS
2410
2411 l_terr_all_rec JTF_TERRITORY_PVT.terr_all_rec_type;
2412 l_terr_usgs_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
2413 l_terr_qualtypeusgs_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
2414 l_terr_qual_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
2415 l_terr_values_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
2416 l_TerrRsc_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type;
2417 l_TerrRsc_Access_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
2418
2419 l_TerrRsc_empty_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type;
2420 l_TerrRsc_Access_empty_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
2421 l_terr_usgs_empty_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
2422 l_terr_qualtypeusgs_empty_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
2423 l_terr_qual_empty_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
2424 l_terr_values_empty_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
2425
2426 TYPE role_typ IS RECORD(
2427 grp_role_id NUMBER:=FND_API.G_MISS_NUM
2428 );
2429
2430 TYPE grp_role_tbl_type IS TABLE OF role_typ
2431 INDEX BY BINARY_INTEGER;
2432
2433 l_overnon_role_tbl grp_role_tbl_type;
2434 l_overnon_role_empty_tbl grp_role_tbl_type;
2435
2436 i NUMBER;
2437 j NUMBER;
2438 k NUMBER;
2439 a NUMBER;
2440 x NUMBER;
2441
2442 l_terr_qual_id NUMBER;
2443 l_terr_usg_id NUMBER;
2444 l_terr_qtype_usg_id NUMBER;
2445 l_terr_rsc_id NUMBER;
2446 l_terr_rsc_access_id NUMBER;
2447 l_api_version_number CONSTANT NUMBER := 1.0;
2448 l_init_msg_list VARCHAR2(1);
2449 l_commit VARCHAR2(1);
2450
2451 l_ovnon_flag VARCHAR2(1):='N';
2452 l_overlay_top NUMBER;
2453 l_overlay NUMBER;
2454 l_role_counter NUMBER := 0;
2455 l_id NUMBER;
2456 l_nacat NUMBER;
2457
2458 l_pi_count NUMBER := 0;
2459 l_prev_qual_usg_id NUMBER;
2460 l_na_count NUMBER;
2461
2462 x_terr_usgs_out_tbl JTF_TERRITORY_PVT.terr_usgs_out_tbl_type;
2463 x_terr_qualtypeusgs_out_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_out_tbl_type;
2464 x_terr_qual_out_tbl JTF_TERRITORY_PVT.terr_qual_out_tbl_type;
2465 x_terr_values_out_tbl JTF_TERRITORY_PVT.terr_values_out_tbl_type;
2466 x_TerrRsc_Out_Tbl Jtf_Territory_Resource_Pvt.TerrResource_out_tbl_type;
2467 x_TerrRsc_Access_Out_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_out_tbl_type;
2468
2469 x_terr_id NUMBER;
2470 x_msg_count NUMBER;
2471 x_msg_data VARCHAR2(2000);
2472 x_return_status VARCHAR2(1);
2473
2474
2475 /* get all the geographies for a given territory group id */
2476 CURSOR geo_territories( l_terr_group_id NUMBER) IS
2477 SELECT gterr.geo_territory_id
2478 , gterr.geo_terr_name
2479 FROM jtf_tty_geo_terr gterr
2480 WHERE gterr.terr_group_id = l_terr_group_id
2481 AND ( gterr.parent_geo_terr_id < 0
2482 OR EXISTS (
2483 SELECT 1
2484 FROM jtf_tty_geo_terr_values gtval
2485 WHERE gterr.geo_territory_id = gtval.geo_territory_id));
2486
2487 /** Transaction Types for a NON-OVERLAY territory are
2488 ** determined by all salesteam members on this geography territories
2489 ** having Roles without Product Interests defined
2490 ** so there is no Overlay Territories to assign
2491 ** Leads and Opportunities. If all Roles have Product Interests
2492 ** then only ACCOUNT transaction type should
2493 ** be used in Non-Overlay Named Account definition
2494 */
2495 CURSOR get_NON_OVLY_geo_trans(l_geo_territory_id NUMBER) IS
2496 SELECT ra.access_type
2497 FROM
2498 JTF_TTY_GEO_TERR_RSC grsc
2499 , jtf_tty_geo_terr gtr
2500 , jtf_tty_terr_grp_roles tgr
2501 , jtf_tty_role_access ra
2502 WHERE grsc.GEO_TERRITORY_ID = l_geo_territory_id
2503 AND gtr.geo_territory_id = grsc.geo_territory_id
2504 AND grsc.rsc_role_code = tgr.role_code
2505 AND tgr.terr_group_id = gtr.terr_group_id
2506 AND ra.terr_group_role_id = tgr.terr_group_role_id
2507 AND ra.access_type IN ('ACCOUNT')
2508 UNION
2509 SELECT ra.access_type
2510 FROM
2511 JTF_TTY_GEO_TERR_RSC grsc
2512 , jtf_tty_geo_terr gtr
2513 , jtf_tty_terr_grp_roles tgr
2514 , jtf_tty_role_access ra
2515 WHERE grsc.GEO_TERRITORY_ID = l_geo_territory_id
2516 AND gtr.geo_territory_id = grsc.geo_territory_id
2517 AND grsc.rsc_role_code = tgr.role_code
2518 AND tgr.terr_group_id = gtr.terr_group_id
2519 AND ra.terr_group_role_id = tgr.terr_group_role_id
2520 AND NOT EXISTS (
2521 SELECT NULL
2522 FROM jtf_tty_role_prod_int rpi
2523 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id );
2524
2525 /* same sql used in geography download to Excel
2526 This query will find out all the postal codes
2527 for a given geography territoy.
2528 Also if the geography territory is for a territory
2529 group it will find out the postal codes
2530 looking at country, state, city or posta code
2531 associated with the territory group */
2532 CURSOR geo_values(l_geo_territory_id NUMBER) IS
2533 SELECT -1007 qual_usg_id
2534 , '=' comparison_operator
2535 , main.postal_code value1_char
2536 , main.geo_territory_id
2537 FROM (
2538 /* postal code */
2539 SELECT g.postal_code postal_code
2540 ,g.geo_id geo_id
2541 ,terr.geo_territory_id geo_territory_id
2542 FROM jtf_tty_geo_grp_values grpv,
2543 jtf_tty_terr_groups tg,
2544 jtf_tty_geo_terr terr,
2545 jtf_tty_geographies g --postal_code level
2546 WHERE terr.terr_group_id = tg.terr_group_id
2547 AND terr.terr_group_id = grpv.terr_group_id
2548 AND terr.owner_resource_id < 0
2549 AND terr.parent_geo_terr_id < 0 -- default terr
2550 AND grpv.geo_type = 'POSTAL_CODE'
2551 AND grpv.comparison_operator = '='
2552 AND g.geo_id = grpv.geo_id_from
2553 AND g.geo_type = 'POSTAL_CODE'
2554 UNION
2555 /* postal code range */
2556 SELECT g.postal_code postal_code
2557 ,g.geo_id geo_id
2558 ,terr.geo_territory_id geo_territory_id
2559 FROM jtf_tty_geo_grp_values grpv,
2560 jtf_tty_terr_groups tg,
2561 jtf_tty_geo_terr terr,
2562 jtf_tty_geographies g, --postal_code level
2563 jtf_tty_geographies g1,
2564 jtf_tty_geographies g2
2565 WHERE terr.terr_group_id = tg.terr_group_id
2566 AND terr.terr_group_id = grpv.terr_group_id
2567 AND terr.owner_resource_id < 0
2568 AND terr.parent_geo_terr_id < 0 -- default terr
2569 AND grpv.geo_type = 'POSTAL_CODE'
2570 AND grpv.comparison_operator = 'BETWEEN'
2571 AND g1.geo_id = grpv.geo_id_from
2572 AND g2.geo_id = grpv.geo_id_to
2573 AND g.geo_name BETWEEN g1.geo_name AND g2.geo_name
2574 UNION
2575 SELECT g.postal_code postal_code
2576 ,g.geo_id geo_id
2577 ,terr.geo_territory_id geo_territory_id
2578 FROM jtf_tty_geo_grp_values grpv,
2579 jtf_tty_terr_groups tg,
2580 jtf_tty_geo_terr terr,
2581 jtf_tty_geographies g,
2582 jtf_tty_geographies g1
2583 WHERE terr.terr_group_id = tg.terr_group_id
2584 AND terr.terr_group_id = grpv.terr_group_id
2585 AND terr.owner_resource_id < 0
2586 AND terr.parent_geo_terr_id < 0 -- default terr
2587 AND (
2588 (
2589 grpv.geo_type = 'STATE'
2590 AND g1.geo_id = grpv.geo_id_from
2591 AND g.STATE_CODE = g1.state_Code
2592 AND g.country_code = g1.country_Code
2593 AND g.geo_type = 'POSTAL_CODE'
2594 )
2595 OR
2596 (
2597 grpv.geo_type = 'CITY'
2598 AND g.geo_type = 'POSTAL_CODE'
2599 AND g.country_code = g1.country_code
2600 AND (
2601 (g.state_code = g1.state_code AND g1.province_code IS NULL)
2602 OR
2603 (g1.province_code = g.province_code AND g1.state_code IS NULL)
2604 )
2605 AND (g1.county_code IS NULL OR g.county_code = g1.county_code)
2606 AND g.city_code = g1.city_code
2607 AND grpv.geo_id_from = g1.geo_id
2608 )
2609 OR
2610 (
2611 grpv.geo_type = 'COUNTRY'
2612 AND grpv.geo_id_from = g1.geo_id
2613 AND g.geo_type = 'POSTAL_CODE'
2614 AND g.country_code = g1.country_code
2615 )
2616 OR
2617 (
2618 grpv.geo_type = 'PROVINCE'
2619 AND grpv.geo_id_from = g1.geo_id
2620 AND g.geo_type = 'POSTAL_CODE'
2621 AND g.country_code = g1.country_code
2622 AND g.province_code = g1.province_code
2623 )
2624 )
2625 UNION
2626 SELECT g.postal_code postal_code
2627 ,g.geo_id geo_id
2628 ,terr.geo_territory_id geo_territory_id
2629 FROM jtf_tty_terr_groups tg,
2630 jtf_tty_geo_terr terr,
2631 jtf_tty_geographies g,
2632 jtf_tty_geo_terr_values tv
2633 WHERE terr.terr_group_id = tg.terr_group_id
2634 AND terr.owner_resource_id >= 0
2635 AND terr.parent_geo_terr_id >= 0 -- not default terr
2636 AND tv.geo_territory_id = terr.geo_territory_id
2637 AND g.geo_id = tv.geo_id
2638 ) main
2639 WHERE main.geo_id NOT IN -- the terr the user owners
2640 (
2641 SELECT tv.geo_id geo_id
2642 FROM jtf_tty_geo_terr terr,
2643 jtf_tty_geo_terr_values tv
2644 WHERE tv.geo_territory_id = terr.geo_territory_id
2645 AND main.geo_territory_id = terr.parent_geo_terr_id
2646 )
2647 AND geo_territory_id = l_geo_territory_id;
2648
2649 /* Access Types for a particular Role within a Territory Group */
2650 CURSOR NON_OVLY_role_access( lp_terr_group_id NUMBER
2651 , lp_role VARCHAR2) IS
2652 SELECT DISTINCT a.access_type
2653 FROM jtf_tty_role_access a
2654 , jtf_tty_terr_grp_roles b
2655 WHERE a.terr_group_role_id = b.terr_group_role_id
2656 AND b.terr_group_id = lp_terr_group_id
2657 AND b.role_code = lp_role
2658 AND NOT EXISTS (
2659 /* Product Interest does not exist for this role */
2660 SELECT NULL
2661 FROM jtf_tty_role_prod_int rpi
2662 WHERE rpi.terr_group_role_id = B.TERR_GROUP_ROLE_ID )
2663 ORDER BY a.access_type ;
2664
2665 /* Roles WITHOUT a Product Iterest defined */
2666 CURSOR role_interest_nonpi(l_terr_group_id NUMBER) IS
2667 SELECT b.role_code role_code
2668 --,a.interest_type_id
2669 ,b.terr_group_id
2670 FROM jtf_tty_role_prod_int a
2671 , jtf_tty_terr_grp_roles b
2672 WHERE a.terr_group_role_id(+) = b.terr_group_role_id
2673 AND b.terr_group_id = l_terr_group_id
2674 AND a.terr_group_role_id IS NULL
2675 ORDER BY b.role_code;
2676
2677 CURSOR terr_resource (l_geo_territory_id NUMBER,l_role VARCHAR2) IS
2678 SELECT DISTINCT a.resource_id
2679 , a.rsc_group_id
2680 , NVL(a.rsc_resource_type,'RS_EMPLOYEE') rsc_resource_type
2681 FROM jtf_tty_geo_terr_rsc a
2682 , jtf_tty_geo_terr b
2683 WHERE a.geo_territory_id = b.geo_territory_id
2684 AND b.geo_territory_id = l_geo_territory_id
2685 AND a.rsc_role_code = l_role;
2686
2687 /* Get Top-Level Parent Territory details */
2688 CURSOR topterr(l_terr NUMBER) IS
2689 SELECT name
2690 , description
2691 , rank
2692 , parent_territory_id
2693 , terr_id
2694 FROM jtf_terr_all
2695 WHERE terr_id = l_terr;
2696
2697 /* get Qualifiers used in a territory */
2698 CURSOR csr_get_qual( lp_terr_id NUMBER) IS
2699 SELECT jtq.terr_qual_id
2700 , jtq.qual_usg_id
2701 FROM jtf_terr_qual_all jtq
2702 WHERE jtq.terr_id = lp_terr_id;
2703
2704 /* get Values used in a territory qualifier */
2705 CURSOR csr_get_qual_val ( lp_terr_qual_id NUMBER ) IS
2706 SELECT jtv.TERR_VALUE_ID
2707 , jtv.INCLUDE_FLAG
2708 , jtv.COMPARISON_OPERATOR
2709 , jtv.LOW_VALUE_CHAR
2710 , jtv.HIGH_VALUE_CHAR
2711 , jtv.LOW_VALUE_NUMBER
2712 , jtv.HIGH_VALUE_NUMBER
2713 , jtv.VALUE_SET
2714 , jtv.INTEREST_TYPE_ID
2715 , jtv.PRIMARY_INTEREST_CODE_ID
2716 , jtv.SECONDARY_INTEREST_CODE_ID
2717 , jtv.CURRENCY_CODE
2718 , jtv.ORG_ID
2719 , jtv.ID_USED_FLAG
2720 , jtv.LOW_VALUE_CHAR_ID
2721 FROM jtf_terr_values_all jtv
2722 WHERE jtv.terr_qual_id = lp_terr_qual_id;
2723
2724 /* get the geographies
2725 ** used for OVERLAY territory creation */
2726 CURSOR get_OVLY_geographies(LP_terr_group_id NUMBER) IS
2727 SELECT gterr.geo_territory_id
2728 , gterr.geo_terr_name
2729 FROM jtf_tty_geo_terr gterr
2730 WHERE gterr.terr_group_id = lp_terr_group_id
2731 AND EXISTS (
2732 /* Salesperson, with Role that has a Product Interest defined, exists for this Named Account */
2733 SELECT NULL
2734 FROM jtf_tty_geo_terr_rsc grsc
2735 , jtf_tty_role_prod_int rpi
2736 , jtf_tty_terr_grp_roles tgr
2737 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
2738 AND tgr.terr_group_id = gterr.TERR_GROUP_ID
2739 AND tgr.role_code = grsc.rsc_role_code
2740 AND grsc.geo_territory_id = gterr.geo_territory_id );
2741
2742
2743 /* Roles WITH a Product Iterest defined */
2744 CURSOR role_pi( lp_terr_group_id NUMBER
2745 , lp_geo_territory_id NUMBER) IS
2746 SELECT DISTINCT
2747 b.role_code role_code
2748 , r.role_name role_name
2749 FROM jtf_rs_roles_vl r
2750 , jtf_tty_role_prod_int a
2751 , jtf_tty_terr_grp_roles b
2752 WHERE r.role_code = b.role_code
2753 AND a.terr_group_role_id = b.terr_group_role_id
2754 AND b.terr_group_id = lp_terr_group_id
2755 AND EXISTS (
2756 /* Named Account exists with Salesperson with this role */
2757 SELECT NULL
2758 FROM jtf_tty_geo_terr_rsc grsc, jtf_tty_geo_terr gterr
2759 WHERE gterr.geo_territory_id = grsc.geo_territory_id
2760 AND grsc.geo_territory_id = lp_geo_territory_id
2761 AND gterr.terr_group_id = b.terr_group_id
2762 AND grsc.rsc_role_code = b.role_code );
2763
2764
2765 /* Access Types for a particular Role within a Territory Group */
2766 CURSOR role_access(l_terr_group_id NUMBER,l_role VARCHAR2) IS
2767 SELECT DISTINCT a.access_type
2768 FROM jtf_tty_role_access a
2769 , jtf_tty_terr_grp_roles b
2770 WHERE a.terr_group_role_id = b.terr_group_role_id
2771 AND b.terr_group_id = l_terr_group_id
2772 AND b.role_code = l_role
2773 ORDER BY a.access_type ;
2774
2775 /* Product Interest for a Role */
2776 CURSOR role_pi_interest(l_terr_group_id NUMBER,l_role VARCHAR2) IS
2777 SELECT a.interest_type_id
2778 ,a.product_category_id
2779 ,a.product_category_set_id
2780 FROM jtf_tty_role_prod_int a
2781 , jtf_tty_terr_grp_roles b
2782 WHERE a.terr_group_role_id = b.terr_group_role_id
2783 AND b.terr_group_id = l_terr_group_id
2784 AND b.role_code = l_role;
2785
2786 /* get those roles for a territory Group that
2787 ** do not have Product Interest defined */
2788 CURSOR role_no_pi(l_terr_group_id NUMBER) IS
2789 SELECT DISTINCT b.role_code
2790 FROM jtf_tty_role_access a
2791 , jtf_tty_terr_grp_roles b
2792 , jtf_tty_role_prod_int c
2793 WHERE a.terr_group_role_id = b.terr_group_role_id
2794 AND b.terr_group_id = l_terr_group_id
2795 AND a.access_type = 'ACCOUNT'
2796 AND c.terr_group_role_id = b.terr_group_role_id
2797 AND NOT EXISTS ( SELECT 1
2798 FROM jtf_tty_role_prod_int e
2799 , jtf_tty_terr_grp_roles d
2800 WHERE e.terr_group_role_id (+) = d.terr_group_role_id
2801 AND d.terr_group_id = b.terr_group_id
2802 AND d.role_code = b.role_code
2803 AND e.interest_type_id IS NULL);
2804
2805
2806 BEGIN
2807 FOR x IN p_terr_group_id.FIRST .. p_terr_group_id.LAST LOOP
2808
2809 -- if the territory group has been updated , delete it before recreating the corresponding territories
2810 IF (p_change_type(x) = 'UPDATE') THEN
2811 IF G_Debug THEN
2812 Write_Log(2, 'create_geo_terr_for_TG : START: delete_TG');
2813 END IF;
2814
2815 delete_TG(p_terr_group_id(x), NULL, NULL);
2816
2817 IF G_Debug THEN
2818 Write_Log(2, 'create_geo_terr_for_TG : END: delete_TG');
2819 Write_Log(2, 'create_geo_terr_for_TG : All the territories corresponding to the territory group ' || p_terr_group_id(x)
2820 ||
2821 ' have been deleted successfully.');
2822 END IF;
2823 END IF;
2824
2825 IF G_Debug THEN
2826 write_log(2, '');
2827 write_log(2, '----------------------------------------------------------');
2828 write_log(2, 'create_geo_terr_for_TG : BEGIN: Territory Creation for Territory Group: ' ||
2829 p_terr_group_id(x) || ' : ' || p_terr_group_name(x) );
2830 END IF;
2831
2832 /* reset these processing values for the Territory Group */
2833 l_ovnon_flag := 'N';
2834 l_overnon_role_tbl := l_overnon_role_empty_tbl;
2835
2836 /** Roles with No Product Interest */
2837 i:=0;
2838 FOR overlayandnon IN role_no_pi(p_terr_group_id(x)) LOOP
2839
2840 l_ovnon_flag:='Y';
2841 i :=i +1;
2842
2843 SELECT JTF_TTY_TERR_GRP_ROLES_S.NEXTVAL
2844 INTO l_id
2845 FROM DUAL;
2846
2847 l_overnon_role_tbl(i).grp_role_id:= l_id;
2848
2849 INSERT INTO JTF_TTY_TERR_GRP_ROLES(
2850 TERR_GROUP_ROLE_ID
2851 , OBJECT_VERSION_NUMBER
2852 , TERR_GROUP_ID
2853 , ROLE_CODE
2854 , CREATED_BY
2855 , CREATION_DATE
2856 , LAST_UPDATED_BY
2857 , LAST_UPDATE_DATE
2858 , LAST_UPDATE_LOGIN)
2859 VALUES(
2860 l_overnon_role_tbl(i).grp_role_id
2861 , 1
2862 , p_terr_group_id(x)
2863 , overlayandnon.role_code
2864 , G_USER_ID
2865 , SYSDATE
2866 , G_USER_ID
2867 , SYSDATE
2868 , G_LOGIN_ID);
2869
2870 INSERT INTO JTF_TTY_ROLE_ACCESS(
2871 TERR_GROUP_ROLE_ACCESS_ID
2872 , OBJECT_VERSION_NUMBER
2873 , TERR_GROUP_ROLE_ID
2874 , ACCESS_TYPE
2875 , CREATED_BY
2876 , CREATION_DATE
2877 , LAST_UPDATED_BY
2878 , LAST_UPDATE_DATE
2879 , LAST_UPDATE_LOGIN)
2880 VALUES(
2881 JTF_TTY_ROLE_ACCESS_S.NEXTVAL
2882 , 1
2883 , l_overnon_role_tbl(i).grp_role_id
2884 , 'ACCOUNT'
2885 , G_USER_ID
2886 , SYSDATE
2887 , G_USER_ID
2888 , SYSDATE
2889 , G_LOGIN_ID);
2890
2891 END LOOP; /* for overlayandnon in role_no_pi */
2892
2893
2894 /* does Territory Group have at least 1 Geo Territory ? */
2895 SELECT COUNT(*)
2896 INTO l_na_count
2897 FROM jtf_tty_terr_groups tgrp
2898 , jtf_tty_geo_grp_values gterr
2899 WHERE tgrp.terr_group_id = gterr.terr_group_id
2900 AND tgrp.terr_group_id = p_terr_group_id(x)
2901 AND ROWNUM < 2;
2902
2903 /*********************************************************************/
2904 /*********************************************************************/
2905 /************** NON-OVERLAY TERRITORY CREATION ***********************/
2906 /*********************************************************************/
2907 /*********************************************************************/
2908
2909 /* BEGIN: if Territory Group exists with Geo Territory then auto-create territory definitions */
2910
2911 IF (l_na_count > 0) THEN
2912
2913 /***************************************************************/
2914 /* (3) START: CREATE PLACEHOLDER TERRITORY FOR TERRITORY GROUP */
2915 /***************************************************************/
2916 L_TERR_USGS_TBL := L_TERR_USGS_EMPTY_TBL;
2917 L_TERR_QUALTYPEUSGS_TBL := L_TERR_QUALTYPEUSGS_EMPTY_TBL;
2918 L_TERR_QUAL_TBL := L_TERR_QUAL_EMPTY_TBL;
2919 L_TERR_VALUES_TBL := L_TERR_VALUES_EMPTY_TBL;
2920 L_TERRRSC_TBL := L_TERRRSC_EMPTY_TBL;
2921 L_TERRRSC_ACCESS_TBL := L_TERRRSC_ACCESS_EMPTY_TBL;
2922
2923 /* TERRITORY HEADER */
2924 L_TERR_ALL_REC.TERR_ID := -1 * p_terr_group_id(x);
2925 L_TERR_ALL_REC.LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2926 L_TERR_ALL_REC.LAST_UPDATED_BY := G_USER_ID;
2927 L_TERR_ALL_REC.CREATION_DATE := p_CREATION_DATE(x);
2928 L_TERR_ALL_REC.CREATED_BY := G_USER_ID ;
2929 L_TERR_ALL_REC.LAST_UPDATE_LOGIN := G_LOGIN_ID;
2930 L_TERR_ALL_REC.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
2931 L_TERR_ALL_REC.NAME := p_TERR_GROUP_NAME(x);
2932 L_TERR_ALL_REC.START_DATE_ACTIVE := p_ACTIVE_FROM_DATE(x);
2933 L_TERR_ALL_REC.END_DATE_ACTIVE := p_ACTIVE_TO_DATE(x);
2934 L_TERR_ALL_REC.PARENT_TERRITORY_ID := p_PARENT_TERR_ID(x);
2935 L_TERR_ALL_REC.RANK := p_RANK(x);
2936 L_TERR_ALL_REC.TEMPLATE_TERRITORY_ID := NULL;
2937 L_TERR_ALL_REC.TEMPLATE_FLAG := 'N';
2938 L_TERR_ALL_REC.ESCALATION_TERRITORY_ID := NULL;
2939 L_TERR_ALL_REC.ESCALATION_TERRITORY_FLAG := 'N';
2940 L_TERR_ALL_REC.OVERLAP_ALLOWED_FLAG := NULL;
2941 L_TERR_ALL_REC.DESCRIPTION := p_TERR_GROUP_NAME(x);
2942 L_TERR_ALL_REC.UPDATE_FLAG := 'N';
2943 L_TERR_ALL_REC.AUTO_ASSIGN_RESOURCES_FLAG:= NULL;
2944 L_TERR_ALL_REC.NUM_WINNERS := NULL ;
2945 l_terr_all_rec.ORG_ID := p_ORG_ID(x);
2946
2947
2948 /* ORACLE SALES AND TELESALES USAGE */
2949 SELECT JTF_TERR_USGS_S.NEXTVAL
2950 INTO l_terr_usg_id
2951 FROM DUAL;
2952
2953 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
2954 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
2955 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2956 l_terr_usgs_tbl(1).LAST_UPDATED_BY := G_USER_ID;
2957 l_terr_usgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
2958 l_terr_usgs_tbl(1).CREATED_BY := G_USER_ID;
2959 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:= G_LOGIN_ID;
2960 l_terr_usgs_tbl(1).TERR_ID := NULL;
2961 l_terr_usgs_tbl(1).ORG_ID := p_ORG_ID(x);
2962
2963 /* ACCOUNT TRANSACTION TYPE */
2964 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
2965 INTO l_terr_qtype_usg_id
2966 FROM DUAL;
2967
2968 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1001;
2969 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
2970 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2971 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := G_USER_ID;
2972 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
2973 l_terr_qualtypeusgs_tbl(1).CREATED_BY := G_USER_ID;
2974 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := G_LOGIN_ID;
2975 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
2976 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_ORG_ID(x);
2977
2978 /* LEAD TRANSACTION TYPE */
2979 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
2980 INTO l_terr_qtype_usg_id
2981 FROM DUAL;
2982
2983 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1002;
2984 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
2985 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
2986 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := G_USER_ID;
2987 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_CREATION_DATE(x);
2988 l_terr_qualtypeusgs_tbl(2).CREATED_BY := G_USER_ID;
2989 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := G_LOGIN_ID;
2990 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
2991 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_ORG_ID(x);
2992
2993 /* OPPORTUNITY TRANSACTION TYPE */
2994 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
2995 INTO l_terr_qtype_usg_id
2996 FROM DUAL;
2997
2998 l_terr_qualtypeusgs_tbl(3).QUAL_TYPE_USG_ID := -1003;
2999 l_terr_qualtypeusgs_tbl(3).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3000 l_terr_qualtypeusgs_tbl(3).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3001 l_terr_qualtypeusgs_tbl(3).LAST_UPDATED_BY := G_USER_ID;
3002 l_terr_qualtypeusgs_tbl(3).CREATION_DATE := p_CREATION_DATE(x);
3003 l_terr_qualtypeusgs_tbl(3).CREATED_BY := G_USER_ID;
3004 l_terr_qualtypeusgs_tbl(3).LAST_UPDATE_LOGIN := G_LOGIN_ID;
3005 l_terr_qualtypeusgs_tbl(3).TERR_ID := NULL;
3006 l_terr_qualtypeusgs_tbl(3).ORG_ID := p_ORG_ID(x);
3007
3008 l_init_msg_list := FND_API.G_TRUE;
3009
3010 /* CALL CREATE TERRITORY API */
3011 JTF_TERRITORY_PVT.create_territory (
3012 p_api_version_number => l_api_version_number,
3013 p_init_msg_list => l_init_msg_list,
3014 p_commit => l_commit,
3015 p_validation_level => FND_API.g_valid_level_NONE,
3016 x_return_status => x_return_status,
3017 x_msg_count => x_msg_count,
3018 x_msg_data => x_msg_data,
3019 p_terr_all_rec => l_terr_all_rec,
3020 p_terr_usgs_tbl => l_terr_usgs_tbl,
3021 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
3022 p_terr_qual_tbl => l_terr_qual_tbl,
3023 p_terr_values_tbl => l_terr_values_tbl,
3024 x_terr_id => x_terr_id,
3025 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
3026 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
3027 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
3028 x_terr_values_out_tbl => x_terr_values_out_tbl
3029
3030 );
3031
3032 /* BEGIN: SUCCESSFUL TERRITORY CREATION? */
3033 IF X_RETURN_STATUS = 'S' THEN
3034
3035 /* JDOCHERT: 01/08/03: ADDED TERR_GROUP_ID */
3036 UPDATE JTF_TERR_ALL
3037 SET TERR_GROUP_FLAG = 'Y'
3038 , CATCH_ALL_FLAG = 'N'
3039 , TERR_GROUP_ID = p_TERR_GROUP_ID(x)
3040 , NUM_WINNERS = p_NUM_WINNERS(x)
3041 WHERE TERR_ID = X_TERR_ID;
3042
3043 L_NACAT := X_TERR_ID;
3044
3045 IF G_Debug THEN
3046 WRITE_LOG(2,' Top level Geography territory created: TERR_ID# '||X_TERR_ID);
3047 END IF;
3048
3049 ELSE
3050 IF G_Debug THEN
3051 WRITE_LOG(2,'ERROR: PLACEHOLDER TERRITORY CREATION FAILED ' ||
3052 'FOR TERRITORY_GROUP_ID# ' || p_TERR_GROUP_ID(x));
3053 X_MSG_DATA := FND_MSG_PUB.GET(1, FND_API.G_FALSE);
3054 WRITE_LOG(2,X_MSG_DATA);
3055 END IF;
3056
3057 END IF;
3058 /* END: SUCCESSFUL TERRITORY CREATION? */
3059
3060 /****************************************************************/
3061 /* (4) START: CREATE Territories for all geo territory */
3062 /****************************************************************/
3063
3064 FOR geo_terr IN geo_territories(p_terr_group_id(x)) LOOP
3065
3066 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
3067 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
3068 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
3069 l_terr_values_tbl:=l_terr_values_empty_tbl;
3070 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
3071 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
3072
3073 L_TERR_ALL_REC.TERR_ID := NULL;
3074 l_terr_all_rec.LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3075 l_terr_all_rec.LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3076 l_terr_all_rec.CREATION_DATE := p_CREATION_DATE(x);
3077 l_terr_all_rec.CREATED_BY := p_CREATED_BY(x);
3078 l_terr_all_rec.LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3079 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
3080 l_terr_all_rec.NAME := geo_terr.geo_terr_name || ' ' || geo_terr.geo_territory_id;
3081 l_terr_all_rec.start_date_active := p_active_from_date(x);
3082 l_terr_all_rec.end_date_active := p_active_to_date(x);
3083 l_terr_all_rec.PARENT_TERRITORY_ID := l_nacat;
3084 l_terr_all_rec.RANK := p_RANK(x) + 10;
3085 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
3086 l_terr_all_rec.TEMPLATE_FLAG := 'N';
3087 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
3088 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
3089 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
3090 l_terr_all_rec.DESCRIPTION := geo_terr.geo_terr_name;
3091 l_terr_all_rec.UPDATE_FLAG := 'N';
3092 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
3093 l_terr_all_rec.ORG_ID := p_org_id(x);
3094 l_terr_all_rec.NUM_WINNERS := NULL ;
3095
3096 /* Oracle Sales and Telesales Usage */
3097
3098 SELECT JTF_TERR_USGS_S.NEXTVAL
3099 INTO l_terr_usg_id
3100 FROM DUAL;
3101
3102 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
3103 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3104 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3105 l_terr_usgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
3106 l_terr_usgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
3107 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3108 l_terr_usgs_tbl(1).TERR_ID := NULL;
3109 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
3110 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
3111
3112 i:=0;
3113
3114 /* BEGIN: For each Access Type defined for the Territory Group */
3115
3116 FOR acctype IN get_NON_OVLY_geo_trans( geo_terr.geo_territory_id ) LOOP
3117
3118 i:=i+1;
3119
3120 /* ACCOUNT TRANSACTION TYPE */
3121
3122 IF acctype.access_type='ACCOUNT' THEN
3123
3124 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3125 INTO l_terr_qtype_usg_id
3126 FROM DUAL;
3127
3128 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3129 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3130 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3131 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
3132 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
3133 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3134 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
3135 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1001;
3136 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
3137
3138 /* LEAD TRANSACTION TYPE */
3139 ELSIF acctype.access_type='LEAD' THEN
3140
3141 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3142 INTO l_terr_qtype_usg_id
3143 FROM DUAL;
3144
3145 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3146 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3147 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3148 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
3149 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
3150 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3151 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
3152 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
3153 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
3154
3155 /* OPPORTUNITY TRANSACTION TYPE */
3156 ELSIF acctype.access_type='OPPORTUNITY' THEN
3157
3158 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3159 INTO l_terr_qtype_usg_id
3160 FROM DUAL;
3161
3162 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3163 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3164 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3165 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
3166 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
3167 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3168 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
3169 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1003;
3170 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
3171
3172 END IF;
3173
3174 END LOOP; /* end for acctype in get_NON_OVLY_geo_trans */
3175
3176 /*
3177 ** get Postal Code Mapping rules, to use as territory definition qualifier values
3178 */
3179
3180 j := 0;
3181 K := 0;
3182
3183 l_prev_qual_usg_id:=1;
3184
3185 FOR gval IN geo_values( geo_terr.geo_territory_id ) LOOP
3186
3187 IF l_prev_qual_usg_id <> gval.qual_usg_id THEN
3188
3189 j:=j+1;
3190
3191 SELECT JTF_TERR_QUAL_S.NEXTVAL
3192 INTO l_terr_qual_id
3193 FROM DUAL;
3194
3195 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
3196 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3197 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3198 l_terr_qual_tbl(j).CREATION_DATE := p_CREATION_DATE(x);
3199 l_terr_qual_tbl(j).CREATED_BY := p_CREATED_BY(x);
3200 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3201 l_terr_qual_tbl(j).TERR_ID := NULL;
3202 l_terr_qual_tbl(j).QUAL_USG_ID := gval.qual_usg_id;
3203 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
3204 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
3205 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
3206 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
3207 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
3208 l_prev_qual_usg_id := gval.qual_usg_id;
3209
3210 END IF;
3211
3212 k:=k+1;
3213
3214 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
3215 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_UPDATED_BY(x);
3216 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_UPDATE_DATE(x);
3217 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
3218 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
3219 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_UPDATE_LOGIN(x);
3220 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
3221 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
3222 l_terr_values_tbl(k).COMPARISON_OPERATOR := gval.COMPARISON_OPERATOR;
3223 l_terr_values_tbl(k).LOW_VALUE_CHAR := gval.value1_char;
3224 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
3225 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
3226 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
3227 l_terr_values_tbl(k).VALUE_SET := NULL;
3228 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
3229 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
3230 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
3231 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
3232 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
3233 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
3234 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
3235 l_terr_values_tbl(k).qualifier_tbl_index := j;
3236
3237 END LOOP; /* end FOR gval IN geo_values */
3238
3239 l_init_msg_list := FND_API.G_TRUE;
3240
3241 IF l_prev_qual_usg_id <> 1 THEN -- geography territory values are there if this condition is true
3242 JTF_TERRITORY_PVT.create_territory (
3243 p_api_version_number => l_api_version_number,
3244 p_init_msg_list => l_init_msg_list,
3245 p_commit => l_commit,
3246 p_validation_level => FND_API.g_valid_level_NONE,
3247 x_return_status => x_return_status,
3248 x_msg_count => x_msg_count,
3249 x_msg_data => x_msg_data,
3250 p_terr_all_rec => l_terr_all_rec,
3251 p_terr_usgs_tbl => l_terr_usgs_tbl,
3252 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
3253 p_terr_qual_tbl => l_terr_qual_tbl,
3254 p_terr_values_tbl => l_terr_values_tbl,
3255 x_terr_id => x_terr_id,
3256 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
3257 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
3258 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
3259 x_terr_values_out_tbl => x_terr_values_out_tbl
3260
3261 );
3262
3263 /* BEGIN: Successful Territory creation? */
3264 IF x_return_status = 'S' THEN
3265
3266 -- JDOCHERT: 01/08/03: Added p_terr_group_rec_ID and CATCH_ALL_FLAG
3267 -- and NAMED_ACCOUNT_FLAG and p_terr_group_rec_ACCOUNT_ID
3268
3269 UPDATE JTF_TERR_ALL
3270 SET TERR_GROUP_FLAG = 'Y'
3271 , TERR_GROUP_ID = p_terr_group_id(x)
3272 , CATCH_ALL_FLAG = 'N'
3273 , GEO_TERR_FLAG = 'Y'
3274 , GEO_TERRITORY_ID = geo_terr.geo_territory_id
3275 WHERE terr_id = x_terr_id;
3276
3277 l_init_msg_list :=FND_API.G_TRUE;
3278 i := 0;
3279 a := 0;
3280
3281 FOR tran_type IN role_interest_nonpi(p_Terr_gROUP_ID(x)) LOOP
3282
3283 FOR rsc IN terr_resource(geo_terr.geo_territory_id,tran_type.role_code) LOOP
3284
3285 i := i+1;
3286
3287 SELECT JTF_TERR_RSC_S.NEXTVAL
3288 INTO l_terr_rsc_id
3289 FROM DUAL;
3290
3291 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
3292 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
3293 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
3294 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
3295 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
3296 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
3297 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
3298 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
3299 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
3300 l_TerrRsc_Tbl(i).ROLE := tran_type.role_code;
3301 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
3302 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
3303 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
3304 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
3305 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
3306 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
3307
3308 FOR rsc_acc IN NON_OVLY_role_access(p_terr_group_id(x), tran_type.role_code) LOOP
3309 a := a+1;
3310
3311 /* ACCOUNT ACCESS TYPE */
3312 IF (rsc_acc.access_type= 'ACCOUNT') THEN
3313
3314 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
3315 INTO l_terr_rsc_access_id
3316 FROM DUAL;
3317
3318 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
3319 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
3320 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
3321 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
3322 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
3323 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
3324 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
3325 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'ACCOUNT';
3326 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
3327 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
3328
3329 /* OPPORTUNITY ACCESS TYPE */
3330 ELSIF rsc_acc.access_type= 'OPPORTUNITY' THEN
3331
3332 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
3333 INTO l_terr_rsc_access_id
3334 FROM DUAL;
3335
3336 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
3337 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
3338 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
3339 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
3340 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
3341 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
3342 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
3343 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
3344 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
3345 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
3346
3347 /* LEAD ACCESS TYPE */
3348 ELSIF rsc_acc.access_type= 'LEAD' THEN
3349
3350 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
3351 INTO l_terr_rsc_access_id
3352 FROM DUAL;
3353
3354 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
3355 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
3356 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
3357 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
3358 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
3359 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
3360 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
3361 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
3362 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
3363 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
3364 END IF;
3365 END LOOP; /* FOR rsc_acc in NON_OVLY_role_access */
3366
3367 END LOOP; /* FOR rsc in resource_grp */
3368
3369 END LOOP;/* FOR tran_type in role_interest_nonpi */
3370
3371 l_init_msg_list :=FND_API.G_TRUE;
3372
3373 Jtf_Territory_Resource_Pvt.create_terrresource (
3374 p_api_version_number => l_Api_Version_Number,
3375 p_init_msg_list => l_Init_Msg_List,
3376 p_commit => l_Commit,
3377 p_validation_level => FND_API.g_valid_level_NONE,
3378 x_return_status => x_Return_Status,
3379 x_msg_count => x_Msg_Count,
3380 x_msg_data => x_msg_data,
3381 p_terrrsc_tbl => l_TerrRsc_tbl,
3382 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
3383 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
3384 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
3385 );
3386
3387 IF x_Return_Status='S' THEN
3388 IF G_Debug THEN
3389 write_log(2,'Resource created for Geo territory # ' ||x_terr_id);
3390 END IF;
3391 ELSE
3392 IF G_Debug THEN
3393 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
3394 write_log(2,x_msg_data);
3395 write_log(2, ' Failed in resource creation for Geo territory # ' || x_terr_id);
3396 END IF;
3397 END IF;
3398
3399 ELSE
3400 IF G_Debug THEN
3401 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
3402 write_log(2,SUBSTR(x_msg_data,1,254));
3403 END IF;
3404 END IF; /* END: Successful Territory creation? */
3405 END IF; /* end if l_prev_qual_usg_id <> 1 */
3406
3407 END LOOP; /* end for geo_terr in geo_territories */
3408
3409 END IF; /* end IF (l_na_count > 0) */
3410
3411 /********************************************************/
3412 /* delete the role and access */
3413 /********************************************************/
3414
3415 IF l_ovnon_flag = 'Y' THEN
3416 FOR i IN l_overnon_role_tbl.first.. l_overnon_role_tbl.last LOOP
3417 DELETE FROM jtf_tty_terr_grp_roles
3418 WHERE TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
3419
3420 DELETE FROM jtf_tty_role_access
3421 WHERE TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
3422 END LOOP;
3423 END IF;
3424
3425 /*********************************************************************/
3426 /*********************************************************************/
3427 /************** OVERLAY TERRITORY CREATION ***************************/
3428 /*********************************************************************/
3429 /*********************************************************************/
3430
3431 /* if any role with PI and Account access and no non pi role exist */
3432 /* we need to create a new branch with geography territory */
3433 /* OVERLAY BRANCH */
3434
3435 BEGIN
3436
3437 SELECT COUNT( DISTINCT b.role_code )
3438 INTO l_pi_count
3439 FROM jtf_rs_roles_vl r
3440 , jtf_tty_role_prod_int a
3441 , jtf_tty_terr_grp_roles b
3442 WHERE r.role_code = b.role_code
3443 AND a.terr_group_role_id = b.terr_group_role_id
3444 AND b.terr_group_id = p_TERR_GROUP_ID(x)
3445 AND EXISTS (
3446 /* Geography territory exists with Salesperson with this role */
3447 SELECT NULL
3448 FROM jtf_tty_geo_terr_rsc grsc, jtf_tty_geo_terr gterr
3449 WHERE grsc.geo_territory_id = gterr.geo_territory_id
3450 AND gterr.terr_group_id = b.terr_group_id
3451 AND grsc.rsc_role_code = b.role_code )
3452 AND ROWNUM < 2;
3453
3454 EXCEPTION
3455 WHEN OTHERS THEN NULL;
3456 END;
3457
3458
3459 /* are there overlay roles, i.e., are there roles with Product
3460 ** Interests defined for this Territory Group */
3461
3462 IF l_pi_count > 0 THEN
3463
3464 /***************************************************************/
3465 /* (7) START: CREATE TOP-LEVEL TERRITORY FOR OVERLAY BRANCH OF */
3466 /* TERRITORY GROUP */
3467 /***************************************************************/
3468 FOR topt IN topterr(p_PARENT_TERR_ID(x)) LOOP
3469
3470 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
3471 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
3472 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
3473 l_terr_values_tbl:=l_terr_values_empty_tbl;
3474 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
3475 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
3476
3477 l_terr_all_rec.TERR_ID := NULL;
3478 l_terr_all_rec.LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3479 l_terr_all_rec.LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3480 l_terr_all_rec.CREATION_DATE := p_CREATION_DATE(x);
3481 l_terr_all_rec.CREATED_BY := p_CREATED_BY(x);
3482 l_terr_all_rec.LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3483 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
3484 l_terr_all_rec.NAME := p_terr_group_name(x) || ' (OVERLAY)';
3485 l_terr_all_rec.start_date_active := p_active_from_date(x);
3486 l_terr_all_rec.end_date_active := p_active_to_date(x);
3487 l_terr_all_rec.PARENT_TERRITORY_ID := topt.PARENT_TERRITORY_ID;
3488 l_terr_all_rec.RANK := topt.RANK;
3489 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
3490 l_terr_all_rec.TEMPLATE_FLAG := 'N';
3491 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
3492 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
3493 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
3494 l_terr_all_rec.DESCRIPTION := topt.DESCRIPTION;
3495 l_terr_all_rec.UPDATE_FLAG := 'N';
3496 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
3497 l_terr_all_rec.ORG_ID := p_ORG_ID(x);
3498 l_terr_all_rec.NUM_WINNERS := l_pi_count ;
3499
3500 /* ORACLE SALES AND TELESALES USAGE */
3501
3502 SELECT JTF_TERR_USGS_S.NEXTVAL
3503 INTO l_terr_usg_id
3504 FROM DUAL;
3505
3506 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
3507 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3508 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3509 l_terr_usgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
3510 l_terr_usgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
3511 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3512 l_terr_usgs_tbl(1).TERR_ID := NULL;
3513 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
3514 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
3515
3516 /* LEAD TRANSACTION TYPE */
3517 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3518 INTO l_terr_qtype_usg_id
3519 FROM DUAL;
3520
3521 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3522 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3523 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3524 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
3525 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
3526 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3527 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
3528 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1002;
3529 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_org_id(x);
3530
3531 /* OPPORTUNITY TRANSACTION TYPE */
3532 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3533 INTO l_terr_qtype_usg_id
3534 FROM DUAL;
3535
3536 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3537 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3538 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3539 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_CREATION_DATE(x);
3540 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_CREATED_BY(x);
3541 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3542 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
3543 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1003;
3544 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_org_id(x);
3545
3546 /*
3547 ** get Top-Level Parent's Qualifier and values and
3548 ** aad them to Overlay branch top-level territory
3549 */
3550
3551 j:=0;
3552 k:=0;
3553
3554 l_prev_qual_usg_id:=1;
3555
3556 FOR csr_qual IN csr_get_qual ( topt.terr_id ) LOOP
3557
3558 j:=j+1;
3559
3560 SELECT JTF_TERR_QUAL_S.NEXTVAL
3561 INTO l_terr_qual_id
3562 FROM DUAL;
3563
3564 /* Top_level Parent's Qualifier */
3565 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
3566 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3567 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3568 l_terr_qual_tbl(j).CREATION_DATE := p_CREATION_DATE(x);
3569 l_terr_qual_tbl(j).CREATED_BY := p_CREATED_BY(x);
3570 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3571 l_terr_qual_tbl(j).TERR_ID := NULL;
3572 l_terr_qual_tbl(j).QUAL_USG_ID := csr_qual.qual_usg_id;
3573 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
3574 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'Y';
3575 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
3576 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
3577 l_terr_qual_tbl(j).ORG_ID := p_ORG_ID(x);
3578
3579 FOR csr_qual_val IN csr_get_qual_val (csr_qual.terr_qual_id) LOOP
3580
3581 k:=k+1;
3582
3583 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
3584 l_terr_values_tbl(k).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3585 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3586 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
3587 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
3588 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3589 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
3590 l_terr_values_tbl(k).INCLUDE_FLAG := csr_qual_val.INCLUDE_FLAG;
3591 l_terr_values_tbl(k).COMPARISON_OPERATOR := csr_qual_val.COMPARISON_OPERATOR;
3592 l_terr_values_tbl(k).LOW_VALUE_CHAR := csr_qual_val.LOW_VALUE_CHAR;
3593 l_terr_values_tbl(k).HIGH_VALUE_CHAR := csr_qual_val.HIGH_VALUE_CHAR;
3594 l_terr_values_tbl(k).LOW_VALUE_NUMBER := csr_qual_val.LOW_VALUE_NUMBER;
3595 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := csr_qual_val.HIGH_VALUE_NUMBER;
3596 l_terr_values_tbl(k).VALUE_SET := csr_qual_val.VALUE_SET;
3597 l_terr_values_tbl(k).INTEREST_TYPE_ID := csr_qual_val.INTEREST_TYPE_ID;
3598 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := csr_qual_val.PRIMARY_INTEREST_CODE_ID;
3599 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := csr_qual_val.SECONDARY_INTEREST_CODE_ID;
3600 l_terr_values_tbl(k).CURRENCY_CODE := csr_qual_val.CURRENCY_CODE;
3601 l_terr_values_tbl(k).ID_USED_FLAG := csr_qual_val.ID_USED_FLAG;
3602 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := csr_qual_val.LOW_VALUE_CHAR_ID;
3603 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
3604 l_terr_values_tbl(k).qualifier_tbl_index := j;
3605
3606 END LOOP;/* csr_qual_val IN csr_get_qual_val */
3607
3608 END LOOP; /* csr_qual IN csr_get_qual */
3609
3610 l_init_msg_list :=FND_API.G_TRUE;
3611
3612 JTF_TERRITORY_PVT.create_territory (
3613 p_api_version_number => l_api_version_number,
3614 p_init_msg_list => l_init_msg_list,
3615 p_commit => l_commit,
3616 p_validation_level => FND_API.g_valid_level_NONE,
3617 x_return_status => x_return_status,
3618 x_msg_count => x_msg_count,
3619 x_msg_data => x_msg_data,
3620 p_terr_all_rec => l_terr_all_rec,
3621 p_terr_usgs_tbl => l_terr_usgs_tbl,
3622 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
3623 p_terr_qual_tbl => l_terr_qual_tbl,
3624 p_terr_values_tbl => l_terr_values_tbl,
3625 x_terr_id => x_terr_id,
3626 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
3627 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
3628 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
3629 x_terr_values_out_tbl => x_terr_values_out_tbl
3630
3631 );
3632
3633 IF x_return_status = 'S' THEN
3634
3635 -- JDOCHERT: 01/08/03: Added p_terr_group_rec.ID
3636 UPDATE JTF_TERR_ALL
3637 SET terr_group_FLAG = 'Y'
3638 , terr_group_ID = p_TERR_GROUP_ID(x)
3639 WHERE terr_id = x_terr_id;
3640
3641 END IF;
3642
3643 l_overlay_top :=x_terr_id;
3644
3645 END LOOP;/* end FOR topt in topterr */
3646
3647 /***************************************************************/
3648 /* (7) END: CREATE TOP-LEVEL TERRITORY FOR OVERLAY BRANCH OF */
3649 /* TERRITORY GROUP */
3650 /***************************************************************/
3651
3652 /***************************************************************/
3653 /* (8) START: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
3654 /***************************************************************/
3655
3656 FOR overlayterr IN get_OVLY_geographies(p_terr_group_id(x)) LOOP
3657
3658 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
3659 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
3660 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
3661 l_terr_values_tbl:=l_terr_values_empty_tbl;
3662 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
3663 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
3664
3665 l_terr_all_rec.TERR_ID := NULL;
3666 l_terr_all_rec.LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3667 l_terr_all_rec.LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3668 l_terr_all_rec.CREATION_DATE := p_CREATION_DATE(x);
3669 l_terr_all_rec.CREATED_BY := p_CREATED_BY(x);
3670 l_terr_all_rec.LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3671 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
3672 l_terr_all_rec.NAME := overlayterr.geo_terr_name || ' (OVERLAY)';
3673 l_terr_all_rec.start_date_active := p_active_from_date(x);
3674 l_terr_all_rec.end_date_active := p_active_to_date(x);
3675 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay_top;
3676 l_terr_all_rec.RANK := p_RANK(x) + 10;
3677 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
3678 l_terr_all_rec.TEMPLATE_FLAG := 'N';
3679 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
3680 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
3681 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
3682 l_terr_all_rec.DESCRIPTION := overlayterr.geo_terr_name || ' (OVERLAY)';
3683 l_terr_all_rec.UPDATE_FLAG := 'N';
3684 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
3685 l_terr_all_rec.ORG_ID := p_ORG_ID(x);
3686 l_terr_all_rec.NUM_WINNERS := NULL ;
3687
3688
3689 SELECT JTF_TERR_USGS_S.NEXTVAL
3690 INTO l_terr_usg_id
3691 FROM DUAL;
3692
3693 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
3694 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3695 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3696 l_terr_usgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
3697 l_terr_usgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
3698 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3699 l_terr_usgs_tbl(1).TERR_ID := NULL;
3700 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
3701 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
3702
3703 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3704 INTO l_terr_qtype_usg_id
3705 FROM DUAL;
3706
3707 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3708 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3709 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3710 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
3711 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
3712 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3713 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
3714 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1002;
3715 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_org_id(x);
3716
3717 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3718 INTO l_terr_qtype_usg_id
3719 FROM DUAL;
3720
3721 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3722 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3723 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3724 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_CREATION_DATE(x);
3725 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_CREATED_BY(x);
3726 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3727 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
3728 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1003;
3729 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_org_id(x);
3730
3731 SELECT JTF_TERR_QUAL_S.NEXTVAL
3732 INTO l_terr_qual_id
3733 FROM DUAL;
3734
3735 j:=0;
3736 K:=0;
3737 l_prev_qual_usg_id:=1;
3738
3739 FOR gval IN geo_values(overlayterr.geo_territory_id ) LOOP
3740
3741 IF l_prev_qual_usg_id <> gval.qual_usg_id THEN
3742
3743 j:=j+1;
3744 SELECT JTF_TERR_QUAL_S.NEXTVAL
3745 INTO l_terr_qual_id
3746 FROM DUAL;
3747
3748 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
3749 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3750 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3751 l_terr_qual_tbl(j).CREATION_DATE := p_CREATION_DATE(x);
3752 l_terr_qual_tbl(j).CREATED_BY := p_CREATED_BY(x);
3753 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3754 l_terr_qual_tbl(j).TERR_ID := NULL;
3755 l_terr_qual_tbl(j).QUAL_USG_ID := gval.qual_usg_id;
3756 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
3757 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
3758 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
3759 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
3760 l_terr_qual_tbl(j).ORG_ID := p_ORG_ID(x);
3761 l_prev_qual_usg_id := gval.qual_usg_id;
3762 END IF; /* l_prev_qual_usg_id */
3763
3764 k:=k+1;
3765
3766 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
3767 l_terr_values_tbl(k).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3768 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3769 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
3770 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
3771 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3772 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
3773 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
3774 l_terr_values_tbl(k).COMPARISON_OPERATOR := gval.COMPARISON_OPERATOR;
3775 l_terr_values_tbl(k).LOW_VALUE_CHAR := gval.value1_char;
3776 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
3777 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
3778 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
3779 l_terr_values_tbl(k).VALUE_SET := NULL;
3780 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
3781 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
3782 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
3783 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
3784 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
3785 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
3786 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
3787 l_terr_values_tbl(k).qualifier_tbl_index := j;
3788
3789 END LOOP; /* gval */
3790
3791 l_init_msg_list :=FND_API.G_TRUE;
3792
3793 JTF_TERRITORY_PVT.create_territory (
3794 p_api_version_number => l_api_version_number,
3795 p_init_msg_list => l_init_msg_list,
3796 p_commit => l_commit,
3797 p_validation_level => FND_API.g_valid_level_NONE,
3798 x_return_status => x_return_status,
3799 x_msg_count => x_msg_count,
3800 x_msg_data => x_msg_data,
3801 p_terr_all_rec => l_terr_all_rec,
3802 p_terr_usgs_tbl => l_terr_usgs_tbl,
3803 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
3804 p_terr_qual_tbl => l_terr_qual_tbl,
3805 p_terr_values_tbl => l_terr_values_tbl,
3806 x_terr_id => x_terr_id,
3807 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
3808 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
3809 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
3810 x_terr_values_out_tbl => x_terr_values_out_tbl
3811
3812 );
3813
3814 IF x_return_status = 'S' THEN
3815
3816 UPDATE JTF_TERR_ALL
3817 SET TERR_GROUP_FLAG = 'Y'
3818 , TERR_GROUP_ID = p_terr_group_id(x)
3819 , CATCH_ALL_FLAG = 'N'
3820 , GEO_TERR_FLAG = 'Y'
3821 , GEO_TERRITORY_ID = overlayterr.geo_territory_id
3822 WHERE terr_id = x_terr_id;
3823
3824 l_overlay:=x_terr_id;
3825
3826 FOR pit IN role_pi(p_terr_group_id(x), overlayterr.geo_territory_id) LOOP
3827
3828 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
3829 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
3830 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
3831 l_terr_values_tbl:=l_terr_values_empty_tbl;
3832 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
3833 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
3834
3835 l_role_counter := l_role_counter + 1;
3836
3837 l_terr_all_rec.TERR_ID := overlayterr.geo_territory_id * -30 * l_role_counter;
3838 l_terr_all_rec.LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3839 l_terr_all_rec.LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3840 l_terr_all_rec.CREATION_DATE := p_CREATION_DATE(x);
3841 l_terr_all_rec.CREATED_BY := p_CREATED_BY(x);
3842 l_terr_all_rec.LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3843 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
3844 l_terr_all_rec.NAME := overlayterr.geo_terr_name || ': ' || pit.role_name || ' (OVERLAY)';
3845 l_terr_all_rec.start_date_active := p_active_from_date(x);
3846 l_terr_all_rec.end_date_active := p_active_to_date(x);
3847 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay;
3848 l_terr_all_rec.RANK := p_RANK(x)+10;
3849 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
3850 l_terr_all_rec.TEMPLATE_FLAG := 'N';
3851 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
3852 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
3853 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
3854 l_terr_all_rec.DESCRIPTION := overlayterr.geo_terr_name || ': ' || pit.role_name || ' (OVERLAY)';
3855 l_terr_all_rec.UPDATE_FLAG := 'N';
3856 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
3857 l_terr_all_rec.ORG_ID := p_ORG_ID(x);
3858 l_terr_all_rec.NUM_WINNERS := NULL ;
3859
3860 SELECT JTF_TERR_USGS_S.NEXTVAL
3861 INTO l_terr_usg_id
3862 FROM DUAL;
3863
3864 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
3865 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3866 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3867 l_terr_usgs_tbl(1).CREATION_DATE := p_CREATION_DATE(x);
3868 l_terr_usgs_tbl(1).CREATED_BY := p_CREATED_BY(x);
3869 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3870 l_terr_usgs_tbl(1).TERR_ID := NULL;
3871 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
3872 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
3873
3874 i := 0;
3875 K:= 0;
3876
3877 FOR acc_type IN role_access(p_terr_group_id(x),pit.role_code) LOOP
3878
3879 IF acc_type.access_type= 'OPPORTUNITY' THEN
3880 i:=i+1;
3881
3882 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3883 INTO l_terr_qtype_usg_id
3884 FROM DUAL;
3885
3886 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3887 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3888 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3889 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
3890 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
3891 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3892 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
3893 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1003;
3894 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
3895
3896 SELECT JTF_TERR_QUAL_S.NEXTVAL
3897 INTO l_terr_qual_id
3898 FROM DUAL;
3899
3900 /* opp expected purchase */
3901
3902 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
3903 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3904 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3905 l_terr_qual_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
3906 l_terr_qual_tbl(i).CREATED_BY := p_CREATED_BY(x);
3907 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3908 l_terr_qual_tbl(i).TERR_ID := NULL;
3909 l_terr_qual_tbl(i).QUAL_USG_ID := g_opp_qual_usg_id;
3910 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
3911 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
3912 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
3913 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
3914 l_terr_qual_tbl(i).ORG_ID := p_ORG_ID(x);
3915
3916 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
3917
3918 k:=k+1;
3919 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
3920 l_terr_values_tbl(k).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3921 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3922 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
3923 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
3924 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3925 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
3926 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
3927 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
3928 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
3929 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
3930 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
3931 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
3932 l_terr_values_tbl(k).VALUE_SET := NULL;
3933 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
3934 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
3935 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
3936 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
3937 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
3938 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
3939 l_terr_values_tbl(k).qualifier_tbl_index := i;
3940
3941 IF (g_prod_cat_enabled) THEN
3942 l_terr_values_tbl(k).value1_id := qval.product_category_id;
3943 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
3944 ELSE
3945 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
3946 END IF;
3947
3948 END LOOP; /* qval */
3949
3950 ELSIF acc_type.access_type= 'LEAD' THEN
3951
3952 i:=i+1;
3953 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
3954 INTO l_terr_qtype_usg_id
3955 FROM DUAL;
3956
3957 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
3958 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3959 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3960 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
3961 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_CREATED_BY(x);
3962 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3963 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
3964 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
3965 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
3966
3967 SELECT JTF_TERR_QUAL_S.NEXTVAL
3968 INTO l_terr_qual_id
3969 FROM DUAL;
3970
3971 /* lead expected purchase */
3972 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
3973 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3974 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3975 l_terr_qual_tbl(i).CREATION_DATE := p_CREATION_DATE(x);
3976 l_terr_qual_tbl(i).CREATED_BY := p_CREATED_BY(x);
3977 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3978 l_terr_qual_tbl(i).TERR_ID := NULL;
3979 l_terr_qual_tbl(i).QUAL_USG_ID := g_lead_qual_usg_id;
3980 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
3981 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
3982 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
3983 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
3984 l_terr_qual_tbl(i).ORG_ID := p_ORG_ID(x);
3985
3986 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
3987
3988 k:=k+1;
3989
3990 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
3991 l_terr_values_tbl(k).LAST_UPDATED_BY := p_LAST_UPDATED_BY(x);
3992 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_LAST_UPDATE_DATE(x);
3993 l_terr_values_tbl(k).CREATED_BY := p_CREATED_BY(x);
3994 l_terr_values_tbl(k).CREATION_DATE := p_CREATION_DATE(x);
3995 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_LAST_UPDATE_LOGIN(x);
3996 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
3997 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
3998 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
3999 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
4000 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
4001 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
4002 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
4003 l_terr_values_tbl(k).VALUE_SET := NULL;
4004 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
4005 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
4006 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
4007 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
4008 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
4009 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
4010 l_terr_values_tbl(k).qualifier_tbl_index := i;
4011
4012 IF (g_prod_cat_enabled) THEN
4013 l_terr_values_tbl(k).value1_id := qval.product_category_id;
4014 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
4015 ELSE
4016 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
4017 END IF;
4018
4019 END LOOP; /* qval */
4020
4021 ELSE
4022 IF G_Debug THEN
4023 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||p_terr_group_id(x));
4024 END IF;
4025 END IF;
4026
4027 END LOOP; /* end for acc_type in role_access */
4028
4029 l_init_msg_list :=FND_API.G_TRUE;
4030
4031 JTF_TERRITORY_PVT.create_territory (
4032 p_api_version_number => l_api_version_number,
4033 p_init_msg_list => l_init_msg_list,
4034 p_commit => l_commit,
4035 p_validation_level => FND_API.g_valid_level_NONE,
4036 x_return_status => x_return_status,
4037 x_msg_count => x_msg_count,
4038 x_msg_data => x_msg_data,
4039 p_terr_all_rec => l_terr_all_rec,
4040 p_terr_usgs_tbl => l_terr_usgs_tbl,
4041 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
4042 p_terr_qual_tbl => l_terr_qual_tbl,
4043 p_terr_values_tbl => l_terr_values_tbl,
4044 x_terr_id => x_terr_id,
4045 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
4046 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
4047 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
4048 x_terr_values_out_tbl => x_terr_values_out_tbl
4049
4050 );
4051
4052 IF (x_return_status = 'S') THEN
4053
4054 UPDATE JTF_TERR_ALL
4055 SET TERR_GROUP_FLAG = 'Y'
4056 , TERR_GROUP_ID = p_terr_group_id(x)
4057 , CATCH_ALL_FLAG = 'N'
4058 , GEO_TERR_FLAG = 'Y'
4059 , GEO_TERRITORY_ID = overlayterr.geo_territory_id
4060 WHERE terr_id = x_terr_id;
4061
4062 IF G_Debug THEN
4063 write_log(2,' OVERLAY PI Territory Created = '||l_terr_all_rec.NAME);
4064 END IF;
4065
4066 ELSE
4067 IF G_Debug THEN
4068 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
4069 write_log(2,x_msg_data);
4070 END IF;
4071
4072 END IF; /* x_return_status */
4073
4074 i:=0;
4075
4076 FOR rsc IN terr_resource(overlayterr.geo_territory_id, pit.role_code) LOOP
4077
4078 i:=i+1;
4079
4080 SELECT JTF_TERR_RSC_S.NEXTVAL
4081 INTO l_terr_rsc_id
4082 FROM DUAL;
4083
4084 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
4085 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
4086 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
4087 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
4088 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
4089 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
4090 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
4091 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
4092 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
4093 l_TerrRsc_Tbl(i).ROLE := pit.role_code;
4094 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
4095 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
4096 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
4097 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
4098 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
4099 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
4100
4101 a := 0;
4102
4103 FOR rsc_acc IN role_access(p_terr_group_id(x),pit.role_code) LOOP
4104
4105 IF rsc_acc.access_type= 'OPPORTUNITY' THEN
4106
4107 a := a+1;
4108
4109 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
4110 INTO l_terr_rsc_access_id
4111 FROM DUAL;
4112
4113 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
4114 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
4115 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
4116 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
4117 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
4118 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
4119 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
4120 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
4121 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
4122 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
4123
4124 ELSIF rsc_acc.access_type= 'LEAD' THEN
4125
4126 a := a+1;
4127
4128 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
4129 INTO l_terr_rsc_access_id
4130 FROM DUAL;
4131
4132 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
4133 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
4134 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
4135 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
4136 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
4137 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
4138 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
4139 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
4140 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
4141 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
4142 END IF;
4143
4144 END LOOP; /* rsc_acc in role_access */
4145
4146 END LOOP; /* rsc in resource_grp */
4147
4148 l_init_msg_list :=FND_API.G_TRUE;
4149
4150 Jtf_Territory_Resource_Pvt.create_terrresource (
4151 p_api_version_number => l_Api_Version_Number,
4152 p_init_msg_list => l_Init_Msg_List,
4153 p_commit => l_Commit,
4154 p_validation_level => FND_API.g_valid_level_NONE,
4155 x_return_status => x_Return_Status,
4156 x_msg_count => x_Msg_Count,
4157 x_msg_data => x_msg_data,
4158 p_terrrsc_tbl => l_TerrRsc_tbl,
4159 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
4160 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
4161 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
4162 );
4163
4164 IF x_Return_Status='S' THEN
4165 IF G_Debug THEN
4166 write_log(2,'Resource created for Product Interest OVERLAY Territory '|| l_terr_all_rec.NAME);
4167 END IF;
4168 ELSE
4169 IF G_Debug THEN
4170 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '|| x_terr_id);
4171 write_log(2,'Message_data '|| x_msg_data);
4172 END IF;
4173 END IF;
4174
4175 END LOOP; /* end for pit in role_pi */
4176
4177 ELSE
4178 IF G_Debug THEN
4179 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
4180 write_log(2,x_msg_data);
4181 write_log(2,'Failed in OVERLAY Territory Creation for Territory Group: ' ||
4182 p_terr_group_id(x) || ' : ' ||
4183 p_terr_group_name(x) );
4184 END IF;
4185 END IF; /* if (x_return_status = 'S' */
4186
4187 END LOOP; /* overlayterr in get_OVLY_geographies */
4188
4189 /***************************************************************/
4190 /* (8) END: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
4191 /***************************************************************/
4192
4193 END IF; /* l_pi_count*/
4194
4195 END LOOP; /* end FOR x in p_terr_group_id */
4196
4197
4198 EXCEPTION
4199 WHEN OTHERS THEN
4200 IF G_Debug THEN
4201 Write_Log(2, 'Error in procedure create_geo_terr_for_TG');
4202 END IF;
4203 IF (geo_territories%ISOPEN) THEN
4204 CLOSE geo_territories;
4205 END IF;
4206 IF (get_NON_OVLY_geo_trans%ISOPEN) THEN
4207 CLOSE get_NON_OVLY_geo_trans;
4208 END IF;
4209 IF (geo_values%ISOPEN) THEN
4210 CLOSE geo_values;
4211 END IF;
4212 IF (NON_OVLY_role_access%ISOPEN) THEN
4213 CLOSE NON_OVLY_role_access;
4214 END IF;
4215 IF (role_interest_nonpi%ISOPEN) THEN
4216 CLOSE role_interest_nonpi;
4217 END IF;
4218 IF (terr_resource%ISOPEN) THEN
4219 CLOSE terr_resource;
4220 END IF;
4221 IF (topterr%ISOPEN) THEN
4222 CLOSE topterr;
4223 END IF;
4224 IF (csr_get_qual%ISOPEN) THEN
4225 CLOSE csr_get_qual;
4226 END IF;
4227 IF (csr_get_qual_val%ISOPEN) THEN
4228 CLOSE csr_get_qual_val;
4229 END IF;
4230 IF (get_OVLY_geographies%ISOPEN) THEN
4231 CLOSE get_OVLY_geographies;
4232 END IF;
4233 IF (role_pi%ISOPEN) THEN
4234 CLOSE role_pi;
4235 END IF;
4236 IF (role_access%ISOPEN) THEN
4237 CLOSE role_access;
4238 END IF;
4239 IF (role_pi_interest%ISOPEN) THEN
4240 CLOSE role_pi_interest;
4241 END IF;
4242 IF (role_no_pi%ISOPEN) THEN
4243 CLOSE role_no_pi;
4244 END IF;
4245
4246 RAISE;
4247
4248
4249 END create_geo_terr_for_TG;
4250
4251 /*----------------------------------------------------------
4252 This procedure will create Named account and Overlay Territory
4253 for territory group account .
4254 ----------------------------------------------------------*/
4255 PROCEDURE create_na_terr_for_TGA(p_terr_grp_acct_id IN g_terr_group_account_id_tab
4256 ,p_terr_group_id IN g_terr_group_id_tab
4257 ,p_rank IN g_rank_tab
4258 ,p_active_from_date IN g_active_from_date_tab
4259 ,p_active_to_date IN g_active_to_date_tab
4260 ,p_matching_rule_code IN g_matching_rule_code_tab
4261 ,p_generate_catchall_flag IN g_generate_catchall_flag_tab
4262 ,p_created_by IN g_created_by_tab
4263 ,p_creation_date IN g_creation_date_tab
4264 ,p_last_updated_by IN g_last_updated_by_tab
4265 ,p_last_update_date IN g_last_update_date_tab
4266 ,p_last_update_login IN g_last_update_login_tab
4267 ,p_org_id IN g_org_id_tab
4268 ,p_terr_id IN g_terr_id_tab
4269 ,p_overlay_top IN g_terr_id_tab
4270 ,p_catchall_terr_id IN g_terr_id_tab
4271 ,p_change_type IN g_change_type_tab
4272 ,p_terr_attr_cat IN g_terr_attr_cat_tab
4273 ,p_terr_attribute1 IN g_terr_attribute_tab
4274 ,p_terr_attribute2 IN g_terr_attribute_tab
4275 ,p_terr_attribute3 IN g_terr_attribute_tab
4276 ,p_terr_attribute4 IN g_terr_attribute_tab
4277 ,p_terr_attribute5 IN g_terr_attribute_tab
4278 ,p_terr_attribute6 IN g_terr_attribute_tab
4279 ,p_terr_attribute7 IN g_terr_attribute_tab
4280 ,p_terr_attribute8 IN g_terr_attribute_tab
4281 ,p_terr_attribute9 IN g_terr_attribute_tab
4282 ,p_terr_attribute10 IN g_terr_attribute_tab
4283 ,p_terr_attribute11 IN g_terr_attribute_tab
4284 ,p_terr_attribute12 IN g_terr_attribute_tab
4285 ,p_terr_attribute13 IN g_terr_attribute_tab
4286 ,p_terr_attribute14 IN g_terr_attribute_tab
4287 ,p_terr_attribute15 IN g_terr_attribute_tab)
4288 IS
4289
4290 TYPE role_typ IS RECORD(
4291 grp_role_id NUMBER:=FND_API.G_MISS_NUM
4292 );
4293
4294 TYPE grp_role_tbl_type IS TABLE OF role_typ
4295 INDEX BY BINARY_INTEGER;
4296
4297 l_overnon_role_tbl grp_role_tbl_type;
4298 l_overnon_role_empty_tbl grp_role_tbl_type;
4299
4300 l_terr_qual_id NUMBER;
4301 l_terr_usg_id NUMBER;
4302 l_terr_qtype_usg_id NUMBER;
4303 l_qual_type_usg_id NUMBER;
4304 l_qual_type VARCHAR2(20);
4305 l_terr_rsc_id NUMBER;
4306 l_terr_rsc_access_id NUMBER;
4307 l_api_version_number CONSTANT NUMBER := 1.0;
4308 l_init_msg_list VARCHAR2(1);
4309 l_commit VARCHAR2(1);
4310 l_pi_count NUMBER := 0;
4311 l_prev_qual_usg_id NUMBER;
4312 l_role_counter NUMBER := 0;
4313 l_overlay NUMBER;
4314 l_id NUMBER;
4315 l_ovnon_flag VARCHAR2(1):='N';
4316 l_na_count NUMBER;
4317 l_terr_exists NUMBER;
4318 l_cust_count NUMBER;
4319
4320 x_return_status VARCHAR2(1);
4321 x_msg_count NUMBER;
4322 x_msg_data VARCHAR2(2000);
4323 x_terr_id NUMBER;
4324 l_error_msg VARCHAR2(200);
4325
4326 i NUMBER;
4327 j NUMBER;
4328 k NUMBER;
4329 l NUMBER;
4330 a NUMBER;
4331
4332 l_terr_all_rec JTF_TERRITORY_PVT.terr_all_rec_type;
4333 l_terr_usgs_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
4334 l_terr_qualtypeusgs_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
4335 l_terr_qual_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
4336 l_terr_values_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
4337
4338 l_terr_usgs_empty_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
4339 l_terr_qualtypeusgs_empty_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
4340 l_terr_qual_empty_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
4341 l_terr_values_empty_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
4342
4343 x_terr_usgs_out_tbl JTF_TERRITORY_PVT.terr_usgs_out_tbl_type;
4344 x_terr_qualtypeusgs_out_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_out_tbl_type;
4345 x_terr_qual_out_tbl JTF_TERRITORY_PVT.terr_qual_out_tbl_type;
4346 x_terr_values_out_tbl JTF_TERRITORY_PVT.terr_values_out_tbl_type;
4347
4348 l_TerrRsc_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type_wflex;
4349 l_TerrRsc_Access_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
4350
4351 l_TerrRsc_empty_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type_wflex;
4352 l_TerrRsc_Access_empty_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
4353
4354 x_TerrRsc_Out_Tbl Jtf_Territory_Resource_Pvt.TerrResource_out_tbl_type;
4355 x_TerrRsc_Access_Out_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_out_tbl_type;
4356
4357
4358 /* JDOCHERT: /05/29/03:
4359 ** Transaction Types for a NON-OVERLAY territory are
4360 ** determined by all salesteam members on this Named Account
4361 ** having Roles without Product Interests defined
4362 ** so there is no Overlay Territories to assign
4363 ** Leads and Opportunities. If all Roles have Product Interests
4364 ** then only ACCOUNT transaction type should
4365 ** be used in Non-Overlay Named Account definition
4366 */
4367 CURSOR get_NON_OVLY_na_trans(LP_terr_group_account_id NUMBER) IS
4368 SELECT ra.access_type
4369 FROM
4370 jtf_tty_named_acct_rsc nar
4371 , jtf_tty_terr_grp_accts tga
4372 , jtf_tty_terr_grp_roles tgr
4373 , jtf_tty_role_access ra
4374 WHERE tga.terr_group_account_id = nar.terr_group_account_id
4375 AND nar.terr_group_account_id = LP_terr_group_account_id
4376 AND tga.terr_group_id = tgr.terr_group_id
4377 AND nar.rsc_role_code = tgr.role_code
4378 AND ra.terr_group_role_id = tgr.terr_group_role_id
4379 AND ra.access_type IN ('ACCOUNT')
4380 UNION
4381 SELECT ra.access_type
4382 FROM
4383 jtf_tty_named_acct_rsc nar
4384 , jtf_tty_terr_grp_accts tga
4385 , jtf_tty_terr_grp_roles tgr
4386 , jtf_tty_role_access ra
4387 WHERE tga.terr_group_account_id = nar.terr_group_account_id
4388 AND nar.terr_group_account_id = LP_terr_group_account_id
4389 AND tga.terr_group_id = tgr.terr_group_id
4390 AND nar.rsc_role_code = tgr.role_code
4391 AND ra.terr_group_role_id = tgr.terr_group_role_id
4392 AND NOT EXISTS (
4393 SELECT NULL
4394 FROM jtf_tty_role_prod_int rpi
4395 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id );
4396
4397
4398 /* Access Types for a particular Role within a Territory Group */
4399 CURSOR role_access(l_terr_group_id NUMBER,l_role VARCHAR2) IS
4400 SELECT DISTINCT a.access_type
4401 FROM jtf_tty_role_access a
4402 , jtf_tty_terr_grp_roles b
4403 WHERE a.terr_group_role_id = b.terr_group_role_id
4404 AND b.terr_group_id = l_terr_group_id
4405 AND b.role_code = l_role
4406 ORDER BY a.access_type ;
4407
4408 /* Access Types for a particular Role within a Territory Group */
4409 CURSOR NON_OVLY_role_access( lp_terr_group_id NUMBER
4410 , lp_role VARCHAR2) IS
4411 SELECT DISTINCT a.access_type, a.trans_access_code
4412 FROM jtf_tty_role_access a
4413 , jtf_tty_terr_grp_roles b
4414 WHERE a.terr_group_role_id = b.terr_group_role_id
4415 AND b.terr_group_id = lp_terr_group_id
4416 AND b.role_code = lp_role
4417 AND NOT EXISTS (
4418 /* Product Interest does not exist for this role */
4419 SELECT NULL
4420 FROM jtf_tty_role_prod_int rpi
4421 WHERE rpi.terr_group_role_id = B.TERR_GROUP_ROLE_ID )
4422 ORDER BY a.access_type ;
4423
4424 /* Roles WITHOUT a Product Iterest defined */
4425 CURSOR role_interest_nonpi(l_terr_group_id NUMBER) IS
4426 SELECT b.role_code role_code
4427 --,a.interest_type_id
4428 ,b.terr_group_id
4429 FROM jtf_tty_role_prod_int a
4430 , jtf_tty_terr_grp_roles b
4431 WHERE a.terr_group_role_id(+) = b.terr_group_role_id
4432 AND b.terr_group_id = l_terr_group_id
4433 AND a.terr_group_role_id IS NULL
4434 ORDER BY b.role_code;
4435
4436 /* Roles WITH a Product Iterest defined */
4437 CURSOR role_pi( lp_terr_group_id NUMBER
4438 , lp_terr_group_account_id NUMBER) IS
4439 SELECT DISTINCT
4440 b.role_code role_code
4441 , r.role_name role_name
4442 FROM jtf_rs_roles_vl r
4443 , jtf_tty_role_prod_int a
4444 , jtf_tty_terr_grp_roles b
4445 WHERE r.role_code = b.role_code
4446 AND a.terr_group_role_id = b.terr_group_role_id
4447 AND b.terr_group_id = lp_terr_group_id
4448 AND EXISTS (
4449 /* Named Account exists with Salesperson with this role */
4450 SELECT NULL
4451 FROM jtf_tty_named_acct_rsc nar, jtf_tty_terr_grp_accts tga
4452 WHERE tga.terr_group_account_id = nar.terr_group_account_id
4453 AND nar.terr_group_account_id = lp_terr_group_account_id
4454 AND tga.terr_group_id = b.terr_group_id
4455 AND nar.rsc_role_code = b.role_code );
4456
4457 /* Product Interest for a Role */
4458 CURSOR role_pi_interest(l_terr_group_id NUMBER,l_role VARCHAR2) IS
4459 SELECT a.interest_type_id
4460 ,a.product_category_id
4461 ,a.product_category_set_id
4462 FROM jtf_tty_role_prod_int a
4463 , jtf_tty_terr_grp_roles b
4464 WHERE a.terr_group_role_id = b.terr_group_role_id
4465 AND b.terr_group_id = l_terr_group_id
4466 AND b.role_code = l_role;
4467
4468 CURSOR resource_grp(l_terr_group_acct_id NUMBER, l_role VARCHAR2) IS
4469 SELECT DISTINCT b.resource_id
4470 , b.rsc_group_id
4471 , b.rsc_resource_type
4472 , b.start_date
4473 , b.end_date
4474 , to_char(null) attribute_category
4475 , b.attribute1 attribute1
4476 , b.attribute2 attribute2
4477 , b.attribute3 attribute3
4478 , b.attribute4 attribute4
4479 , b.attribute5 attribute5
4480 , to_char(null) attribute6
4481 , to_char(null) attribute7
4482 , to_char(null) attribute8
4483 , to_char(null) attribute9
4484 , to_char(null) attribute10
4485 , to_char(null) attribute11
4486 , to_char(null) attribute12
4487 , to_char(null) attribute13
4488 , to_char(null) attribute14
4489 , to_char(null) attribute15
4490 FROM jtf_tty_terr_grp_accts a
4491 , jtf_tty_named_acct_rsc b
4492 WHERE a.terr_group_account_id = l_terr_group_acct_id
4493 AND a.terr_group_account_id = b.terr_group_account_id
4494 AND b.rsc_role_code = l_role;
4495
4496 /* Should Unassigned NAs go to Sales Manager or NA Catch-All? */
4497 -- WHERE c.dn_jnr_assigned_flag = 'Y';
4498
4499
4500 /* used for NAMED ACCOUNT territory creation for duns# and party# qualifier */
4501 CURSOR get_party_info(LP_terr_group_acct_id NUMBER, l_matching_rule_code VARCHAR2) IS
4502 SELECT SUBSTR(a.party_name, 1, 45) || ': ' || a.postal_code name
4503 , b.named_account_id
4504 , c.terr_group_account_id
4505 , c.start_date
4506 , c.end_date
4507 FROM hz_parties a
4508 , jtf_tty_named_accts b
4509 , jtf_tty_terr_grp_accts c
4510 WHERE c.terr_group_account_id = LP_terr_group_acct_id
4511 AND b.named_account_id = c.named_account_id
4512 AND a.party_id = b.party_id
4513 AND a.status = 'A'
4514 -- AND (a.DUNS_NUMBER_C IS NOT NULL OR l_matching_rule_code = '4' OR l_matching_rule_code = '5')
4515 AND EXISTS (
4516 /* Salesperson exists for this Named Account */
4517 SELECT NULL
4518 FROM jtf_tty_named_acct_rsc nar
4519 WHERE nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
4520
4521 /* get the PARTY_NAME + POSTAL_CODE for the Named Account:
4522 ** used for NAMED ACCOUNT territory creation */
4523 CURSOR get_party_name(LP_terr_group_acct_id NUMBER) IS
4524 SELECT /*+ index(b JTF_TTY_NAMED_ACCTS_U1) */ SUBSTR(a.party_name, 1, 45) || ': ' || a.postal_code name
4525 , b.named_account_id
4526 , c.terr_group_account_id
4527 , a.duns_number_c
4528 , c.start_date
4529 , c.end_date
4530 FROM hz_parties a
4531 , jtf_tty_named_accts b
4532 , jtf_tty_terr_grp_accts c
4533 WHERE c.terr_group_account_id = LP_terr_group_acct_id
4534 AND b.named_account_id = c.named_account_id
4535 AND a.party_id = b.party_id
4536 AND a.status = 'A'
4537 AND EXISTS (
4538 /* Named Account has at least 1 Mapping Rule */
4539 SELECT 1
4540 FROM jtf_tty_acct_qual_maps d
4541 WHERE d.named_account_id = c.named_account_id )
4542 AND EXISTS (
4543 /* Salesperson exists for this Named Account */
4544 SELECT NULL
4545 FROM jtf_tty_named_acct_rsc nar
4546 WHERE nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
4547
4548 /* Should Unassigned NAs go to Sales Manager or NA Catch-All? */
4549 -- WHERE c.dn_jnr_assigned_flag = 'Y';
4550
4551 /* used for OVERLAY territory creation for duns# and party# qualifier */
4552 CURSOR get_OVLY_party_info(LP_terr_group_acct_id NUMBER, lp_matching_rule_code VARCHAR2) IS
4553 SELECT SUBSTR(a.party_name, 1, 45) || ': ' || a.postal_code name
4554 , b.named_account_id
4555 , c.terr_group_account_id
4556 FROM hz_parties a
4557 , jtf_tty_named_accts b
4558 , jtf_tty_terr_grp_accts c
4559 WHERE c.terr_group_account_id = LP_terr_group_acct_id
4560 AND b.named_account_id = c.named_account_id
4561 AND a.party_id = b.party_id
4562 AND a.status = 'A'
4563 AND (a.DUNS_NUMBER_C IS NOT NULL OR lp_matching_rule_code = '4' OR lp_matching_rule_code = '5')
4564 AND EXISTS (
4565 /* Salesperson, with Role that has a Product
4566 ** Interest defined, exists for this Named Account */
4567 SELECT NULL
4568 FROM jtf_tty_named_acct_rsc nar
4569 , jtf_tty_role_prod_int rpi
4570 , jtf_tty_terr_grp_roles tgr
4571 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
4572 AND tgr.terr_group_id = C.TERR_GROUP_ID
4573 AND tgr.role_code = nar.rsc_role_code
4574 AND nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
4575
4576 /* get the PARTY_NAME + POSTAL_CODE for the Named Account
4577 ** used for OVERLAY territory creation */
4578 CURSOR get_OVLY_party_name(LP_terr_group_acct_id NUMBER) IS
4579 SELECT SUBSTR(a.party_name, 1, 45) || ': ' || a.postal_code name
4580 , b.named_account_id
4581 , c.terr_group_account_id
4582 , a.duns_number_c
4583 FROM hz_parties a
4584 , jtf_tty_named_accts b
4585 , jtf_tty_terr_grp_accts c
4586 WHERE c.terr_group_account_id = LP_terr_group_acct_id
4587 AND b.named_account_id = c.named_account_id
4588 AND a.party_id = b.party_id
4589 AND a.status = 'A'
4590 AND EXISTS (
4591 /* Named Account has at least 1 Mapping Rule */
4592 SELECT 1
4593 FROM jtf_tty_acct_qual_maps d
4594 WHERE d.named_account_id = c.named_account_id )
4595 AND EXISTS (
4596 /* Salesperson, with Role that has a Product
4597 ** Interest defined, exists for this Named Account */
4598 SELECT NULL
4599 FROM jtf_tty_named_acct_rsc nar
4600 , jtf_tty_role_prod_int rpi
4601 , jtf_tty_terr_grp_roles tgr
4602 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
4603 AND tgr.terr_group_id = C.TERR_GROUP_ID
4604 AND tgr.role_code = nar.rsc_role_code
4605 AND nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
4606
4607 /* get Customer Keynames and Postal Code mappings
4608 ** for the Named Account */
4609 /* bug#2925153: JRADHAKR: Added value2_char */
4610 CURSOR match_rule1( l_na_id NUMBER) IS
4611 SELECT b.qual_usg_id
4612 , b.comparison_operator
4613 , b.value1_char
4614 , b.value2_char
4615 FROM jtf_tty_acct_qual_maps b
4616 WHERE b.qual_usg_id IN (-1007, -1012)
4617 AND b.named_account_id = l_na_id
4618 ORDER BY b.qual_usg_id;
4619
4620 /* get DUNS# or PARTY# for the Named Account */
4621 /* bug#2933116: JDOCHERT: 05/27/03: support for DUNS# Qualifier */
4622 /* bug#3426946: ACHANDA : 03/08/04: support for PARTY# Qualifier */
4623 /* JRADHAKR: Added support for Party site id and hierarchy */
4624 CURSOR match_rule3(l_na_id NUMBER, l_matching_rule_code VARCHAR2) IS
4625 SELECT DECODE(l_matching_rule_code, '4', -1129, '2', -1120, '3', -1120, '5',-1005, -1001) qual_usg_id
4626 , '=' comparison_operator
4627 , DECODE(l_matching_rule_code, '4', hzp.party_number, '2', hzp.duns_number_c, '3', hzp.duns_number_c) value1_char
4628 , DECODE(l_matching_rule_code, '5', na.party_site_id, hzp.party_id) value1_num
4629 FROM hz_parties hzp, jtf_tty_named_accts na
4630 WHERE hzp.status = 'A'
4631 AND hzp.party_id = na.party_id
4632 AND na.named_account_id = l_na_id;
4633
4634 /* Access Types for a Territory Group */
4635 CURSOR na_access(l_terr_group_id NUMBER) IS
4636 SELECT DISTINCT a.access_type
4637 FROM jtf_tty_role_access a
4638 , jtf_tty_terr_grp_roles b
4639 WHERE a.terr_group_role_id = b.terr_group_role_id
4640 AND b.terr_group_id = l_terr_group_id;
4641
4642 /* get those roles for a territory Group that
4643 ** do not have Product Interest defined */
4644 CURSOR role_no_pi(l_terr_group_id NUMBER) IS
4645 SELECT DISTINCT b.role_code
4646 FROM jtf_tty_role_access a
4647 , jtf_tty_terr_grp_roles b
4648 , jtf_tty_role_prod_int c
4649 WHERE a.terr_group_role_id = b.terr_group_role_id
4650 AND b.terr_group_id = l_terr_group_id
4651 AND a.access_type = 'ACCOUNT'
4652 AND c.terr_group_role_id = b.terr_group_role_id
4653 AND NOT EXISTS ( SELECT 1
4654 FROM jtf_tty_role_prod_int e
4655 , jtf_tty_terr_grp_roles d
4656 WHERE e.terr_group_role_id (+) = d.terr_group_role_id
4657 AND d.terr_group_id = b.terr_group_id
4658 AND d.role_code = b.role_code
4659 AND e.interest_type_id IS NULL);
4660
4661 /* Named Account Catch-All Customer Keyname values */
4662 CURSOR catchall_cust(l_terr_group_acct_id NUMBER) IS
4663 SELECT DISTINCT b.comparison_operator
4664 ,b.value1_char
4665 FROM jtf_tty_terr_grp_accts a
4666 , jtf_tty_acct_qual_maps b
4667 WHERE a.named_account_id = b.named_account_id
4668 AND a.terr_group_account_id = l_terr_group_acct_id
4669 AND b.qual_usg_id = -1012
4670 ORDER BY b.comparison_operator,b.value1_char;
4671
4672 BEGIN
4673
4674 /* (2) START: CREATE NAMED ACCOUNT TERRITORY CREATION
4675 ** FOR EACH TERRITORY GROUP ACCOUNT */
4676 FOR x IN p_terr_grp_acct_id.FIRST .. p_terr_grp_acct_id.LAST LOOP
4677
4678 -- delete the territories corresponding to the TGA before creating the new ones
4679 delete_TGA(p_terr_grp_acct_id(x)
4680 ,p_terr_group_id(x)
4681 ,p_catchall_terr_id(x)
4682 ,p_change_type(x));
4683 IF G_Debug THEN
4684 write_log(2, '');
4685 write_log(2, '----------------------------------------------------------');
4686 write_log(2, 'BEGIN: Territory Creation for Territory Group Account : ' || p_terr_grp_acct_id(x));
4687 END IF;
4688
4689 /* reset these processing values for the Territory Group */
4690 l_ovnon_flag := 'N';
4691 l_overnon_role_tbl := l_overnon_role_empty_tbl;
4692
4693
4694 /** Roles with No Product Interest */
4695 i:=0;
4696 FOR overlayandnon IN role_no_pi(p_terr_group_id(x)) LOOP
4697
4698 l_ovnon_flag := 'Y';
4699 i := i + 1;
4700
4701 SELECT JTF_TTY_TERR_GRP_ROLES_S.NEXTVAL
4702 INTO l_id
4703 FROM DUAL;
4704
4705 l_overnon_role_tbl(i).grp_role_id:= l_id;
4706
4707 INSERT INTO JTF_TTY_TERR_GRP_ROLES(
4708 TERR_GROUP_ROLE_ID
4709 , OBJECT_VERSION_NUMBER
4710 , TERR_GROUP_ID
4711 , ROLE_CODE
4712 , CREATED_BY
4713 , CREATION_DATE
4714 , LAST_UPDATED_BY
4715 , LAST_UPDATE_DATE
4716 , LAST_UPDATE_LOGIN)
4717 VALUES(
4718 l_overnon_role_tbl(i).grp_role_id
4719 , 1
4720 , p_terr_group_id(x)
4721 , overlayandnon.role_code
4722 , G_USER_ID
4723 , SYSDATE
4724 , G_USER_ID
4725 , SYSDATE
4726 , G_LOGIN_ID);
4727
4728 INSERT INTO JTF_TTY_ROLE_ACCESS(
4729 TERR_GROUP_ROLE_ACCESS_ID
4730 , OBJECT_VERSION_NUMBER
4731 , TERR_GROUP_ROLE_ID
4732 , ACCESS_TYPE
4733 , CREATED_BY
4734 , CREATION_DATE
4735 , LAST_UPDATED_BY
4736 , LAST_UPDATE_DATE
4737 , LAST_UPDATE_LOGIN)
4738 VALUES(
4739 JTF_TTY_ROLE_ACCESS_S.NEXTVAL
4740 , 1
4741 , l_overnon_role_tbl(i).grp_role_id
4742 , 'ACCOUNT'
4743 , G_USER_ID
4744 , SYSDATE
4745 , G_USER_ID
4746 , SYSDATE
4747 , G_LOGIN_ID);
4748
4749 END LOOP; /* for overlayandnon in role_no_pi */
4750
4751
4752 /*********************************************************************/
4753 /*********************************************************************/
4754 /************** NON-OVERLAY TERRITORY CREATION ***********************/
4755 /*********************************************************************/
4756 /*********************************************************************/
4757
4758 /* does Territory Group Account have at least 1 Named Account? */
4759 SELECT COUNT(*)
4760 INTO l_na_count
4761 FROM jtf_tty_terr_grp_accts ga
4762 , jtf_tty_named_accts a
4763 WHERE ga.named_account_id = a.named_account_id
4764 AND ga.terr_group_account_id = p_terr_grp_acct_id(x)
4765 AND ROWNUM < 2;
4766
4767 /* BEGIN: if Territory Group exists with Named Accounts
4768 ** then auto-create territory definitions */
4769 IF (l_na_count > 0) THEN
4770
4771 /***************************************************************/
4772 /* (4) START: CREATE CUSTOMER KEY NAME VALUES FOR CATCH_ALL */
4773 /* TERRITORY IN TABLE JTF_TERR_VALUES_ALL */
4774 /***************************************************************/
4775
4776 IF ( p_matching_rule_code(x) IN ('1', '2') AND
4777 p_generate_catchall_flag(x) = 'Y' ) THEN
4778 k := 0;
4779 l_terr_values_tbl := l_terr_values_empty_tbl;
4780
4781 BEGIN
4782 SELECT terr_qual_id
4783 INTO l_terr_qual_id
4784 FROM jtf_terr_qual_all
4785 WHERE terr_id = p_catchall_terr_id(x)
4786 AND qual_usg_id = -1012;
4787
4788 FOR catchall IN catchall_cust(p_terr_grp_acct_id(x)) LOOP
4789 -- check to see if the customer key name and comparision operator exist for the catchall territory
4790 SELECT COUNT(*)
4791 INTO l_cust_count
4792 FROM jtf_terr_values_all
4793 WHERE comparison_operator = catchall.comparison_operator
4794 AND low_value_char = catchall.value1_char
4795 AND terr_qual_id = l_terr_qual_id;
4796
4797 -- if the record does not exist , insert a record in jtf_terr_values_all
4798 IF (l_cust_count = 0) THEN
4799
4800 k := k + 1;
4801 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
4802 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
4803 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
4804 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
4805 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
4806 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
4807 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
4808 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
4809 l_terr_values_tbl(k).COMPARISON_OPERATOR := catchall.comparison_operator;
4810 l_terr_values_tbl(k).LOW_VALUE_CHAR := catchall.value1_char;
4811 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
4812 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
4813 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
4814 l_terr_values_tbl(k).VALUE_SET := NULL;
4815 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
4816 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
4817 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
4818 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
4819 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
4820 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
4821 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
4822 l_terr_values_tbl(k).qualifier_tbl_index := 1;
4823 END IF;
4824 END LOOP;
4825
4826
4827 JTF_TERRITORY_PVT.Create_Terr_Value(
4828 P_Api_Version_Number => l_Api_Version_Number,
4829 P_Init_Msg_List => l_Init_Msg_List,
4830 P_Commit => l_Commit,
4831 p_validation_level => FND_API.g_valid_level_NONE,
4832 P_Terr_Id => p_catchall_terr_id(x),
4833 p_terr_qual_id => l_Terr_Qual_Id,
4834 P_Terr_Value_Tbl => l_Terr_Values_Tbl,
4835 X_Return_Status => x_Return_Status,
4836 X_Msg_Count => x_Msg_Count,
4837 X_Msg_Data => x_Msg_Data,
4838 X_Terr_Value_Out_Tbl => x_Terr_Values_Out_Tbl);
4839
4840 EXCEPTION
4841 WHEN NO_DATA_FOUND THEN
4842 NULL;
4843 WHEN OTHERS THEN
4844 RAISE;
4845 END;
4846 END IF;
4847
4848 /***************************************************************/
4849 /* (4) END: CREATE CUSTOMER KEY NAME VALUES FOR CATCH_ALL */
4850 /* TERRITORY IN TABLE JTF_TERR_VALUES_ALL */
4851 /***************************************************************/
4852
4853 /***************************************************************/
4854 /* (5) START: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
4855 /* USING DUNS# , PARTY# PARTY_SITE_ID, ACOUNT HIERARCHY QULIFIER */
4856 /***************************************************************/
4857 IF ( p_matching_rule_code(x) NOT IN ('1')) THEN -- IN ('2', '3', '4') ) THEN
4858 /* if matching rule code is 2 or 3 create territories for duns# qualifier else for party number qualifier */
4859 FOR naterr IN get_party_info(p_terr_grp_acct_id(x), p_matching_rule_code(x)) LOOP
4860
4861 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
4862 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
4863 l_terr_qual_tbl := l_terr_qual_empty_tbl;
4864 l_terr_values_tbl := l_terr_values_empty_tbl;
4865 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
4866 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
4867
4868 /* TERRITORY HEADER */
4869 /* Ensure static TERR_ID to benefit TAP Performance */
4870 BEGIN
4871
4872 l_terr_exists := 0;
4873
4874 SELECT COUNT(*)
4875 INTO l_terr_exists
4876 FROM jtf_terr_all jt
4877 WHERE jt.terr_id = naterr.terr_group_account_id * -100;
4878
4879 IF (l_terr_exists = 0) THEN
4880 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -100;
4881 ELSE
4882 l_terr_all_rec.TERR_ID := NULL;
4883 END IF;
4884
4885 EXCEPTION
4886 WHEN NO_DATA_FOUND THEN
4887 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -100;
4888 END;
4889
4890 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
4891 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
4892 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
4893 l_terr_all_rec.CREATED_BY := p_created_by(x);
4894 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
4895 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
4896
4897 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
4898 l_terr_all_rec.NAME := naterr.name ;
4899 ELSIF ( p_matching_rule_code(x) IN ('4')) THEN
4900 l_terr_all_rec.NAME := naterr.name ;
4901 ELSIF ( p_matching_rule_code(x) IN ('5')) THEN
4902 l_terr_all_rec.NAME := naterr.name ;
4903 ELSE
4904 l_terr_all_rec.NAME := naterr.name ;
4905 END IF;
4906
4907 IF naterr.start_date IS NULL THEN
4908 l_terr_all_rec.start_date_active := p_active_from_date(x);
4909 ELSE
4910 l_terr_all_rec.start_date_active := naterr.start_date;
4911 END IF;
4912
4913 IF naterr.end_date IS NULL THEN
4914 l_terr_all_rec.end_date_active := p_active_to_date(x);
4915 ELSE
4916 l_terr_all_rec.end_date_active := naterr.end_date;
4917 END IF;
4918
4919 l_terr_all_rec.PARENT_TERRITORY_ID := p_terr_id(x);
4920 l_terr_all_rec.RANK := p_rank(x) + 10;
4921 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
4922 l_terr_all_rec.TEMPLATE_FLAG := 'N';
4923 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
4924 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
4925 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
4926 l_terr_all_rec.TERRITORY_TYPE_ID := -1;
4927
4928 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
4929 l_terr_all_rec.DESCRIPTION := naterr.name;
4930 ELSIF ( p_matching_rule_code(x) IN ('4')) THEN
4931 l_terr_all_rec.DESCRIPTION := naterr.name ;
4932 ELSIF ( p_matching_rule_code(x) IN ('5')) THEN
4933 l_terr_all_rec.DESCRIPTION := naterr.name ;
4934 ELSE
4935 l_terr_all_rec.DESCRIPTION := naterr.name;
4936 END IF;
4937
4938 l_terr_all_rec.UPDATE_FLAG := 'N';
4939 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
4940 l_terr_all_rec.ORG_ID := p_org_id(x);
4941 l_terr_all_rec.NUM_WINNERS := NULL ;
4942 l_terr_all_rec.attribute_category := p_terr_attr_cat(x);
4943 l_terr_all_rec.attribute1 := p_terr_attribute1(x);
4944 l_terr_all_rec.attribute2 := p_terr_attribute2(x);
4945 l_terr_all_rec.attribute3 := p_terr_attribute3(x);
4946 l_terr_all_rec.attribute4 := p_terr_attribute4(x);
4947 l_terr_all_rec.attribute5 := p_terr_attribute5(x);
4948 l_terr_all_rec.attribute6 := p_terr_attribute6(x);
4949 l_terr_all_rec.attribute7 := p_terr_attribute7(x);
4950 l_terr_all_rec.attribute8 := p_terr_attribute8(x);
4951 l_terr_all_rec.attribute9 := p_terr_attribute9(x);
4952 l_terr_all_rec.attribute10 := p_terr_attribute10(x);
4953 l_terr_all_rec.attribute11 := p_terr_attribute11(x);
4954 l_terr_all_rec.attribute12 := p_terr_attribute12(x);
4955 l_terr_all_rec.attribute13 := p_terr_attribute13(x);
4956 l_terr_all_rec.attribute14 := p_terr_attribute14(x);
4957 l_terr_all_rec.attribute15 := p_terr_attribute15(x);
4958
4959 /* Oracle Sales and Telesales Usage */
4960 SELECT JTF_TERR_USGS_S.NEXTVAL
4961 INTO l_terr_usg_id
4962 FROM DUAL;
4963
4964 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
4965 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
4966 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
4967 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
4968 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
4969 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
4970 l_terr_usgs_tbl(1).TERR_ID := NULL;
4971 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
4972 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
4973
4974 i:=0;
4975
4976 /* BEGIN: For each Access Type defined for the Territory Group */
4977 FOR acctype IN get_NON_OVLY_na_trans(naterr.terr_group_account_id)
4978 LOOP
4979
4980 i:=i+1;
4981
4982 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
4983 INTO l_terr_qtype_usg_id
4984 FROM DUAL;
4985
4986 IF ( acctype.access_type = 'ACCOUNT' ) THEN
4987 l_qual_type_usg_id := -1001;
4988 ELSIF ( acctype.access_type = 'LEAD' ) THEN
4989 l_qual_type_usg_id := -1002;
4990 ELSIF ( acctype.access_type = 'OPPORTUNITY' ) THEN
4991 l_qual_type_usg_id := -1003;
4992 ELSIF ( acctype.access_type = 'QUOTE' ) THEN
4993 l_qual_type_usg_id := -1105;
4994 ELSIF ( acctype.access_type = 'PROPOSAL' ) THEN
4995 l_qual_type_usg_id := -1106;
4996 END IF;
4997
4998 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
4999 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
5000 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
5001 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
5002 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
5003 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
5004 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
5005 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := l_qual_type_usg_id;
5006 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
5007
5008 END LOOP; /* END: For each Access Type defined for the Territory Group */
5009
5010
5011 /*
5012 ** get Named Account Customer Keyname and Postal Code Mapping
5013 ** rules, to use as territory definition qualifier values
5014 */
5015 j:=0;
5016 K:=0;
5017 l_prev_qual_usg_id:=1;
5018
5019 FOR qval IN match_rule3( naterr.named_account_id, p_matching_rule_code(x) ) LOOP
5020
5021 /* new qualifier, i.e., if there is a qualifier in
5022 ** Addition to DUNS# or PARTY# */
5023 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
5024
5025 j:=j+1;
5026
5027 SELECT JTF_TERR_QUAL_S.NEXTVAL
5028 INTO l_terr_qual_id
5029 FROM DUAL;
5030
5031 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
5032 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
5033 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
5034 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
5035 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
5036 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
5037 l_terr_qual_tbl(j).TERR_ID := NULL;
5038 l_terr_qual_tbl(j).QUAL_USG_ID := qval.qual_usg_id;
5039 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
5040 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
5041 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
5042 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
5043 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
5044 l_prev_qual_usg_id := qval.qual_usg_id;
5045
5046 END IF;
5047
5048 k:=k+1;
5049
5050 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
5051 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
5052 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
5053 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
5054 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
5055 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
5056 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
5057 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
5058 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
5059
5060 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
5061 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
5062 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
5063 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
5064 l_terr_values_tbl(k).VALUE_SET := NULL;
5065 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
5066 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
5067 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
5068 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
5069 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
5070 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
5071 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
5072 l_terr_values_tbl(k).qualifier_tbl_index := j;
5073
5074 /* JRADHAKR: Added support for Party site id and hierarchy */
5075
5076 IF ( p_matching_rule_code(x) IN ('2', '3', '4')) THEN
5077 l_terr_values_tbl(k).LOW_VALUE_CHAR := qval.value1_char;
5078 ELSIF ( p_matching_rule_code(x) IN ('5')) THEN
5079 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := qval.value1_num;
5080 ELSE
5081 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := qval.value1_num;
5082 l_terr_values_tbl(k).LOW_VALUE_CHAR := p_matching_rule_code(x);
5083 END IF;
5084
5085 END LOOP; /* qval IN pqual */
5086
5087 l_init_msg_list :=FND_API.G_TRUE;
5088
5089 JTF_TERRITORY_PVT.create_territory (
5090 p_api_version_number => l_api_version_number,
5091 p_init_msg_list => l_init_msg_list,
5092 p_commit => l_commit,
5093 p_validation_level => FND_API.g_valid_level_NONE,
5094 x_return_status => x_return_status,
5095 x_msg_count => x_msg_count,
5096 x_msg_data => x_msg_data,
5097 p_terr_all_rec => l_terr_all_rec,
5098 p_terr_usgs_tbl => l_terr_usgs_tbl,
5099 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
5100 p_terr_qual_tbl => l_terr_qual_tbl,
5101 p_terr_values_tbl => l_terr_values_tbl,
5102 x_terr_id => x_terr_id,
5103 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
5104 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
5105 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
5106 x_terr_values_out_tbl => x_terr_values_out_tbl
5107
5108 );
5109
5110 IF G_Debug THEN
5111 write_log(2,' NA territory created = '||naterr.name);
5112 END IF;
5113
5114 /* BEGIN: Successful Territory creation? */
5115 IF x_return_status = 'S' THEN
5116
5117 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID and CATCH_ALL_FLAG
5118 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
5119 UPDATE JTF_TERR_ALL
5120 SET TERR_GROUP_FLAG = 'Y'
5121 , TERR_GROUP_ID = p_terr_group_id(x)
5122 , CATCH_ALL_FLAG = 'N'
5123 , NAMED_ACCOUNT_FLAG = 'Y'
5124 , TERR_GROUP_ACCOUNT_ID = naterr.terr_group_account_id
5125 WHERE terr_id = x_terr_id;
5126
5127 l_init_msg_list :=FND_API.G_TRUE;
5128 i := 0;
5129 a := 0;
5130
5131 FOR tran_type IN role_interest_nonpi(p_terr_group_id(x)) LOOP
5132
5133 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
5134 FOR rsc IN resource_grp(naterr.terr_group_account_id, tran_type.role_code) LOOP
5135 i:=i+1;
5136
5137 SELECT JTF_TERR_RSC_S.NEXTVAL
5138 INTO l_terr_rsc_id
5139 FROM DUAL;
5140
5141 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
5142 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
5143 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
5144 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
5145 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
5146 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
5147 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
5148 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
5149 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
5150 l_TerrRsc_Tbl(i).ROLE := tran_type.role_code;
5151 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
5152
5153 IF rsc.start_date IS NULL THEN
5154 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
5155 ELSE
5156 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := rsc.start_date;
5157 END IF;
5158
5159 IF rsc.end_date IS NULL THEN
5160 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
5161 ELSE
5162 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := rsc.end_date;
5163 END IF;
5164
5165 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
5166 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
5167 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
5168 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
5169 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
5170 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
5171 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
5172 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
5173 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
5174 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
5175 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
5176 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
5177 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
5178 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
5179 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
5180 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
5181 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
5182 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
5183 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
5184
5185
5186 FOR rsc_acc IN NON_OVLY_role_access(p_terr_group_id(x),tran_type.role_code)
5187 LOOP
5188 --dbms_output.put_line('rsc_acc.access_type '||rsc_acc.access_type);
5189 a := a+1;
5190
5191 IF ( rsc_acc.access_type='OPPORTUNITY' ) THEN
5192 l_qual_type := 'OPPOR';
5193 ELSE
5194 l_qual_type := rsc_acc.access_type;
5195 END IF;
5196
5197 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
5198 INTO l_terr_rsc_access_id
5199 FROM DUAL;
5200
5201 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
5202 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
5203 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
5204 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
5205 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
5206 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
5207 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
5208 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := l_qual_type;
5209 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
5210 l_TerrRsc_Access_Tbl(a).TRANS_ACCESS_CODE := rsc_acc.trans_access_code;
5211 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
5212
5213 END LOOP; /* FOR rsc_acc in NON_OVLY_role_access */
5214
5215 END LOOP; /* FOR rsc in resource_grp */
5216
5217 END LOOP;/* FOR tran_type in role_interest_nonpi */
5218
5219 l_init_msg_list :=FND_API.G_TRUE;
5220
5221
5222 -- 07/08/03: JDOCHERT: bug#3023653
5223 Jtf_Territory_Resource_Pvt.create_terrresource (
5224 p_api_version_number => l_Api_Version_Number,
5225 p_init_msg_list => l_Init_Msg_List,
5226 p_commit => l_Commit,
5227 p_validation_level => FND_API.g_valid_level_NONE,
5228 x_return_status => x_Return_Status,
5229 x_msg_count => x_Msg_Count,
5230 x_msg_data => x_msg_data,
5231 p_terrrsc_tbl => l_TerrRsc_tbl,
5232 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
5233 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
5234 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
5235 );
5236
5237
5238 IF x_Return_Status='S' THEN
5239 IF G_Debug THEN
5240 write_log(2,' Resource created for NA territory # ' ||x_terr_id);
5241 END IF;
5242 ELSE
5243 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
5244 IF G_Debug THEN
5245 write_log(2,x_msg_data);
5246 write_log(2, ' Failed in resource creation for NA territory # ' || x_terr_id);
5247 END IF;
5248 END IF;
5249
5250 ELSE
5251 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
5252 IF G_Debug THEN
5253 write_log(2,SUBSTR(x_msg_data,1,254));
5254 WRITE_LOG(2,'ERROR: NA TERRITORY CREATION FAILED ' || 'FOR NAMED_ACCOUNT_ID# ' || naterr.named_account_id );
5255 END IF;
5256 END IF; /* END: Successful Territory creation? */
5257
5258 END LOOP; /* naterr in get_party_info */
5259 END IF; /* ( p_matching_rule_code(x) IN ('3') THEN */
5260 /*************************************************************/
5261
5262 /* (5) END: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
5263 /* USING DUNS# OR PARTY# QUALIFIER */
5264 /*************************************************************/
5265
5266 /***************************************************************/
5267 /* (6) START: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
5268 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
5269 /***************************************************************/
5270
5271 IF ( p_matching_rule_code(x) IN ('1', '2') ) THEN
5272 FOR naterr IN get_party_name(p_terr_grp_acct_id(x)) LOOP
5273
5274 --write_log(2,'na '||naterr.named_account_id);
5275 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
5276 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
5277 l_terr_qual_tbl := l_terr_qual_empty_tbl;
5278 l_terr_values_tbl := l_terr_values_empty_tbl;
5279 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
5280 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
5281
5282 /* TERRITORY HEADER */
5283 /* Ensure static TERR_ID to benefit TAP Performance */
5284 BEGIN
5285
5286 l_terr_exists := 0;
5287
5288 SELECT COUNT(*)
5289 INTO l_terr_exists
5290 FROM jtf_terr_all jt
5291 WHERE jt.terr_id = naterr.terr_group_account_id * -10000;
5292
5293 IF (l_terr_exists = 0) THEN
5294 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -10000;
5295 ELSE
5296 l_terr_all_rec.TERR_ID := NULL;
5297 END IF;
5298
5299 EXCEPTION
5300 WHEN NO_DATA_FOUND THEN
5301 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -10000;
5302 END;
5303
5304 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
5305 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
5306 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
5307 l_terr_all_rec.CREATED_BY := p_created_by(x);
5308 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
5309 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
5310 l_terr_all_rec.NAME := naterr.name;
5311
5312 IF naterr.start_date IS NULL THEN
5313 l_terr_all_rec.start_date_active := p_active_from_date(x);
5314 ELSE
5315 l_terr_all_rec.start_date_active := naterr.start_date;
5316 END IF;
5317
5318 IF naterr.end_date IS NULL THEN
5319 l_terr_all_rec.end_date_active := p_active_to_date(x);
5320 ELSE
5321 l_terr_all_rec.end_date_active := naterr.end_date;
5322 END IF;
5323
5324 l_terr_all_rec.PARENT_TERRITORY_ID := p_terr_id(x);
5325 l_terr_all_rec.RANK := p_rank(x) + 20;
5326 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
5327 l_terr_all_rec.TEMPLATE_FLAG := 'N';
5328 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
5329 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
5330 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
5331 l_terr_all_rec.DESCRIPTION := naterr.name;
5332 l_terr_all_rec.UPDATE_FLAG := 'N';
5333 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
5334 l_terr_all_rec.ORG_ID := p_org_id(x);
5335 l_terr_all_rec.NUM_WINNERS := NULL ;
5336 l_terr_all_rec.TERRITORY_TYPE_ID := -1;
5337 l_terr_all_rec.attribute_category := p_terr_attr_cat(x);
5338 l_terr_all_rec.attribute1 := p_terr_attribute1(x);
5339 l_terr_all_rec.attribute2 := p_terr_attribute2(x);
5340 l_terr_all_rec.attribute3 := p_terr_attribute3(x);
5341 l_terr_all_rec.attribute4 := p_terr_attribute4(x);
5342 l_terr_all_rec.attribute5 := p_terr_attribute5(x);
5343 l_terr_all_rec.attribute6 := p_terr_attribute6(x);
5344 l_terr_all_rec.attribute7 := p_terr_attribute7(x);
5345 l_terr_all_rec.attribute8 := p_terr_attribute8(x);
5346 l_terr_all_rec.attribute9 := p_terr_attribute9(x);
5347 l_terr_all_rec.attribute10 := p_terr_attribute10(x);
5348 l_terr_all_rec.attribute11 := p_terr_attribute11(x);
5349 l_terr_all_rec.attribute12 := p_terr_attribute12(x);
5350 l_terr_all_rec.attribute13 := p_terr_attribute13(x);
5351 l_terr_all_rec.attribute14 := p_terr_attribute14(x);
5352 l_terr_all_rec.attribute15 := p_terr_attribute15(x);
5353
5354 /* Oracle Sales and Telesales Usage */
5355 SELECT JTF_TERR_USGS_S.NEXTVAL
5356 INTO l_terr_usg_id
5357 FROM DUAL;
5358
5359 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
5360 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
5361 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
5362 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
5363 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
5364 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
5365 l_terr_usgs_tbl(1).TERR_ID := NULL;
5366 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
5367 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
5368
5369 i:=0;
5370
5371 /* BEGIN: For each Access Type defined for the Territory Group */
5372 FOR acctype IN get_NON_OVLY_na_trans(naterr.terr_group_account_id)
5373 LOOP
5374
5375 i:=i+1;
5376
5377 IF ( acctype.access_type = 'ACCOUNT' ) THEN
5378 l_qual_type_usg_id := -1001;
5379 ELSIF ( acctype.access_type = 'LEAD' ) THEN
5380 l_qual_type_usg_id := -1002;
5381 ELSIF ( acctype.access_type = 'OPPORTUNITY' ) THEN
5382 l_qual_type_usg_id := -1003;
5383 ELSIF ( acctype.access_type = 'QUOTE' ) THEN
5384 l_qual_type_usg_id := -1105;
5385 ELSIF ( acctype.access_type = 'PROPOSAL' ) THEN
5386 l_qual_type_usg_id := -1106;
5387 END IF;
5388
5389 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
5390 INTO l_terr_qtype_usg_id
5391 FROM DUAL;
5392
5393 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
5394 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
5395 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
5396 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
5397 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
5398 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
5399 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
5400 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := l_qual_type_usg_id;
5401 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
5402
5403 END LOOP;
5404 /* END: For each Access Type defined for the Territory Group */
5405
5406 /*
5407 ** get Named Account Customer Keyname and Postal Code Mapping
5408 ** rules, to use as territory definition qualifier values
5409 */
5410 j:=0;
5411 K:=0;
5412 l_prev_qual_usg_id:=1;
5413 FOR qval IN match_rule1( naterr.named_account_id ) LOOP
5414
5415 /* new qualifier, i.e., Customer Name Range or Postal Code: ** driven by ORDER BY on p_qual */
5416 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
5417
5418 j:=j+1;
5419
5420 SELECT JTF_TERR_QUAL_S.NEXTVAL
5421 INTO l_terr_qual_id
5422 FROM DUAL;
5423
5424 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
5425 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
5426 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
5427 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
5428 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
5429 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
5430 l_terr_qual_tbl(j).TERR_ID := NULL;
5431 l_terr_qual_tbl(j).QUAL_USG_ID := qval.qual_usg_id;
5432 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
5433 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
5434 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
5435 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
5436 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
5437 l_prev_qual_usg_id := qval.qual_usg_id;
5438 END IF;
5439
5440 k:=k+1;
5441
5442 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
5443 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
5444 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
5445 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
5446 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
5447 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
5448 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
5449 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
5450 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
5451 l_terr_values_tbl(k).LOW_VALUE_CHAR := qval.value1_char;
5452 l_terr_values_tbl(k).HIGH_VALUE_CHAR := qval.value2_char;
5453 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
5454 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
5455 l_terr_values_tbl(k).VALUE_SET := NULL;
5456 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
5457 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
5458 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
5459 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
5460 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
5461 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
5462 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
5463 l_terr_values_tbl(k).qualifier_tbl_index := j;
5464
5465 END LOOP; /* qval IN pqual */
5466
5467 l_init_msg_list :=FND_API.G_TRUE;
5468
5469 JTF_TERRITORY_PVT.create_territory (
5470 p_api_version_number => l_api_version_number,
5471 p_init_msg_list => l_init_msg_list,
5472 p_commit => l_commit,
5473 p_validation_level => FND_API.g_valid_level_NONE,
5474 x_return_status => x_return_status,
5475 x_msg_count => x_msg_count,
5476 x_msg_data => x_msg_data,
5477 p_terr_all_rec => l_terr_all_rec,
5478 p_terr_usgs_tbl => l_terr_usgs_tbl,
5479 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
5480 p_terr_qual_tbl => l_terr_qual_tbl,
5481 p_terr_values_tbl => l_terr_values_tbl,
5482 x_terr_id => x_terr_id,
5483 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
5484 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
5485 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
5486 x_terr_values_out_tbl => x_terr_values_out_tbl
5487
5488 );
5489
5490
5491 IF G_Debug THEN
5492 write_log(2,' NA territory created = '||naterr.name);
5493 END IF;
5494
5495 /* BEGIN: Successful Territory creation? */
5496 IF x_return_status = 'S' THEN
5497
5498 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID and CATCH_ALL_FLAG
5499 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
5500 UPDATE JTF_TERR_ALL
5501 SET TERR_GROUP_FLAG = 'Y'
5502 , TERR_GROUP_ID = p_terr_group_id(x)
5503 , CATCH_ALL_FLAG = 'N'
5504 , NAMED_ACCOUNT_FLAG = 'Y'
5505 , TERR_GROUP_ACCOUNT_ID = naterr.terr_group_account_id
5506 WHERE terr_id = x_terr_id;
5507
5508 l_init_msg_list :=FND_API.G_TRUE;
5509 i := 0;
5510 a := 0;
5511
5512 FOR tran_type IN role_interest_nonpi(p_terr_group_id(x)) LOOP
5513
5514 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
5515 FOR rsc IN resource_grp(naterr.terr_group_account_id, tran_type.role_code) LOOP
5516 i:=i+1;
5517
5518 SELECT JTF_TERR_RSC_S.NEXTVAL
5519 INTO l_terr_rsc_id
5520 FROM DUAL;
5521
5522 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
5523 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
5524 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
5525 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
5526 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
5527 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
5528 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
5529 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
5530 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
5531 l_TerrRsc_Tbl(i).ROLE := tran_type.role_code;
5532 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
5533
5534 IF rsc.start_date IS NULL THEN
5535 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
5536 ELSE
5537 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := rsc.start_date;
5538 END IF;
5539
5540 IF rsc.end_date IS NULL THEN
5541 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
5542 ELSE
5543 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := rsc.end_date;
5544 END IF;
5545
5546 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
5547 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
5548 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
5549 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
5550 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
5551 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
5552 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
5553 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
5554 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
5555 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
5556 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
5557 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
5558 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
5559 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
5560 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
5561 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
5562 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
5563 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
5564 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
5565
5566 FOR rsc_acc IN NON_OVLY_role_access(p_terr_group_id(x), tran_type.role_code)
5567 LOOP
5568 a := a+1;
5569
5570 IF ( rsc_acc.access_type='OPPORTUNITY' ) THEN
5571 l_qual_type := 'OPPOR';
5572 ELSE
5573 l_qual_type := rsc_acc.access_type;
5574 END IF;
5575
5576 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
5577 INTO l_terr_rsc_access_id
5578 FROM DUAL;
5579
5580 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
5581 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
5582 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
5583 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
5584 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
5585 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
5586 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
5587 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := l_qual_type;
5588 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
5589 l_TerrRsc_Access_Tbl(a).TRANS_ACCESS_CODE := rsc_acc.trans_access_code;
5590 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
5591
5592 END LOOP; /* FOR rsc_acc in NON_OVLY_role_access */
5593
5594 END LOOP; /* FOR rsc in resource_grp */
5595
5596 END LOOP;/* FOR tran_type in role_interest_nonpi */
5597
5598 l_init_msg_list :=FND_API.G_TRUE;
5599
5600 Jtf_Territory_Resource_Pvt.create_terrresource (
5601 p_api_version_number => l_Api_Version_Number,
5602 p_init_msg_list => l_Init_Msg_List,
5603 p_commit => l_Commit,
5604 p_validation_level => FND_API.g_valid_level_NONE,
5605 x_return_status => x_Return_Status,
5606 x_msg_count => x_Msg_Count,
5607 x_msg_data => x_msg_data,
5608 p_terrrsc_tbl => l_TerrRsc_tbl,
5609 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
5610 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
5611 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
5612 );
5613
5614
5615 IF x_Return_Status='S' THEN
5616 IF G_Debug THEN
5617 write_log(2,' Resource created for NA territory # ' ||x_terr_id);
5618 END IF;
5619 ELSE
5620 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
5621 IF G_Debug THEN
5622 write_log(2,x_msg_data);
5623 write_log(2, ' Failed in resource creation for NA territory # ' || x_terr_id);
5624 END IF;
5625 END IF;
5626
5627 ELSE
5628 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
5629 IF G_Debug THEN
5630 write_log(2,SUBSTR(x_msg_data,1,254));
5631 WRITE_LOG(2,'ERROR: NA TERRITORY CREATION FAILED ' || 'FOR NAMED_ACCOUNT_ID# ' || naterr.named_account_id );
5632 END IF;
5633 END IF; /* END: Successful Territory creation? */
5634
5635 END LOOP; /* naterr in get_party_name */
5636 END IF; /* p_matching_rule_code(x) IN ('1', '2') THEN */
5637
5638 /*************************************************************/
5639 /* (6) END: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
5640 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
5641 /*************************************************************/
5642
5643 /********************************************************/
5644 /* delete the role and access */
5645 /********************************************************/
5646 IF l_ovnon_flag = 'Y' THEN
5647
5648 FOR i IN l_overnon_role_tbl.first.. l_overnon_role_tbl.last
5649 LOOP
5650 DELETE FROM jtf_tty_terr_grp_roles
5651 WHERE TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
5652 --dbms_output.put_line('deleted');
5653 DELETE FROM jtf_tty_role_access
5654 WHERE TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
5655 END LOOP;
5656 END IF;
5657
5658 END IF;
5659 /* END: if Territory Group exists with Named Accounts then auto-create territory definitions */
5660
5661
5662
5663 /*********************************************************************/
5664 /*********************************************************************/
5665 /************** OVERLAY TERRITORY CREATION ***************************/
5666 /*********************************************************************/
5667 /*********************************************************************/
5668
5669 /* if any role with PI and Account access and no non pi role exist */
5670 /* we need to create a new branch with Named Account */
5671
5672 /* OVERLAY BRANCH */
5673 BEGIN
5674
5675 SELECT COUNT( DISTINCT b.role_code )
5676 INTO l_pi_count
5677 FROM jtf_rs_roles_vl r
5678 , jtf_tty_role_prod_int a
5679 , jtf_tty_terr_grp_roles b
5680 WHERE r.role_code = b.role_code
5681 AND a.terr_group_role_id = b.terr_group_role_id
5682 AND b.terr_group_id = p_terr_group_id(x)
5683 AND EXISTS (
5684 /* Named Account exists with Salesperson with this role */
5685 SELECT NULL
5686 FROM jtf_tty_named_acct_rsc nar, jtf_tty_terr_grp_accts tga
5687 WHERE tga.terr_group_account_id = nar.terr_group_account_id
5688 AND tga.terr_group_id = b.terr_group_id
5689 AND nar.rsc_role_code = b.role_code )
5690 AND ROWNUM < 2;
5691
5692 EXCEPTION
5693 WHEN OTHERS THEN NULL;
5694 END;
5695
5696 /* are there overlay roles, i.e., are there roles with Product
5697 ** Interests defined for this Territory Group */
5698 IF l_pi_count > 0 THEN
5699
5700 /***************************************************************/
5701 /* (8) START: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
5702 /* USING DUNS# AND PARTY# QUALIFIER */
5703 /***************************************************************/
5704 IF ( p_matching_rule_code(x) IN ('2', '3', '4') ) THEN
5705 FOR overlayterr IN get_OVLY_party_info(p_terr_grp_acct_id(x), p_matching_rule_code(x)) LOOP
5706
5707 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
5708 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
5709 l_terr_qual_tbl := l_terr_qual_empty_tbl;
5710 l_terr_values_tbl := l_terr_values_empty_tbl;
5711 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
5712 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
5713
5714 l_terr_all_rec.TERR_ID := NULL;
5715 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
5716 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
5717 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
5718 l_terr_all_rec.CREATED_BY := p_created_by(x);
5719 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
5720 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
5721
5722 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
5723 l_terr_all_rec.NAME := overlayterr.name || ' (OVERLAY DUNS#)';
5724 ELSE
5725 l_terr_all_rec.NAME := overlayterr.name || ' (OVERLAY Registry ID)';
5726 END IF;
5727
5728 l_terr_all_rec.start_date_active := p_active_from_date(x);
5729 l_terr_all_rec.end_date_active := p_active_to_date(x);
5730 l_terr_all_rec.PARENT_TERRITORY_ID := p_overlay_top(x);
5731 l_terr_all_rec.RANK := p_rank(x)+ 10;
5732 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
5733 l_terr_all_rec.TEMPLATE_FLAG := 'N';
5734 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
5735 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
5736 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
5737
5738 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
5739 l_terr_all_rec.DESCRIPTION := overlayterr.name || ' (OVERLAY DUNS#)';
5740 ELSE
5741 l_terr_all_rec.DESCRIPTION := overlayterr.name || ' (OVERLAY Registry ID)';
5742 END IF;
5743
5744 l_terr_all_rec.UPDATE_FLAG := 'N';
5745 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
5746 l_terr_all_rec.ORG_ID := p_org_id(x);
5747 l_terr_all_rec.NUM_WINNERS := NULL ;
5748
5749 SELECT JTF_TERR_USGS_S.NEXTVAL
5750 INTO l_terr_usg_id
5751 FROM DUAL;
5752
5753 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
5754 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
5755 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
5756 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
5757 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
5758 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
5759 l_terr_usgs_tbl(1).TERR_ID := NULL;
5760 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
5761 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
5762
5763 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
5764 INTO l_terr_qtype_usg_id
5765 FROM DUAL;
5766
5767 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
5768 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
5769 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
5770 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_creation_date(x);
5771 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_created_by(x);
5772 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
5773 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
5774 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1002;
5775 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_org_id(x);
5776
5777 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
5778 INTO l_terr_qtype_usg_id
5779 FROM DUAL;
5780
5781 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
5782 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_last_update_date(x);
5783 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := p_last_updated_by(x);
5784 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_creation_date(x);
5785 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_created_by(x);
5786 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := p_last_update_login(x);
5787 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
5788 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1003;
5789 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_org_id(x);
5790
5791 SELECT JTF_TERR_QUAL_S.NEXTVAL
5792 INTO l_terr_qual_id
5793 FROM DUAL;
5794
5795 j:=0;
5796 K:=0;
5797 l_prev_qual_usg_id:=1;
5798
5799 FOR qval IN match_rule3(overlayterr.named_account_id, p_matching_rule_code(x)) LOOP
5800
5801 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
5802
5803 j:=j+1;
5804
5805 SELECT JTF_TERR_QUAL_S.NEXTVAL
5806 INTO l_terr_qual_id
5807 FROM DUAL;
5808
5809 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
5810 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
5811 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
5812 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
5813 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
5814 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
5815 l_terr_qual_tbl(j).TERR_ID := NULL;
5816 l_terr_qual_tbl(j).QUAL_USG_ID := qval.qual_usg_id;
5817 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
5818 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
5819 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
5820 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
5821 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
5822 l_prev_qual_usg_id := qval.qual_usg_id;
5823
5824 END IF;
5825
5826 k:=k+1;
5827
5828 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
5829 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
5830 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
5831 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
5832 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
5833 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
5834 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
5835 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
5836 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
5837 l_terr_values_tbl(k).LOW_VALUE_CHAR := qval.value1_char;
5838 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
5839 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
5840 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
5841 l_terr_values_tbl(k).VALUE_SET := NULL;
5842 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
5843 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
5844 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
5845 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
5846 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
5847 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
5848 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
5849 l_terr_values_tbl(k).qualifier_tbl_index := j;
5850
5851 END LOOP;
5852
5853 l_init_msg_list :=FND_API.G_TRUE;
5854
5855 JTF_TERRITORY_PVT.create_territory (
5856 p_api_version_number => l_api_version_number,
5857 p_init_msg_list => l_init_msg_list,
5858 p_commit => l_commit,
5859 p_validation_level => FND_API.g_valid_level_NONE,
5860 x_return_status => x_return_status,
5861 x_msg_count => x_msg_count,
5862 x_msg_data => x_msg_data,
5863 p_terr_all_rec => l_terr_all_rec,
5864 p_terr_usgs_tbl => l_terr_usgs_tbl,
5865 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
5866 p_terr_qual_tbl => l_terr_qual_tbl,
5867 p_terr_values_tbl => l_terr_values_tbl,
5868 x_terr_id => x_terr_id,
5869 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
5870 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
5871 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
5872 x_terr_values_out_tbl => x_terr_values_out_tbl
5873
5874 );
5875
5876 IF G_Debug THEN
5877 write_log(2,' Named Account OVERLAY territory created: '||l_terr_all_rec.NAME);
5878 END IF;
5879
5880 IF x_return_status = 'S' THEN
5881
5882 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
5883 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
5884 UPDATE JTF_TERR_ALL
5885 SET TERR_GROUP_FLAG = 'Y'
5886 , TERR_GROUP_ID = p_TERR_GROUP_ID(x)
5887 , NAMED_ACCOUNT_FLAG = 'Y'
5888 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
5889 WHERE terr_id = x_terr_id;
5890
5891 l_overlay:=x_terr_id;
5892
5893 FOR pit IN role_pi(p_terr_group_id(x), overlayterr.terr_group_account_id) LOOP
5894
5895 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
5896 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
5897 l_terr_qual_tbl := l_terr_qual_empty_tbl;
5898 l_terr_values_tbl := l_terr_values_empty_tbl;
5899 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
5900 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
5901
5902 l_role_counter := l_role_counter + 1;
5903
5904 l_terr_all_rec.TERR_ID := overlayterr.terr_group_account_id * -30 * l_role_counter;
5905 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
5906 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
5907 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
5908 l_terr_all_rec.CREATED_BY := p_created_by(x);
5909 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
5910 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
5911
5912 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
5913 l_terr_all_rec.NAME := overlayterr.name || ': ' || pit.role_name || ' (OVERLAY
5914 DUNS#)';
5915 ELSE
5916 l_terr_all_rec.NAME := overlayterr.name || ': ' || pit.role_name || ' (OVERLAY
5917 Registry ID)';
5918 END IF;
5919
5920 l_terr_all_rec.start_date_active := p_active_from_date(x);
5921 l_terr_all_rec.end_date_active := p_active_to_date(x);
5922 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay;
5923 l_terr_all_rec.RANK := p_rank(x) + 10;
5924 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
5925 l_terr_all_rec.TEMPLATE_FLAG := 'N';
5926 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
5927 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
5928 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
5929
5930 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
5931 l_terr_all_rec.DESCRIPTION := overlayterr.name || ': ' || pit.role_name || ' (OVERLAY
5932 DUNS#)';
5933 ELSE
5934 l_terr_all_rec.DESCRIPTION := overlayterr.name || ': ' || pit.role_name || ' (OVERLAY
5935 Registry ID)';
5936 END IF;
5937
5938 l_terr_all_rec.UPDATE_FLAG := 'N';
5939 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
5940 l_terr_all_rec.ORG_ID := p_org_id(x);
5941 l_terr_all_rec.NUM_WINNERS := NULL ;
5942 l_terr_all_rec.attribute_category := p_terr_attr_cat(x);
5943 l_terr_all_rec.attribute1 := p_terr_attribute1(x);
5944 l_terr_all_rec.attribute2 := p_terr_attribute2(x);
5945 l_terr_all_rec.attribute3 := p_terr_attribute3(x);
5946 l_terr_all_rec.attribute4 := p_terr_attribute4(x);
5947 l_terr_all_rec.attribute5 := p_terr_attribute5(x);
5948 l_terr_all_rec.attribute6 := p_terr_attribute6(x);
5949 l_terr_all_rec.attribute7 := p_terr_attribute7(x);
5950 l_terr_all_rec.attribute8 := p_terr_attribute8(x);
5951 l_terr_all_rec.attribute9 := p_terr_attribute9(x);
5952 l_terr_all_rec.attribute10 := p_terr_attribute10(x);
5953 l_terr_all_rec.attribute11 := p_terr_attribute11(x);
5954 l_terr_all_rec.attribute12 := p_terr_attribute12(x);
5955 l_terr_all_rec.attribute13 := p_terr_attribute13(x);
5956 l_terr_all_rec.attribute14 := p_terr_attribute14(x);
5957 l_terr_all_rec.attribute15 := p_terr_attribute15(x);
5958
5959 SELECT JTF_TERR_USGS_S.NEXTVAL
5960 INTO l_terr_usg_id
5961 FROM DUAL;
5962
5963 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
5964 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
5965 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
5966 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
5967 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
5968 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
5969 l_terr_usgs_tbl(1).TERR_ID := NULL;
5970 l_terr_usgs_tbl(1).SOURCE_ID :=-1001;
5971 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
5972
5973 i := 0;
5974 K:= 0;
5975 FOR acc_type IN role_access(p_terr_group_id(x),pit.role_code) LOOP
5976 --i:=i+1;
5977 --dbms_output.put_line('acc type '||acc_type.access_type);
5978 IF acc_type.access_type= 'OPPORTUNITY' THEN
5979 i:=i+1;
5980 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
5981 INTO l_terr_qtype_usg_id
5982 FROM DUAL;
5983
5984 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
5985 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
5986 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
5987 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
5988 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
5989 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
5990 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
5991 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1003;
5992 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
5993
5994 SELECT JTF_TERR_QUAL_S.NEXTVAL
5995 INTO l_terr_qual_id
5996 FROM DUAL;
5997
5998 /* opp expected purchase */
5999 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
6000 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6001 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6002 l_terr_qual_tbl(i).CREATION_DATE := p_creation_date(x);
6003 l_terr_qual_tbl(i).CREATED_BY := p_created_by(x);
6004 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6005 l_terr_qual_tbl(i).TERR_ID := NULL;
6006 l_terr_qual_tbl(i).QUAL_USG_ID := g_opp_qual_usg_id;
6007 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
6008 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
6009 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
6010 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
6011 l_terr_qual_tbl(i).ORG_ID := p_org_id(x);
6012
6013 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
6014 k:=k+1;
6015
6016 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
6017 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
6018 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
6019 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
6020 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
6021 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
6022 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
6023 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
6024 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
6025 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
6026 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
6027 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
6028 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
6029 l_terr_values_tbl(k).VALUE_SET := NULL;
6030 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
6031 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
6032 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
6033 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
6034 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
6035 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
6036 l_terr_values_tbl(k).qualifier_tbl_index := i;
6037
6038 IF (g_prod_cat_enabled) THEN
6039 l_terr_values_tbl(k).value1_id := qval.product_category_id;
6040 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
6041 ELSE
6042 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
6043 END IF;
6044
6045 END LOOP;
6046
6047 ELSIF acc_type.access_type= 'LEAD' THEN
6048
6049 i:=i+1;
6050 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
6051 INTO l_terr_qtype_usg_id
6052 FROM DUAL;
6053
6054 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
6055 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6056 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6057 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
6058 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
6059 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6060 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
6061 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
6062 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
6063
6064 SELECT JTF_TERR_QUAL_S.NEXTVAL
6065 INTO l_terr_qual_id
6066 FROM DUAL;
6067
6068 /* lead expected purchase */
6069 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
6070 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6071 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6072 l_terr_qual_tbl(i).CREATION_DATE := p_creation_date(x);
6073 l_terr_qual_tbl(i).CREATED_BY := p_created_by(x);
6074 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6075 l_terr_qual_tbl(i).TERR_ID := NULL;
6076 l_terr_qual_tbl(i).QUAL_USG_ID := g_lead_qual_usg_id;
6077 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
6078 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
6079 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
6080 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
6081 l_terr_qual_tbl(i).ORG_ID := p_org_id(x);
6082
6083 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
6084
6085 k:=k+1;
6086
6087 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
6088 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
6089 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
6090 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
6091 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
6092 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
6093 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
6094 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
6095 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
6096 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
6097 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
6098 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
6099 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
6100 l_terr_values_tbl(k).VALUE_SET := NULL;
6101 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
6102 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
6103 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
6104 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
6105 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
6106 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
6107 l_terr_values_tbl(k).qualifier_tbl_index := i;
6108
6109 IF (g_prod_cat_enabled) THEN
6110 l_terr_values_tbl(k).value1_id := qval.product_category_id;
6111 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
6112 ELSE
6113 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
6114 END IF;
6115
6116 END LOOP;
6117
6118 ELSE
6119 IF G_Debug THEN
6120 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||p_terr_group_id(x));
6121 END IF;
6122 END IF;
6123
6124 END LOOP;
6125
6126 l_init_msg_list :=FND_API.G_TRUE;
6127
6128 JTF_TERRITORY_PVT.create_territory (
6129 p_api_version_number => l_api_version_number,
6130 p_init_msg_list => l_init_msg_list,
6131 p_commit => l_commit,
6132 p_validation_level => FND_API.g_valid_level_NONE,
6133 x_return_status => x_return_status,
6134 x_msg_count => x_msg_count,
6135 x_msg_data => x_msg_data,
6136 p_terr_all_rec => l_terr_all_rec,
6137 p_terr_usgs_tbl => l_terr_usgs_tbl,
6138 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
6139 p_terr_qual_tbl => l_terr_qual_tbl,
6140 p_terr_values_tbl => l_terr_values_tbl,
6141 x_terr_id => x_terr_id,
6142 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
6143 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
6144 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
6145 x_terr_values_out_tbl => x_terr_values_out_tbl
6146
6147 );
6148
6149 IF (x_return_status = 'S') THEN
6150
6151 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
6152 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
6153 UPDATE JTF_TERR_ALL
6154 SET TERR_GROUP_FLAG = 'Y'
6155 , TERR_GROUP_ID = p_terr_group_id(x)
6156 , NAMED_ACCOUNT_FLAG = 'Y'
6157 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
6158 WHERE terr_id = x_terr_id;
6159
6160 IF G_Debug THEN
6161 write_log(2,' OVERLAY PI Territory Created = '||l_terr_all_rec.NAME);
6162 END IF;
6163
6164 ELSE
6165 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
6166 IF G_Debug THEN
6167 write_log(2,x_msg_data);
6168 write_log(2, 'Failed in OVERLAY PI Territory Creation for TERR_GROUP_ACCOUNT_ID#'||
6169 overlayterr.terr_group_account_id);
6170 END IF;
6171
6172 END IF;
6173
6174 --dbms_output.put_line('pit.role '||pit.role_code);
6175 i:=0;
6176
6177 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
6178 FOR rsc IN resource_grp(overlayterr.terr_group_account_id,pit.role_code) LOOP
6179
6180 i:=i+1;
6181
6182 SELECT JTF_TERR_RSC_S.NEXTVAL
6183 INTO l_terr_rsc_id
6184 FROM DUAL;
6185
6186 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
6187 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
6188 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6189 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6190 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
6191 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
6192 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6193 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
6194 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
6195 l_TerrRsc_Tbl(i).ROLE := pit.role_code;
6196 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
6197 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
6198 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
6199 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
6200 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
6201 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
6202 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
6203 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
6204 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
6205 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
6206 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
6207 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
6208 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
6209 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
6210 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
6211 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
6212 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
6213 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
6214 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
6215 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
6216 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
6217 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
6218
6219 a := 0;
6220
6221 FOR rsc_acc IN role_access(p_terr_group_id(x),pit.role_code) LOOP
6222
6223 IF rsc_acc.access_type= 'OPPORTUNITY' THEN
6224
6225 a := a+1;
6226
6227 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
6228 INTO l_terr_rsc_access_id
6229 FROM DUAL;
6230
6231 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
6232 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
6233 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
6234 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
6235 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
6236 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
6237 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
6238 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
6239 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
6240 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
6241 ELSIF rsc_acc.access_type= 'LEAD' THEN
6242
6243 a := a+1;
6244
6245 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
6246 INTO l_terr_rsc_access_id
6247 FROM DUAL;
6248
6249 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
6250 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
6251 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
6252 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
6253 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
6254 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
6255 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
6256 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
6257 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
6258 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
6259 END IF;
6260 END LOOP; /* rsc_acc in role_access */
6261
6262 l_init_msg_list :=FND_API.G_TRUE;
6263
6264 -- 07/08/03: JDOCHERT: bug#3023653
6265 Jtf_Territory_Resource_Pvt.create_terrresource (
6266 p_api_version_number => l_Api_Version_Number,
6267 p_init_msg_list => l_Init_Msg_List,
6268 p_commit => l_Commit,
6269 p_validation_level => FND_API.g_valid_level_NONE,
6270 x_return_status => x_Return_Status,
6271 x_msg_count => x_Msg_Count,
6272 x_msg_data => x_msg_data,
6273 p_terrrsc_tbl => l_TerrRsc_tbl,
6274 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
6275 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
6276 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
6277 );
6278
6279 IF x_Return_Status='S' THEN
6280 IF G_Debug THEN
6281 write_log(2,'Resource created for Product Interest OVERLAY Territory '||l_terr_all_rec.NAME);
6282 END IF;
6283 ELSE
6284 IF G_Debug THEN
6285 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '||
6286 x_terr_id);
6287 END IF;
6288 END IF;
6289
6290 END LOOP; /* rsc in resource_grp */
6291
6292 END LOOP;
6293
6294 ELSE
6295 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
6296 IF G_Debug THEN
6297 write_log(2,x_msg_data);
6298 write_log(2,'Failed in OVERLAY Territory Creation for Territory Group: ' || p_terr_group_id(x));
6299 END IF;
6300 END IF; /* if (x_return_status = 'S' */
6301 END LOOP; /* overlayterr in get_OVLY_party_info */
6302 END IF; /* ( p_matching_rule_code(x) IN ('2','3') THEN */
6303 /***************************************************************/
6304 /* (8) END: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
6305 /* USING DUNS# PARTY# QUALIFIER */
6306 /***************************************************************/
6307
6308
6309 /***************************************************************/
6310 /* (9) START: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
6311 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
6312 /***************************************************************/
6313 IF ( p_matching_rule_code(x) IN ('1', '2') ) THEN
6314 FOR overlayterr IN get_OVLY_party_name(p_terr_grp_acct_id(x)) LOOP
6315
6316 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
6317 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
6318 l_terr_qual_tbl := l_terr_qual_empty_tbl;
6319 l_terr_values_tbl := l_terr_values_empty_tbl;
6320 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
6321 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
6322
6323 l_terr_all_rec.TERR_ID := NULL;
6324 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
6325 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
6326 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
6327 l_terr_all_rec.CREATED_BY := p_created_by(x);
6328 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
6329 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
6330 l_terr_all_rec.NAME := overlayterr.name || ' (OVERLAY)';
6331 l_terr_all_rec.start_date_active := p_active_from_date(x);
6332 l_terr_all_rec.end_date_active := p_active_to_date(x);
6333 l_terr_all_rec.PARENT_TERRITORY_ID := p_overlay_top(x);
6334 l_terr_all_rec.RANK := p_rank(x) + 20;
6335 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
6336 l_terr_all_rec.TEMPLATE_FLAG := 'N';
6337 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
6338 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
6339 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
6340 l_terr_all_rec.DESCRIPTION := overlayterr.name || ' (OVERLAY)';
6341 l_terr_all_rec.UPDATE_FLAG := 'N';
6342 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
6343 l_terr_all_rec.ORG_ID := p_org_id(x);
6344 l_terr_all_rec.NUM_WINNERS := NULL ;
6345
6346
6347 SELECT JTF_TERR_USGS_S.NEXTVAL
6348 INTO l_terr_usg_id
6349 FROM DUAL;
6350
6351 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
6352 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
6353 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
6354 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
6355 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
6356 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
6357 l_terr_usgs_tbl(1).TERR_ID := NULL;
6358 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
6359 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
6360
6361 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
6362 INTO l_terr_qtype_usg_id
6363 FROM DUAL;
6364
6365 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
6366 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
6367 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
6368 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_creation_date(x);
6369 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_created_by(x);
6370 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
6371 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
6372 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1002;
6373 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_org_id(x);
6374
6375 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
6376 INTO l_terr_qtype_usg_id
6377 FROM DUAL;
6378
6379 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
6380 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_last_update_date(x);
6381 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := p_last_updated_by(x);
6382 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_creation_date(x);
6383 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_created_by(x);
6384 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := p_last_update_login(x);
6385 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
6386 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1003;
6387 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_org_id(x);
6388
6389 SELECT JTF_TERR_QUAL_S.NEXTVAL
6390 INTO l_terr_qual_id
6391 FROM DUAL;
6392
6393 j:=0;
6394 K:=0;
6395 l_prev_qual_usg_id:=1;
6396
6397 FOR qval IN match_rule1(overlayterr.named_account_id) LOOP
6398
6399 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
6400
6401 j:=j+1;
6402 SELECT JTF_TERR_QUAL_S.NEXTVAL
6403 INTO l_terr_qual_id
6404 FROM DUAL;
6405
6406 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
6407 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
6408 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
6409 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
6410 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
6411 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
6412 l_terr_qual_tbl(j).TERR_ID := NULL;
6413 l_terr_qual_tbl(j).QUAL_USG_ID := qval.qual_usg_id;
6414 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
6415 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
6416 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
6417 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
6418 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
6419 l_prev_qual_usg_id := qval.qual_usg_id;
6420
6421 END IF;
6422
6423 k:=k+1;
6424
6425 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
6426 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
6427 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
6428 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
6429 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
6430 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
6431 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
6432 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
6433 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
6434 l_terr_values_tbl(k).LOW_VALUE_CHAR := qval.value1_char;
6435 l_terr_values_tbl(k).HIGH_VALUE_CHAR := qval.value2_char;
6436 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
6437 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
6438 l_terr_values_tbl(k).VALUE_SET := NULL;
6439 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
6440 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
6441 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
6442 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
6443 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
6444 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
6445 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
6446 l_terr_values_tbl(k).qualifier_tbl_index := j;
6447
6448 END LOOP;
6449
6450 l_init_msg_list :=FND_API.G_TRUE;
6451
6452 JTF_TERRITORY_PVT.create_territory (
6453 p_api_version_number => l_api_version_number,
6454 p_init_msg_list => l_init_msg_list,
6455 p_commit => l_commit,
6456 p_validation_level => FND_API.g_valid_level_NONE,
6457 x_return_status => x_return_status,
6458 x_msg_count => x_msg_count,
6459 x_msg_data => x_msg_data,
6460 p_terr_all_rec => l_terr_all_rec,
6461 p_terr_usgs_tbl => l_terr_usgs_tbl,
6462 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
6463 p_terr_qual_tbl => l_terr_qual_tbl,
6464 p_terr_values_tbl => l_terr_values_tbl,
6465 x_terr_id => x_terr_id,
6466 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
6467 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
6468 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
6469 x_terr_values_out_tbl => x_terr_values_out_tbl
6470
6471 );
6472
6473 IF G_Debug THEN
6474 write_log(2,' OVERLAY Territory Created,territory_id# '||x_terr_id);
6475 END IF;
6476
6477 IF x_return_status = 'S' THEN
6478
6479 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
6480 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
6481 UPDATE JTF_TERR_ALL
6482 SET TERR_GROUP_FLAG = 'Y'
6483 , TERR_GROUP_ID = p_terr_group_id(x)
6484 , NAMED_ACCOUNT_FLAG = 'Y'
6485 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
6486 WHERE terr_id = x_terr_id;
6487
6488 l_overlay:=x_terr_id;
6489
6490 FOR pit IN role_pi( p_terr_group_id(x) , overlayterr.terr_group_account_id) LOOP
6491
6492 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
6493 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
6494 l_terr_qual_tbl := l_terr_qual_empty_tbl;
6495 l_terr_values_tbl := l_terr_values_empty_tbl;
6496 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
6497 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
6498
6499 l_role_counter := l_role_counter + 1;
6500
6501 l_terr_all_rec.TERR_ID := overlayterr.terr_group_account_id * -40 * l_role_counter;
6502 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
6503 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
6504 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
6505 l_terr_all_rec.CREATED_BY := p_created_by(x);
6506 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
6507 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
6508 l_terr_all_rec.NAME := overlayterr.name || ' ' || pit.role_name || ' (OVERLAY)';
6509 l_terr_all_rec.start_date_active := p_active_from_date(x);
6510 l_terr_all_rec.end_date_active := p_active_to_date(x);
6511 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay;
6512 l_terr_all_rec.RANK := p_rank(x)+10;
6513 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
6514 l_terr_all_rec.TEMPLATE_FLAG := 'N';
6515 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
6516 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
6517 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
6518 l_terr_all_rec.DESCRIPTION := pit.role_code||' '||overlayterr.name||' (OVERLAY)';
6519 l_terr_all_rec.UPDATE_FLAG := 'N';
6520 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
6521 l_terr_all_rec.ORG_ID := p_org_id(x);
6522 l_terr_all_rec.NUM_WINNERS := NULL ;
6523 l_terr_all_rec.attribute_category := p_terr_attr_cat(x);
6524 l_terr_all_rec.attribute1 := p_terr_attribute1(x);
6525 l_terr_all_rec.attribute2 := p_terr_attribute2(x);
6526 l_terr_all_rec.attribute3 := p_terr_attribute3(x);
6527 l_terr_all_rec.attribute4 := p_terr_attribute4(x);
6528 l_terr_all_rec.attribute5 := p_terr_attribute5(x);
6529 l_terr_all_rec.attribute6 := p_terr_attribute6(x);
6530 l_terr_all_rec.attribute7 := p_terr_attribute7(x);
6531 l_terr_all_rec.attribute8 := p_terr_attribute8(x);
6532 l_terr_all_rec.attribute9 := p_terr_attribute9(x);
6533 l_terr_all_rec.attribute10 := p_terr_attribute10(x);
6534 l_terr_all_rec.attribute11 := p_terr_attribute11(x);
6535 l_terr_all_rec.attribute12 := p_terr_attribute12(x);
6536 l_terr_all_rec.attribute13 := p_terr_attribute13(x);
6537 l_terr_all_rec.attribute14 := p_terr_attribute14(x);
6538 l_terr_all_rec.attribute15 := p_terr_attribute15(x);
6539
6540 SELECT JTF_TERR_USGS_S.NEXTVAL
6541 INTO l_terr_usg_id
6542 FROM DUAL;
6543
6544 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
6545 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
6546 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
6547 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
6548 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
6549 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
6550 l_terr_usgs_tbl(1).TERR_ID := NULL;
6551 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
6552 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
6553
6554 i := 0;
6555 K:= 0;
6556 FOR acc_type IN role_access(p_terr_group_id(x),pit.role_code) LOOP
6557 --i:=i+1;
6558 --dbms_output.put_line('acc type '||acc_type.access_type);
6559 IF acc_type.access_type= 'OPPORTUNITY' THEN
6560 i:=i+1;
6561 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
6562 INTO l_terr_qtype_usg_id
6563 FROM DUAL;
6564
6565 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
6566 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6567 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6568 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
6569 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
6570 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6571 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
6572 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1003;
6573 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
6574
6575 SELECT JTF_TERR_QUAL_S.NEXTVAL
6576 INTO l_terr_qual_id
6577 FROM DUAL;
6578
6579 /* opp expected purchase */
6580 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
6581 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6582 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6583 l_terr_qual_tbl(i).CREATION_DATE := p_creation_date(x);
6584 l_terr_qual_tbl(i).CREATED_BY := p_created_by(x);
6585 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6586 l_terr_qual_tbl(i).TERR_ID := NULL;
6587 l_terr_qual_tbl(i).QUAL_USG_ID := g_opp_qual_usg_id;
6588 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
6589 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
6590 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
6591 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
6592 l_terr_qual_tbl(i).ORG_ID := p_org_id(x);
6593
6594 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
6595 k:=k+1;
6596
6597 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
6598 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
6599 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
6600 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
6601 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
6602 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
6603 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
6604 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
6605 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
6606 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
6607 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
6608 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
6609 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
6610 l_terr_values_tbl(k).VALUE_SET := NULL;
6611 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
6612 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
6613 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
6614 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
6615 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
6616 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
6617 l_terr_values_tbl(k).qualifier_tbl_index := i;
6618
6619 IF (g_prod_cat_enabled) THEN
6620 l_terr_values_tbl(k).value1_id := qval.product_category_id;
6621 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
6622 ELSE
6623 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
6624 END IF;
6625
6626 END LOOP;
6627
6628 ELSIF acc_type.access_type= 'LEAD' THEN
6629
6630 i:=i+1;
6631 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
6632 INTO l_terr_qtype_usg_id
6633 FROM DUAL;
6634
6635 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
6636 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6637 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6638 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
6639 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
6640 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6641 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
6642 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
6643 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
6644
6645 SELECT JTF_TERR_QUAL_S.NEXTVAL
6646 INTO l_terr_qual_id
6647 FROM DUAL;
6648
6649 /* lead expected purchase */
6650 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
6651 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6652 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6653 l_terr_qual_tbl(i).CREATION_DATE := p_creation_date(x);
6654 l_terr_qual_tbl(i).CREATED_BY := p_created_by(x);
6655 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6656 l_terr_qual_tbl(i).TERR_ID := NULL;
6657 l_terr_qual_tbl(i).QUAL_USG_ID := g_lead_qual_usg_id;
6658 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
6659 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
6660 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
6661 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
6662 l_terr_qual_tbl(i).ORG_ID := p_org_id(x);
6663
6664 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
6665
6666 k:=k+1;
6667 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
6668 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
6669 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
6670 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
6671 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
6672 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
6673 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
6674 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
6675 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
6676 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
6677 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
6678 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
6679 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
6680 l_terr_values_tbl(k).VALUE_SET := NULL;
6681 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
6682 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
6683 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
6684 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
6685 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
6686 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
6687 l_terr_values_tbl(k).qualifier_tbl_index := i;
6688
6689 IF (g_prod_cat_enabled) THEN
6690 l_terr_values_tbl(k).value1_id := qval.product_category_id;
6691 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
6692 ELSE
6693 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
6694 END IF;
6695
6696 END LOOP;
6697
6698 ELSE
6699 IF G_DEBUG THEN
6700 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||p_terr_group_id(x));
6701 END IF;
6702 --l_terr_qualtypeusgs_tbl(1).ORG_ID:=p_ORG_ID(x);
6703 END IF;
6704
6705 END LOOP;
6706
6707 l_init_msg_list :=FND_API.G_TRUE;
6708
6709 JTF_TERRITORY_PVT.create_territory (
6710 p_api_version_number => l_api_version_number,
6711 p_init_msg_list => l_init_msg_list,
6712 p_commit => l_commit,
6713 p_validation_level => FND_API.g_valid_level_NONE,
6714 x_return_status => x_return_status,
6715 x_msg_count => x_msg_count,
6716 x_msg_data => x_msg_data,
6717 p_terr_all_rec => l_terr_all_rec,
6718 p_terr_usgs_tbl => l_terr_usgs_tbl,
6719 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
6720 p_terr_qual_tbl => l_terr_qual_tbl,
6721 p_terr_values_tbl => l_terr_values_tbl,
6722 x_terr_id => x_terr_id,
6723 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
6724 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
6725 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
6726 x_terr_values_out_tbl => x_terr_values_out_tbl
6727
6728 );
6729
6730 IF (x_return_status = 'S') THEN
6731
6732 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
6733 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
6734 UPDATE JTF_TERR_ALL
6735 SET TERR_GROUP_FLAG = 'Y'
6736 , TERR_GROUP_ID = p_TERR_GROUP_ID(x)
6737 , NAMED_ACCOUNT_FLAG = 'Y'
6738 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
6739 WHERE terr_id = x_terr_id;
6740
6741 IF G_Debug THEN
6742 write_log(2,' OVERLAY CNR territory created:' || l_terr_all_rec.NAME);
6743 END IF;
6744
6745 ELSE
6746 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
6747 IF G_Debug THEN
6748 write_log(2,x_msg_data);
6749 write_log(2,'Failed in OVERLAY CNR territory treation for ' || 'TERR_GROUP_ACCOUNT_ID = ' ||
6750 overlayterr.terr_group_account_id );
6751 END IF;
6752
6753 END IF; /* IF (x_return_status = 'S') */
6754
6755 --dbms_output.put_line('pit.role '||pit.role_code);
6756 i:=0;
6757
6758 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
6759 FOR rsc IN resource_grp( overlayterr.terr_group_account_id , pit.role_code) LOOP
6760
6761 i:=i+1;
6762
6763 SELECT JTF_TERR_RSC_S.NEXTVAL
6764 INTO l_terr_rsc_id
6765 FROM DUAL;
6766
6767 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
6768 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
6769 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
6770 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
6771 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
6772 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
6773 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
6774 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
6775 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
6776 l_TerrRsc_Tbl(i).ROLE := pit.role_code;
6777 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
6778 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
6779 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
6780 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
6781 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
6782 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
6783 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
6784 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
6785 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
6786 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
6787 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
6788 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
6789 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
6790 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
6791 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
6792 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
6793 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
6794 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
6795 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
6796 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
6797 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
6798 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
6799
6800 a := 0;
6801
6802 FOR rsc_acc IN role_access(p_terr_group_id(x),pit.role_code) LOOP
6803
6804 IF rsc_acc.access_type= 'OPPORTUNITY' THEN
6805
6806 a := a+1;
6807
6808 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
6809 INTO l_terr_rsc_access_id
6810 FROM DUAL;
6811
6812 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
6813 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
6814 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
6815 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
6816 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
6817 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
6818 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
6819 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
6820 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
6821 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
6822
6823 ELSIF rsc_acc.access_type= 'LEAD' THEN
6824
6825 a := a+1;
6826
6827 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
6828 INTO l_terr_rsc_access_id
6829 FROM DUAL;
6830
6831 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
6832 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
6833 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
6834 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
6835 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
6836 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
6837 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
6838 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
6839 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
6840 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
6841 END IF;
6842 END LOOP; /* rsc_acc in role_access */
6843
6844 l_init_msg_list :=FND_API.G_TRUE;
6845
6846 -- 07/08/03: JDOCHERT: bug#3023653
6847 Jtf_Territory_Resource_Pvt.create_terrresource (
6848 p_api_version_number => l_Api_Version_Number,
6849 p_init_msg_list => l_Init_Msg_List,
6850 p_commit => l_Commit,
6851 p_validation_level => FND_API.g_valid_level_NONE,
6852 x_return_status => x_Return_Status,
6853 x_msg_count => x_Msg_Count,
6854 x_msg_data => x_msg_data,
6855 p_terrrsc_tbl => l_TerrRsc_tbl,
6856 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
6857 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
6858 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
6859 );
6860
6861 IF x_Return_Status='S' THEN
6862 IF G_Debug THEN
6863 write_log(2,'Resource created for Product Interest OVERLAY Territory# '|| x_terr_id);
6864 END IF;
6865 ELSE
6866 IF G_Debug THEN
6867 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '|| x_terr_id);
6868 END IF;
6869 END IF;
6870
6871 END LOOP; /* rsc in resource_grp */
6872
6873 END LOOP;
6874
6875 ELSE
6876 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
6877 IF G_Debug THEN
6878 write_log(2,x_msg_data);
6879 write_log(2,'Failed in OVERLAY Territory Creation for Territory Group: ' || p_terr_group_id(x));
6880 END IF;
6881 END IF;
6882
6883 END LOOP; /* for overlayterr in get_OVLY_party_name */
6884 END IF; /* IF ( p_matching_rule_code(x) IN ('1', '2') ) THEN */
6885 /***************************************************************/
6886 /* (9) END: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
6887 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
6888 /***************************************************************/
6889
6890 END IF; /* l_pi_count*/
6891
6892 IF G_Debug THEN
6893 write_log(2, '');
6894 write_log(2,'END: Territory Creation for Territory Group: ' || p_terr_group_id(x));
6895 write_log(2, '');
6896 write_log(2, '----------------------------------------------------------');
6897 END IF;
6898
6899 END LOOP;
6900 /****************************************************
6901 ** (2) END: CREATE NAMED ACCOUNT TERRITORY CREATION
6902 ** FOR EACH TERRITORY GROUP
6903 *****************************************************/
6904
6905 EXCEPTION
6906 WHEN OTHERS THEN
6907
6908 IF G_Debug THEN
6909 Write_Log(2, 'Error in procedure create_na_terr_for_TGA');
6910 END IF;
6911 IF (get_NON_OVLY_na_trans%ISOPEN) THEN
6912 CLOSE get_NON_OVLY_na_trans;
6913 END IF;
6914 IF (role_access%ISOPEN) THEN
6915 CLOSE role_access;
6916 END IF;
6917 IF (NON_OVLY_role_access%ISOPEN) THEN
6918 CLOSE NON_OVLY_role_access;
6919 END IF;
6920 IF (role_interest_nonpi%ISOPEN) THEN
6921 CLOSE role_interest_nonpi;
6922 END IF;
6923 IF (role_pi%ISOPEN) THEN
6924 CLOSE role_pi;
6925 END IF;
6926 IF (role_pi_interest%ISOPEN) THEN
6927 CLOSE role_pi_interest;
6928 END IF;
6929 IF (resource_grp%ISOPEN) THEN
6930 CLOSE resource_grp;
6931 END IF;
6932 IF (get_party_info%ISOPEN) THEN
6933 CLOSE get_party_info;
6934 END IF;
6935 IF (get_party_name%ISOPEN) THEN
6936 CLOSE get_party_name;
6937 END IF;
6938 IF (get_OVLY_party_info%ISOPEN) THEN
6939 CLOSE get_OVLY_party_info;
6940 END IF;
6941 IF (get_OVLY_party_name%ISOPEN) THEN
6942 CLOSE get_OVLY_party_name;
6943 END IF;
6944 IF (match_rule1%ISOPEN) THEN
6945 CLOSE match_rule1;
6946 END IF;
6947 IF (match_rule3%ISOPEN) THEN
6948 CLOSE match_rule3;
6949 END IF;
6950 IF (na_access%ISOPEN) THEN
6951 CLOSE na_access;
6952 END IF;
6953 IF (catchall_cust%ISOPEN) THEN
6954 CLOSE catchall_cust;
6955 END IF;
6956 IF (role_no_pi%ISOPEN) THEN
6957 CLOSE role_no_pi;
6958 END IF;
6959
6960 RAISE;
6961 END create_na_terr_for_TGA;
6962
6963 /*----------------------------------------------------------
6964 This procedure will create Named account and Overlay Territory
6965 from the Named accounts.
6966 ****
6967 ----------------------------------------------------------*/
6968
6969 PROCEDURE create_na_terr_for_TG(p_terr_group_id IN g_terr_group_id_tab
6970 ,p_terr_group_name IN g_terr_group_name_tab
6971 ,p_rank IN g_rank_tab
6972 ,p_active_from_date IN g_active_from_date_tab
6973 ,p_active_to_date IN g_active_to_date_tab
6974 ,p_parent_terr_id IN g_parent_terr_id_tab
6975 ,p_matching_rule_code IN g_matching_rule_code_tab
6976 ,p_created_by IN g_created_by_tab
6977 ,p_creation_date IN g_creation_date_tab
6978 ,p_last_updated_by IN g_last_updated_by_tab
6979 ,p_last_update_date IN g_last_update_date_tab
6980 ,p_last_update_login IN g_last_update_login_tab
6981 ,p_catch_all_resource_id IN g_catch_all_resource_id_tab
6982 ,p_catch_all_resource_type IN g_catch_all_resource_type_tab
6983 ,p_generate_catchall_flag IN g_generate_catchall_flag_tab
6984 ,p_num_winners IN g_num_winners_tab
6985 ,p_org_id IN g_org_id_tab
6986 ,p_change_type IN g_change_type_tab
6987 ,p_terr_type_id IN VARCHAR2
6988 ,p_terr_id IN VARCHAR2
6989 ,p_terr_creation_flag IN VARCHAR2
6990 )
6991 IS
6992
6993 TYPE role_typ IS RECORD(
6994 grp_role_id NUMBER:=FND_API.G_MISS_NUM
6995 );
6996
6997 TYPE grp_role_tbl_type IS TABLE OF role_typ
6998 INDEX BY BINARY_INTEGER;
6999
7000 l_overnon_role_tbl grp_role_tbl_type;
7001 l_overnon_role_empty_tbl grp_role_tbl_type;
7002 l_terr_id VARCHAR2(30);
7003 l_terr_qual_id NUMBER;
7004 l_id_used_flag VARCHAR2(1);
7005 l_terr_usg_id NUMBER;
7006 l_terr_qtype_usg_id NUMBER;
7007 l_qual_type_usg_id NUMBER;
7008 l_qual_type VARCHAR2(20);
7009 l_terr_rsc_id NUMBER;
7010 l_terr_rsc_access_id NUMBER;
7011 l_api_version_number CONSTANT NUMBER := 1.0;
7012 l_init_msg_list VARCHAR2(1);
7013 l_commit VARCHAR2(1);
7014 l_pi_count NUMBER := 0;
7015 l_prev_qual_usg_id NUMBER;
7016 l_na_catchall_flag VARCHAR2(1);
7017 l_overlap_catchall_flag VARCHAR2(1);
7018 l_role_counter NUMBER := 0;
7019 l_overlay_top NUMBER;
7020 l_overlay NUMBER;
7021 l_nacat NUMBER;
7022 l_id NUMBER;
7023 l_ovnon_flag VARCHAR2(1):='N';
7024 l_na_count NUMBER;
7025 l_terr_exists NUMBER;
7026
7027 x_return_status VARCHAR2(1);
7028 x_msg_count NUMBER;
7029 x_msg_data VARCHAR2(2000);
7030 x_terr_id NUMBER;
7031
7032 i NUMBER;
7033 j NUMBER;
7034 k NUMBER;
7035 l NUMBER;
7036 a NUMBER;
7037
7038 l_terr_all_rec JTF_TERRITORY_PVT.terr_all_rec_type;
7039 l_terr_usgs_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
7040 l_terr_qualtypeusgs_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
7041 l_terr_qual_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
7042 l_terr_values_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
7043
7044 l_terr_usgs_empty_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
7045 l_terr_qualtypeusgs_empty_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
7046 l_terr_qual_empty_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
7047 l_terr_values_empty_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
7048
7049 x_terr_usgs_out_tbl JTF_TERRITORY_PVT.terr_usgs_out_tbl_type;
7050 x_terr_qualtypeusgs_out_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_out_tbl_type;
7051 x_terr_qual_out_tbl JTF_TERRITORY_PVT.terr_qual_out_tbl_type;
7052 x_terr_values_out_tbl JTF_TERRITORY_PVT.terr_values_out_tbl_type;
7053
7054 l_TerrRsc_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type_wflex;
7055 l_TerrRsc_Access_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
7056
7057 l_TerrRsc_empty_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type_wflex;
7058 l_TerrRsc_Access_empty_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
7059
7060 x_TerrRsc_Out_Tbl Jtf_Territory_Resource_Pvt.TerrResource_out_tbl_type;
7061 x_TerrRsc_Access_Out_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_out_tbl_type;
7062
7063
7064 /* JDOCHERT: /05/29/03:
7065 ** Transaction Types for a NON-OVERLAY territory are
7066 ** determined by all salesteam members on this Named Account
7067 ** having Roles without Product Interests defined
7068 ** so there is no Overlay Territories to assign
7069 ** Leads and Opportunities. If all Roles have Product Interests
7070 ** then only ACCOUNT transaction type should
7071 ** be used in Non-Overlay Named Account definition
7072 */
7073 CURSOR get_NON_OVLY_na_trans(LP_terr_group_account_id NUMBER) IS
7074 SELECT ra.access_type
7075 FROM
7076 jtf_tty_named_acct_rsc nar
7077 , jtf_tty_terr_grp_accts tga
7078 , jtf_tty_terr_grp_roles tgr
7079 , jtf_tty_role_access ra
7080 WHERE tga.terr_group_account_id = nar.terr_group_account_id
7081 AND nar.terr_group_account_id = LP_terr_group_account_id
7082 AND tga.terr_group_id = tgr.terr_group_id
7083 AND nar.rsc_role_code = tgr.role_code
7084 AND ra.terr_group_role_id = tgr.terr_group_role_id
7085 AND ra.access_type IN ('ACCOUNT')
7086 UNION
7087 SELECT ra.access_type
7088 FROM
7089 jtf_tty_named_acct_rsc nar
7090 , jtf_tty_terr_grp_accts tga
7091 , jtf_tty_terr_grp_roles tgr
7092 , jtf_tty_role_access ra
7093 WHERE tga.terr_group_account_id = nar.terr_group_account_id
7094 AND nar.terr_group_account_id = LP_terr_group_account_id
7095 AND tga.terr_group_id = tgr.terr_group_id
7096 AND nar.rsc_role_code = tgr.role_code
7097 AND ra.terr_group_role_id = tgr.terr_group_role_id
7098 AND NOT EXISTS (
7099 SELECT NULL
7100 FROM jtf_tty_role_prod_int rpi
7101 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id );
7102
7103
7104 /* Access Types for a particular Role within a Territory Group */
7105 CURSOR role_access(l_terr_group_id NUMBER,l_role VARCHAR2) IS
7106 SELECT DISTINCT a.access_type
7107 FROM jtf_tty_role_access a
7108 , jtf_tty_terr_grp_roles b
7109 WHERE a.terr_group_role_id = b.terr_group_role_id
7110 AND b.terr_group_id = l_terr_group_id
7111 AND b.role_code = l_role
7112 ORDER BY a.access_type ;
7113
7114 /* Access Types for a particular Role within a Territory Group */
7115 CURSOR NON_OVLY_role_access( lp_terr_group_id NUMBER
7116 , lp_role VARCHAR2) IS
7117 SELECT DISTINCT a.access_type, a.trans_access_code
7118 FROM jtf_tty_role_access a
7119 , jtf_tty_terr_grp_roles b
7120 WHERE a.terr_group_role_id = b.terr_group_role_id
7121 AND b.terr_group_id = lp_terr_group_id
7122 AND b.role_code = lp_role
7123 AND NOT EXISTS (
7124 /* Product Interest does not exist for this role */
7125 SELECT NULL
7126 FROM jtf_tty_role_prod_int rpi
7127 WHERE rpi.terr_group_role_id = B.TERR_GROUP_ROLE_ID )
7128 ORDER BY a.access_type ;
7129
7130 /* Roles WITHOUT a Product Iterest defined */
7131 CURSOR role_interest_nonpi(l_terr_group_id NUMBER) IS
7132 SELECT b.role_code role_code
7133 --,a.interest_type_id
7134 ,b.terr_group_id
7135 FROM jtf_tty_role_prod_int a
7136 , jtf_tty_terr_grp_roles b
7137 WHERE a.terr_group_role_id(+) = b.terr_group_role_id
7138 AND b.terr_group_id = l_terr_group_id
7139 AND a.terr_group_role_id IS NULL
7140 ORDER BY b.role_code;
7141
7142 /* Roles WITH a Product Iterest defined */
7143 CURSOR role_pi( lp_terr_group_id NUMBER
7144 , lp_terr_group_account_id NUMBER) IS
7145 SELECT DISTINCT
7146 b.role_code role_code
7147 , r.role_name role_name
7148 FROM jtf_rs_roles_vl r
7149 , jtf_tty_role_prod_int a
7150 , jtf_tty_terr_grp_roles b
7151 WHERE r.role_code = b.role_code
7152 AND a.terr_group_role_id = b.terr_group_role_id
7153 AND b.terr_group_id = lp_terr_group_id
7154 AND EXISTS (
7155 /* Named Account exists with Salesperson with this role */
7156 SELECT NULL
7157 FROM jtf_tty_named_acct_rsc nar, jtf_tty_terr_grp_accts tga
7158 WHERE tga.terr_group_account_id = nar.terr_group_account_id
7159 AND nar.terr_group_account_id = lp_terr_group_account_id
7160 AND tga.terr_group_id = b.terr_group_id
7161 AND nar.rsc_role_code = b.role_code );
7162
7163 /* Product Interest for a Role */
7164 CURSOR role_pi_interest(l_terr_group_id NUMBER,l_role VARCHAR2) IS
7165 SELECT a.interest_type_id
7166 ,a.product_category_id
7167 ,a.product_category_set_id
7168 FROM jtf_tty_role_prod_int a
7169 , jtf_tty_terr_grp_roles b
7170 WHERE a.terr_group_role_id = b.terr_group_role_id
7171 AND b.terr_group_id = l_terr_group_id
7172 AND b.role_code = l_role;
7173
7174 CURSOR resource_grp(l_terr_group_acct_id NUMBER,l_role VARCHAR2) IS
7175 SELECT DISTINCT b.resource_id
7176 , b.rsc_group_id
7177 , b.rsc_resource_type
7178 , b.start_date
7179 , b.end_date
7180 , to_char(null) attribute_category
7181 , b.attribute1 attribute1
7182 , b.attribute2 attribute2
7183 , b.attribute3 attribute3
7184 , b.attribute4 attribute4
7185 , b.attribute5 attribute5
7186 , to_char(null) attribute6
7187 , to_char(null) attribute7
7188 , to_char(null) attribute8
7189 , to_char(null) attribute9
7190 , to_char(null) attribute10
7191 , to_char(null) attribute11
7192 , to_char(null) attribute12
7193 , to_char(null) attribute13
7194 , to_char(null) attribute14
7195 , to_char(null) attribute15
7196 FROM jtf_tty_terr_grp_accts a
7197 , jtf_tty_named_acct_rsc b
7198 WHERE a.terr_group_account_id = l_terr_group_acct_id
7199 AND a.terr_group_account_id = b.terr_group_account_id
7200 AND b.rsc_role_code = l_role;
7201
7202 /* used for NAMED ACCOUNT territory creation for duns# and party# qualifier */
7203 CURSOR get_party_info(LP_terr_group_id NUMBER, l_matching_rule_code VARCHAR2) IS
7204 SELECT SUBSTR(a.party_name, 1, 45) || ': ' || a.postal_code name
7205 , b.named_account_id
7206 , c.terr_group_account_id
7207 , c.start_date
7208 , c.end_date
7209 , to_char(null) attribute_category
7210 , c.attribute1
7211 , c.attribute2
7212 , c.attribute3
7213 , c.attribute4
7214 , c.attribute5
7215 , c.attribute6
7216 , c.attribute7
7217 , c.attribute8
7218 , c.attribute9
7219 , c.attribute10
7220 , c.attribute11
7221 , c.attribute12
7222 , c.attribute13
7223 , c.attribute14
7224 , c.attribute15
7225 FROM hz_parties a
7226 , jtf_tty_named_accts b
7227 , jtf_tty_terr_grp_accts c
7228 WHERE c.terr_group_id = LP_terr_group_id
7229 AND b.named_account_id = c.named_account_id
7230 AND a.party_id = b.party_id
7231 AND a.status = 'A'
7232 -- AND (a.DUNS_NUMBER_C IS NOT NULL OR l_matching_rule_code = '4')
7233 AND EXISTS (
7234 /* Salesperson exists for this Named Account */
7235 SELECT NULL
7236 FROM jtf_tty_named_acct_rsc nar
7237 WHERE nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
7238
7239 /* get the PARTY_NAME + POSTAL_CODE for the Named Account:
7240 ** used for NAMED ACCOUNT territory creation */
7241 CURSOR get_party_name(LP_terr_group_id NUMBER) IS
7242 SELECT /*+ index(b JTF_TTY_NAMED_ACCTS_U1) */ SUBSTR(a.party_name, 1, 45) || ': ' || a.postal_code name
7243 , b.named_account_id
7244 , c.terr_group_account_id
7245 , a.duns_number_c
7246 , c.start_date
7247 , c.end_date
7248 , to_char(null) attribute_category
7249 , c.attribute1
7250 , c.attribute2
7251 , c.attribute3
7252 , c.attribute4
7253 , c.attribute5
7254 , c.attribute6
7255 , c.attribute7
7256 , c.attribute8
7257 , c.attribute9
7258 , c.attribute10
7259 , c.attribute11
7260 , c.attribute12
7261 , c.attribute13
7262 , c.attribute14
7263 , c.attribute15
7264 FROM hz_parties a
7265 , jtf_tty_named_accts b
7266 , jtf_tty_terr_grp_accts c
7267 WHERE c.terr_group_id = LP_terr_group_id
7268 AND b.named_account_id = c.named_account_id
7269 AND a.party_id = b.party_id
7270 AND a.status = 'A'
7271 AND EXISTS (
7272 /* Named Account has at least 1 Mapping Rule */
7273 SELECT 1
7274 FROM jtf_tty_acct_qual_maps d
7275 WHERE d.named_account_id = c.named_account_id )
7276 AND EXISTS (
7277 /* Salesperson exists for this Named Account */
7278 SELECT NULL
7279 FROM jtf_tty_named_acct_rsc nar
7280 WHERE nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
7281
7282 /* used for OVERLAY territory creation for DUNS# and Party Number qualifier */
7283 CURSOR get_OVLY_party_info(LP_terr_group_id NUMBER, l_matching_rule_code VARCHAR2) IS
7284 SELECT SUBSTR(a.party_name, 1, 45) || ': ' || a.postal_code name
7285 , b.named_account_id
7286 , c.terr_group_account_id
7287 , to_char(null) attribute_category
7288 , c.attribute1
7289 , c.attribute2
7290 , c.attribute3
7291 , c.attribute4
7292 , c.attribute5
7293 , c.attribute6
7294 , c.attribute7
7295 , c.attribute8
7296 , c.attribute9
7297 , c.attribute10
7298 , c.attribute11
7299 , c.attribute12
7300 , c.attribute13
7301 , c.attribute14
7302 , c.attribute15
7303 FROM hz_parties a
7304 , jtf_tty_named_accts b
7305 , jtf_tty_terr_grp_accts c
7306 WHERE c.terr_group_id = LP_terr_group_id
7307 AND b.named_account_id = c.named_account_id
7308 AND a.party_id = b.party_id
7309 AND a.status = 'A'
7310 AND (a.DUNS_NUMBER_C IS NOT NULL OR l_matching_rule_code = '4')
7311 AND EXISTS (
7312 /* Salesperson, with Role that has a Product
7313 ** Interest defined, exists for this Named Account */
7314 SELECT NULL
7315 FROM jtf_tty_named_acct_rsc nar
7316 , jtf_tty_role_prod_int rpi
7317 , jtf_tty_terr_grp_roles tgr
7318 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
7319 AND tgr.terr_group_id = C.TERR_GROUP_ID
7320 AND tgr.role_code = nar.rsc_role_code
7321 AND nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
7322
7323 /* get the PARTY_NAME + POSTAL_CODE for the Named Account
7324 ** used for OVERLAY territory creation */
7325 CURSOR get_OVLY_party_name(LP_terr_group_id NUMBER) IS
7326 SELECT SUBSTR(a.party_name, 1, 45) || ': ' || a.postal_code name
7327 , b.named_account_id
7328 , c.terr_group_account_id
7329 , a.duns_number_c
7330 , to_char(null) attribute_category
7331 , c.attribute1
7332 , c.attribute2
7333 , c.attribute3
7334 , c.attribute4
7335 , c.attribute5
7336 , c.attribute6
7337 , c.attribute7
7338 , c.attribute8
7339 , c.attribute9
7340 , c.attribute10
7341 , c.attribute11
7342 , c.attribute12
7343 , c.attribute13
7344 , c.attribute14
7345 , c.attribute15
7346 FROM hz_parties a
7347 , jtf_tty_named_accts b
7348 , jtf_tty_terr_grp_accts c
7349 WHERE c.terr_group_id = LP_terr_group_id
7350 AND b.named_account_id = c.named_account_id
7351 AND a.party_id = b.party_id
7352 AND a.status = 'A'
7353 AND EXISTS (
7354 /* Named Account has at least 1 Mapping Rule */
7355 SELECT 1
7356 FROM jtf_tty_acct_qual_maps d
7357 WHERE d.named_account_id = c.named_account_id )
7358 AND EXISTS (
7359 /* Salesperson, with Role that has a Product
7360 ** Interest defined, exists for this Named Account */
7361 SELECT NULL
7362 FROM jtf_tty_named_acct_rsc nar
7363 , jtf_tty_role_prod_int rpi
7364 , jtf_tty_terr_grp_roles tgr
7365 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
7366 AND tgr.terr_group_id = C.TERR_GROUP_ID
7367 AND tgr.role_code = nar.rsc_role_code
7368 AND nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
7369
7370 /* get Customer Keynames and Postal Code mappings
7371 ** for the Named Account */
7372 /* bug#2925153: JRADHAKR: Added value2_char */
7373 CURSOR match_rule1( l_na_id NUMBER) IS
7374 SELECT b.qual_usg_id
7375 , b.comparison_operator
7376 , b.value1_char
7377 , b.value2_char
7378 FROM jtf_tty_acct_qual_maps b
7379 WHERE b.qual_usg_id IN (-1007, -1012)
7380 AND b.named_account_id = l_na_id
7381 ORDER BY b.qual_usg_id;
7382
7383 /* get DUNS# for the Named Account */
7384 /* bug#2933116: JDOCHERT: 05/27/03: support for DUNS# Qualifier */
7385 /* get party number for the Named Account */
7386 /* bug#3426946: ACHANDA: 03/04/04: support for party number Qualifier */
7387 /* JRADHAKR: Added support for Party site id and hierarchy */
7388 CURSOR match_rule3(l_na_id NUMBER, l_matching_rule_code VARCHAR2) IS
7389 SELECT DECODE(l_matching_rule_code, '4', -1129, '2', -1120, '3', -1120, '5',-1005, -1001) qual_usg_id
7390 , '=' comparison_operator
7391 , DECODE(l_matching_rule_code, '4', hzp.party_number, '2', hzp.duns_number_c, '3', hzp.duns_number_c) value1_char
7392 , DECODE(l_matching_rule_code, '5', na.party_site_id, hzp.party_id) value1_num
7393 FROM hz_parties hzp, jtf_tty_named_accts na
7394 WHERE hzp.status = 'A'
7395 AND hzp.party_id = na.party_id
7396 AND na.named_account_id = l_na_id;
7397
7398
7399 /* Access Types for a Territory Group */
7400 CURSOR na_access(l_terr_group_id NUMBER) IS
7401 SELECT DISTINCT a.access_type
7402 FROM jtf_tty_role_access a
7403 , jtf_tty_terr_grp_roles b
7404 WHERE a.terr_group_role_id = b.terr_group_role_id
7405 AND b.terr_group_id = l_terr_group_id;
7406
7407 /* Named Account Catch-All Customer Keyname values */
7408 CURSOR catchall_cust(l_terr_group_id NUMBER) IS
7409 SELECT DISTINCT b.comparison_operator
7410 ,b.value1_char
7411 FROM jtf_tty_terr_grp_accts a
7412 , jtf_tty_acct_qual_maps b
7413 WHERE a.named_account_id = b.named_account_id
7414 AND a.terr_group_id = l_terr_group_id
7415 AND b.qual_usg_id = -1012
7416 ORDER BY b.comparison_operator,b.value1_char;
7417
7418 /* Get Top-Level Parent Territory details */
7419 CURSOR topterr(l_terr NUMBER) IS
7420 SELECT name
7421 , description
7422 , rank
7423 , parent_territory_id
7424 , terr_id
7425 FROM jtf_terr_all
7426 WHERE terr_id = l_terr;
7427
7428 /* get Qualifiers used in a territory */
7429 CURSOR csr_get_qual( lp_terr_id NUMBER) IS
7430 SELECT jtq.terr_qual_id
7431 , jtq.qual_usg_id
7432 FROM jtf_terr_qual_all jtq
7433 WHERE jtq.terr_id = lp_terr_id;
7434
7435 /* get Values used in a territory qualifier */
7436 CURSOR csr_get_qual_val ( lp_terr_qual_id NUMBER ) IS
7437 SELECT jtv.TERR_VALUE_ID
7438 , jtv.INCLUDE_FLAG
7439 , jtv.COMPARISON_OPERATOR
7440 , jtv.LOW_VALUE_CHAR
7441 , jtv.HIGH_VALUE_CHAR
7442 , jtv.LOW_VALUE_NUMBER
7443 , jtv.HIGH_VALUE_NUMBER
7444 , jtv.VALUE_SET
7445 , jtv.INTEREST_TYPE_ID
7446 , jtv.PRIMARY_INTEREST_CODE_ID
7447 , jtv.SECONDARY_INTEREST_CODE_ID
7448 , jtv.CURRENCY_CODE
7449 , jtv.ORG_ID
7450 , jtv.ID_USED_FLAG
7451 , jtv.LOW_VALUE_CHAR_ID
7452 FROM jtf_terr_values_all jtv
7453 WHERE jtv.terr_qual_id = lp_terr_qual_id;
7454
7455 /* get those roles for a territory Group that
7456 ** do not have Product Interest defined */
7457 CURSOR role_no_pi(l_terr_group_id NUMBER) IS
7458 SELECT DISTINCT b.role_code
7459 FROM jtf_tty_role_access a
7460 , jtf_tty_terr_grp_roles b
7461 , jtf_tty_role_prod_int c
7462 WHERE a.terr_group_role_id = b.terr_group_role_id
7463 AND b.terr_group_id = l_terr_group_id
7464 AND a.access_type = 'ACCOUNT'
7465 AND c.terr_group_role_id = b.terr_group_role_id
7466 AND NOT EXISTS ( SELECT 1
7467 FROM jtf_tty_role_prod_int e
7468 , jtf_tty_terr_grp_roles d
7469 WHERE e.terr_group_role_id (+) = d.terr_group_role_id
7470 AND d.terr_group_id = b.terr_group_id
7471 AND d.role_code = b.role_code
7472 AND e.interest_type_id IS NULL);
7473
7474 BEGIN
7475
7476 /* (2) START: CREATE NAMED ACCOUNT TERRITORY CREATION
7477 ** FOR EACH TERRITORY GROUP */
7478 FOR x IN p_terr_group_id.FIRST .. p_terr_group_id.LAST LOOP
7479 -- if the territory group has been updated , delete it before recreating the corresponding territories
7480 IF (p_change_type(x) = 'UPDATE') THEN
7481 IF G_Debug THEN
7482 Write_Log(2, 'create_na_terr_for_TG : START: delete_TG');
7483 END IF;
7484
7485 delete_TG(p_terr_group_id(x), p_terr_id ,p_terr_creation_flag );
7486
7487 IF G_Debug THEN
7488 Write_Log(2, 'create_na_terr_for_TG : END: delete_TG');
7489 Write_Log(2, 'create_na_terr_for_TG : All the territories corresponding to the territory group ' || p_terr_group_id(x)
7490 ||
7491 ' have been deleted successfully.');
7492 END IF;
7493 END IF;
7494
7495 IF G_Debug THEN
7496 write_log(2, '');
7497 write_log(2, '----------------------------------------------------------');
7498 write_log(2, 'create_na_terr_for_TG : BEGIN: Territory Creation for Territory Group: ' ||
7499 p_terr_group_id(x) || ' : ' || p_terr_group_name(x) );
7500 END IF;
7501
7502 /* reset these processing values for the Territory Group */
7503 l_na_catchall_flag := 'N';
7504 l_overlap_catchall_flag := 'N';
7505 l_ovnon_flag := 'N';
7506 l_overnon_role_tbl := l_overnon_role_empty_tbl;
7507
7508
7509 /** Roles with No Product Interest */
7510 i:=0;
7511 FOR overlayandnon IN role_no_pi(p_terr_group_id(x)) LOOP
7512
7513 l_ovnon_flag := 'Y';
7514 i := i + 1;
7515
7516 SELECT JTF_TTY_TERR_GRP_ROLES_S.NEXTVAL
7517 INTO l_id
7518 FROM DUAL;
7519
7520 l_overnon_role_tbl(i).grp_role_id:= l_id;
7521
7522 INSERT INTO JTF_TTY_TERR_GRP_ROLES(
7523 TERR_GROUP_ROLE_ID
7524 , OBJECT_VERSION_NUMBER
7525 , TERR_GROUP_ID
7526 , ROLE_CODE
7527 , CREATED_BY
7528 , CREATION_DATE
7529 , LAST_UPDATED_BY
7530 , LAST_UPDATE_DATE
7531 , LAST_UPDATE_LOGIN)
7532 VALUES(
7533 l_overnon_role_tbl(i).grp_role_id
7534 , 1
7535 , p_terr_group_id(x)
7536 , overlayandnon.role_code
7537 , G_USER_ID
7538 , SYSDATE
7539 , G_USER_ID
7540 , SYSDATE
7541 , G_LOGIN_ID);
7542
7543 INSERT INTO JTF_TTY_ROLE_ACCESS(
7544 TERR_GROUP_ROLE_ACCESS_ID
7545 , OBJECT_VERSION_NUMBER
7546 , TERR_GROUP_ROLE_ID
7547 , ACCESS_TYPE
7548 , CREATED_BY
7549 , CREATION_DATE
7550 , LAST_UPDATED_BY
7551 , LAST_UPDATE_DATE
7552 , LAST_UPDATE_LOGIN)
7553 VALUES(
7554 JTF_TTY_ROLE_ACCESS_S.NEXTVAL
7555 , 1
7556 , l_overnon_role_tbl(i).grp_role_id
7557 , 'ACCOUNT'
7558 , G_USER_ID
7559 , SYSDATE
7560 , G_USER_ID
7561 , SYSDATE
7562 , G_LOGIN_ID);
7563
7564 END LOOP; /* for overlayandnon in role_no_pi */
7565
7566
7567 /* does Territory Group have at least 1 Named Account? */
7568 /*SELECT COUNT(*)
7569 INTO l_na_count
7570 FROM jtf_tty_terr_groups g
7571 , jtf_tty_terr_grp_accts ga
7572 , jtf_tty_named_accts a
7573 WHERE g.terr_group_id = ga.terr_group_id
7574 AND ga.named_account_id = a.named_account_id
7575 AND g.terr_group_id = p_terr_group_id(x)
7576 AND ROWNUM < 2;*/
7577
7578 l_na_count :=0;
7579
7580
7581 /*********************************************************************/
7582 /*********************************************************************/
7583 /************** NON-OVERLAY TERRITORY CREATION ***********************/
7584 /*********************************************************************/
7585 /*********************************************************************/
7586
7587 /* BEGIN: if Territory Group exists with Named Accounts then auto-create territory definitions */
7588 ---- R12: territory is always created no matter how many NA
7589 IF (l_na_count >= 0) THEN
7590
7591
7592 /***************************************************************/
7593 /* (3) START: CREATE PLACEHOLDER TERRITORY FOR TERRITORY GROUP */
7594 /***************************************************************/
7595 L_TERR_USGS_TBL := L_TERR_USGS_EMPTY_TBL;
7596 L_TERR_QUALTYPEUSGS_TBL := L_TERR_QUALTYPEUSGS_EMPTY_TBL;
7597 L_TERR_QUAL_TBL := L_TERR_QUAL_EMPTY_TBL;
7598 L_TERR_VALUES_TBL := L_TERR_VALUES_EMPTY_TBL;
7599 L_TERRRSC_TBL := L_TERRRSC_EMPTY_TBL;
7600 L_TERRRSC_ACCESS_TBL := L_TERRRSC_ACCESS_EMPTY_TBL;
7601
7602 /* TERRITORY HEADER */
7603 L_TERR_ALL_REC.LAST_UPDATE_DATE := p_last_update_date(x);
7604 L_TERR_ALL_REC.LAST_UPDATED_BY := G_USER_ID;
7605 L_TERR_ALL_REC.CREATION_DATE := p_creation_date(x);
7606 L_TERR_ALL_REC.CREATED_BY := G_USER_ID ;
7607 L_TERR_ALL_REC.LAST_UPDATE_LOGIN := G_LOGIN_ID;
7608 L_TERR_ALL_REC.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
7609 L_TERR_ALL_REC.NAME := p_terr_group_name(x);
7610 L_TERR_ALL_REC.START_DATE_ACTIVE := p_active_from_date(x);
7611 L_TERR_ALL_REC.END_DATE_ACTIVE := p_active_to_date(x);
7612 L_TERR_ALL_REC.PARENT_TERRITORY_ID := p_parent_terr_id(x);
7613 L_TERR_ALL_REC.RANK := p_rank(x);
7614 L_TERR_ALL_REC.TEMPLATE_TERRITORY_ID := NULL;
7615 L_TERR_ALL_REC.TEMPLATE_FLAG := 'N';
7616 L_TERR_ALL_REC.ESCALATION_TERRITORY_ID := NULL;
7617 L_TERR_ALL_REC.ESCALATION_TERRITORY_FLAG := 'N';
7618 L_TERR_ALL_REC.OVERLAP_ALLOWED_FLAG := NULL;
7619 L_TERR_ALL_REC.DESCRIPTION := p_terr_group_name(x);
7620 L_TERR_ALL_REC.UPDATE_FLAG := 'N';
7621 L_TERR_ALL_REC.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
7622 L_TERR_ALL_REC.NUM_WINNERS := NULL ;
7623
7624 L_TERR_ALL_REC.TERRITORY_TYPE_ID := p_terr_type_id;
7625 L_TERR_ALL_REC.TERR_CREATION_FLAG := 'Y';
7626 L_TERR_ALL_REC.TERRITORY_GROUP_ID := p_terr_group_id(x);
7627 L_TERR_ALL_REC.TERR_ID := NULL;
7628 IF p_terr_id IS NOT NULL AND
7629 p_terr_creation_flag IS NOT NULL THEN
7630 L_TERR_ALL_REC.TERR_ID := p_terr_id;
7631 END IF;
7632
7633 /* ORG_ID IS SET TO SAME VALUE AS TERRITORY GROUP's Top-Level Parent Territory */
7634 l_terr_all_rec.ORG_ID := p_org_id(x);
7635
7636 /* ORACLE SALES AND TELESALES USAGE */
7637 SELECT JTF_TERR_USGS_S.NEXTVAL
7638 INTO l_terr_usg_id
7639 FROM DUAL;
7640
7641 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
7642 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
7643 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
7644 l_terr_usgs_tbl(1).LAST_UPDATED_BY := G_USER_ID;
7645 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
7646 l_terr_usgs_tbl(1).CREATED_BY := G_USER_ID;
7647 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:= G_LOGIN_ID;
7648 l_terr_usgs_tbl(1).TERR_ID := L_TERR_ALL_REC.TERR_ID; --NULL;
7649 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
7650
7651 i := 0;
7652 FOR actype IN na_access(p_terr_group_id(x))
7653 LOOP
7654 i := i+1;
7655
7656 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
7657 INTO l_terr_qtype_usg_id
7658 FROM DUAL;
7659
7660 IF ( actype.access_type = 'ACCOUNT' ) THEN
7661 l_qual_type_usg_id := -1001;
7662 ELSIF ( actype.access_type = 'LEAD' ) THEN
7663 l_qual_type_usg_id := -1002;
7664 ELSIF ( actype.access_type = 'OPPORTUNITY' ) THEN
7665 l_qual_type_usg_id := -1003;
7666 ELSIF ( actype.access_type = 'QUOTE' ) THEN
7667 l_qual_type_usg_id := -1105;
7668 ELSIF ( actype.access_type = 'PROPOSAL' ) THEN
7669 l_qual_type_usg_id := -1106;
7670 END IF;
7671
7672
7673 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
7674 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
7675 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
7676 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
7677 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
7678 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
7679 l_terr_qualtypeusgs_tbl(i).TERR_ID := L_TERR_ALL_REC.TERR_ID;
7680 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := l_qual_type_usg_id;
7681 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
7682
7683 END LOOP;
7684 IF (na_access%ISOPEN) THEN
7685 CLOSE na_access;
7686 END IF;
7687
7688 l_init_msg_list := FND_API.G_TRUE;
7689 /* CALL CREATE TERRITORY API */
7690 JTF_TERRITORY_PVT.create_territory (
7691 p_api_version_number => l_api_version_number,
7692 p_init_msg_list => l_init_msg_list,
7693 p_commit => l_commit,
7694 p_validation_level => FND_API.g_valid_level_NONE,
7695 x_return_status => x_return_status,
7696 x_msg_count => x_msg_count,
7697 x_msg_data => x_msg_data,
7698 p_terr_all_rec => l_terr_all_rec,
7699 p_terr_usgs_tbl => l_terr_usgs_tbl,
7700 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
7701 p_terr_qual_tbl => l_terr_qual_tbl,
7702 p_terr_values_tbl => l_terr_values_tbl,
7703 x_terr_id => x_terr_id,
7704 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
7705 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
7706 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
7707 x_terr_values_out_tbl => x_terr_values_out_tbl
7708 );
7709
7710 /* BEGIN: SUCCESSFUL TERRITORY CREATION? */
7711 IF X_RETURN_STATUS = 'S' THEN
7712 /* JDOCHERT: 01/08/03: ADDED TERR_GROUP_ID */
7713 UPDATE JTF_TERR_ALL
7714 SET TERR_GROUP_FLAG = 'Y'
7715 , CATCH_ALL_FLAG = 'N'
7716 , TERR_GROUP_ID = p_terr_group_id(x)
7717 , NUM_WINNERS = p_num_winners(x)
7718 WHERE TERR_ID = X_TERR_ID;
7719
7720 L_NACAT := X_TERR_ID;
7721
7722 IF G_Debug THEN
7723 WRITE_LOG(2,'create_na_terr_for_TG : Top level Named Account territory created: TERR_ID# '||X_TERR_ID);
7724 END IF;
7725
7726 ELSE
7727 IF G_Debug THEN
7728 WRITE_LOG(2,'ERROR: PLACEHOLDER TERRITORY CREATION FAILED ' ||
7729 'FOR TERRITORY_GROUP_ID# ' ||p_terr_group_id(x));
7730 X_MSG_DATA := FND_MSG_PUB.GET(1, FND_API.G_FALSE);
7731 WRITE_LOG(2,X_MSG_DATA);
7732 END IF;
7733 END IF;
7734
7735 /*************************************************************/
7736 /* (3) END: CREATE PLACEHOLDER TERRITORY FOR TERRITORY GROUP */
7737 /*************************************************************/
7738
7739
7740 /****************************************************************/
7741 /* (4) START: CREATE NA CATCH-ALL TERRITORY FOR TERRITORY GROUP */
7742 /****************************************************************/
7743
7744
7745 IF ( p_matching_rule_code(x) IN ('1', '2') AND
7746 p_generate_catchall_flag(x) = 'Y' ) THEN
7747
7748 /* RESET TABLES */
7749 L_TERR_USGS_TBL := L_TERR_USGS_EMPTY_TBL;
7750 L_TERR_QUALTYPEUSGS_TBL := L_TERR_QUALTYPEUSGS_EMPTY_TBL;
7751 L_TERR_QUAL_TBL := L_TERR_QUAL_EMPTY_TBL;
7752 L_TERR_VALUES_TBL := L_TERR_VALUES_EMPTY_TBL;
7753 L_TERRRSC_TBL := L_TERRRSC_EMPTY_TBL;
7754 L_TERRRSC_ACCESS_TBL := L_TERRRSC_ACCESS_EMPTY_TBL;
7755
7756
7757 /* TERRITORY HEADER */
7758 /* Ensure static TERR_ID to benefit TAP Performance */
7759 L_TERR_ALL_REC.TERR_ID := p_terr_group_id(x) * -1;
7760
7761 L_TERR_ALL_REC.LAST_UPDATE_DATE := p_last_update_date(x);
7762 L_TERR_ALL_REC.LAST_UPDATED_BY := G_USER_ID;
7763 L_TERR_ALL_REC.CREATION_DATE := p_creation_date(x);
7764 L_TERR_ALL_REC.CREATED_BY := G_USER_ID;
7765 L_TERR_ALL_REC.LAST_UPDATE_LOGIN := G_LOGIN_ID;
7766 L_TERR_ALL_REC.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
7767 L_TERR_ALL_REC.NAME := p_terr_group_name(x) ||' (CATCH-ALL)';
7768 L_TERR_ALL_REC.START_DATE_ACTIVE := p_active_from_date(x) ;
7769 L_TERR_ALL_REC.END_DATE_ACTIVE := p_active_to_date(x);
7770 L_TERR_ALL_REC.PARENT_TERRITORY_ID := X_TERR_ID;
7771 L_TERR_ALL_REC.TERRITORY_TYPE_ID := p_terr_type_id;
7772 L_TERR_ALL_REC.TERR_CREATION_FLAG := NULL;
7773
7774 --
7775 -- 01/20/03: JDOCHERT: CHANGE RANK OF CATCH-ALL
7776 -- TO BE LESS THAT NAMED ACCOUNT TERRITORIES
7777 --
7778 L_TERR_ALL_REC.RANK := p_rank(x) + 100;
7779 --
7780
7781 L_TERR_ALL_REC.TEMPLATE_TERRITORY_ID := NULL;
7782 L_TERR_ALL_REC.TEMPLATE_FLAG := 'N';
7783 L_TERR_ALL_REC.ESCALATION_TERRITORY_ID := NULL;
7784 L_TERR_ALL_REC.ESCALATION_TERRITORY_FLAG := 'N';
7785 L_TERR_ALL_REC.OVERLAP_ALLOWED_FLAG := NULL;
7786 L_TERR_ALL_REC.DESCRIPTION := p_terr_group_name(x) ||' (CATCH-ALL)';
7787 L_TERR_ALL_REC.UPDATE_FLAG := 'N';
7788 L_TERR_ALL_REC.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
7789
7790
7791 /* ORG_ID IS SET TO SAME VALUE AS TERRITORY
7792 ** GROUP's Top-Level Parent Territory */
7793 l_terr_all_rec.ORG_ID := p_org_id(x);
7794 l_terr_all_rec.NUM_WINNERS := NULL ;
7795
7796 /* Oracle Sales and Telesales Usage */
7797 SELECT JTF_TERR_USGS_S.NEXTVAL
7798 INTO l_terr_usg_id
7799 FROM DUAL;
7800
7801 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
7802 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
7803 l_terr_usgs_tbl(1).LAST_UPDATED_BY := G_USER_ID;
7804 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
7805 l_terr_usgs_tbl(1).CREATED_BY := G_USER_ID;
7806 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := G_LOGIN_ID;
7807 l_terr_usgs_tbl(1).TERR_ID := NULL;
7808 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
7809 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
7810
7811 i := 0;
7812 FOR actype IN na_access(p_terr_group_id(x))
7813 LOOP
7814
7815 i:=i+1;
7816
7817 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
7818 INTO l_terr_qtype_usg_id
7819 FROM DUAL;
7820
7821 IF ( actype.access_type = 'ACCOUNT' ) THEN
7822 l_qual_type_usg_id := -1001;
7823 ELSIF ( actype.access_type = 'LEAD' ) THEN
7824 l_qual_type_usg_id := -1002;
7825 ELSIF ( actype.access_type = 'OPPORTUNITY' ) THEN
7826 l_qual_type_usg_id := -1003;
7827 ELSIF ( actype.access_type = 'QUOTE' ) THEN
7828 l_qual_type_usg_id := -1105;
7829 ELSIF ( actype.access_type = 'PROPOSAL' ) THEN
7830 l_qual_type_usg_id := -1106;
7831 END IF;
7832
7833 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
7834 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
7835 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
7836 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
7837 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
7838 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
7839 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
7840 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := l_qual_type_usg_id;
7841 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
7842
7843 END LOOP;
7844
7845 /*
7846 ** Customer Name Range Qualifier -1012 */
7847 SELECT JTF_TERR_QUAL_S.NEXTVAL
7848 INTO l_terr_qual_id
7849 FROM DUAL;
7850
7851 l_terr_qual_tbl(1).TERR_QUAL_ID := l_terr_qual_id;
7852 l_terr_qual_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
7853 l_terr_qual_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
7854 l_terr_qual_tbl(1).CREATION_DATE := p_creation_date(x);
7855 l_terr_qual_tbl(1).CREATED_BY := p_created_by(x);
7856 l_terr_qual_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
7857 l_terr_qual_tbl(1).TERR_ID := NULL;
7858 l_terr_qual_tbl(1).QUAL_USG_ID := -1012;
7859 l_terr_qual_tbl(1).QUALIFIER_MODE := NULL;
7860 l_terr_qual_tbl(1).OVERLAP_ALLOWED_FLAG := 'N';
7861 l_terr_qual_tbl(1).USE_TO_NAME_FLAG := NULL;
7862 l_terr_qual_tbl(1).GENERATE_FLAG := NULL;
7863 l_terr_qual_tbl(1).ORG_ID := p_org_id(x);
7864 l_id_used_flag := 'N' ;
7865
7866 /*
7867 ** get all the Customer Name Range Values for all the Named Accounts
7868 ** that belong to this Territory Group */
7869 k:=0;
7870 FOR cust_value IN catchall_cust(p_terr_group_id(x)) LOOP
7871
7872 k:=k+1;
7873
7874 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
7875 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
7876 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
7877 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
7878 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
7879 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
7880 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
7881 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
7882 l_terr_values_tbl(k).COMPARISON_OPERATOR := cust_value.comparison_operator;
7883 l_terr_values_tbl(k).LOW_VALUE_CHAR := cust_value.value1_char;
7884 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
7885 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
7886 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
7887 l_terr_values_tbl(k).VALUE_SET := NULL;
7888 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
7889 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
7890 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
7891 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
7892 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
7893 l_terr_values_tbl(k).ID_USED_FLAG := l_id_used_flag;
7894 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
7895 l_terr_values_tbl(k).qualifier_tbl_index := 1;
7896
7897 END LOOP;
7898
7899 l_init_msg_list := FND_API.G_TRUE;
7900
7901 JTF_TERRITORY_PVT.create_territory (
7902 p_api_version_number => l_api_version_number,
7903 p_init_msg_list => l_init_msg_list,
7904 p_commit => l_commit,
7905 p_validation_level => FND_API.g_valid_level_NONE,
7906 x_return_status => x_return_status,
7907 x_msg_count => x_msg_count,
7908 x_msg_data => x_msg_data,
7909 p_terr_all_rec => l_terr_all_rec,
7910 p_terr_usgs_tbl => l_terr_usgs_tbl,
7911 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
7912 p_terr_qual_tbl => l_terr_qual_tbl,
7913 p_terr_values_tbl => l_terr_values_tbl,
7914 x_terr_id => x_terr_id,
7915 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
7916 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
7917 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
7918 x_terr_values_out_tbl => x_terr_values_out_tbl
7919
7920 );
7921
7922 IF G_Debug THEN
7923 write_log(2,' NAMED ACCOUNT CATCH ALL TERRITORY CREATED: TERR_ID# '||x_terr_id);
7924 END IF;
7925
7926 /* BEGIN: Successful Territory creation? */
7927 IF x_return_status = 'S' THEN
7928
7929 /* JDOCHERT: 01/08/03: Added TERR_GROUP_ID and CATCH_ALL_FLAG */
7930 UPDATE JTF_TERR_ALL
7931 SET TERR_GROUP_FLAG = 'Y'
7932 , TERR_GROUP_ID = p_terr_group_id(x)
7933 , CATCH_ALL_FLAG = 'Y'
7934 WHERE terr_id = x_terr_id;
7935
7936 l_init_msg_list :=FND_API.G_TRUE;
7937
7938 /* The resources for catch ALL territory will be created through a seperate
7939 procedure call in UI : JTF_TTY_GEN_TERR_PVT.create_catchall_terr_rsc.
7940
7941 SELECT JTF_TERR_RSC_S.NEXTVAL
7942 INTO l_terr_rsc_id
7943 FROM DUAL;
7944
7945 l_TerrRsc_Tbl(1).terr_id := x_terr_id;
7946 l_TerrRsc_Tbl(1).TERR_RSC_ID := l_terr_rsc_id;
7947 l_TerrRsc_Tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
7948 l_TerrRsc_Tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
7949 l_TerrRsc_Tbl(1).CREATION_DATE := p_creation_date(x);
7950 l_TerrRsc_Tbl(1).CREATED_BY := p_created_by(x);
7951 l_TerrRsc_Tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
7952 l_TerrRsc_Tbl(1).RESOURCE_ID := p_catch_all_resource_id(x);
7953 l_TerrRsc_Tbl(1).RESOURCE_TYPE := p_catch_all_resource_type(x);
7954 l_TerrRsc_Tbl(1).ROLE := 'SALES_ADMIN';
7955 l_TerrRsc_Tbl(1).PRIMARY_CONTACT_FLAG := 'N';
7956 l_TerrRsc_Tbl(1).START_DATE_ACTIVE := p_active_from_date(x);
7957 l_TerrRsc_Tbl(1).END_DATE_ACTIVE := p_active_to_date(x);
7958 l_TerrRsc_Tbl(1).ORG_ID := p_org_id(x);
7959 l_TerrRsc_Tbl(1).FULL_ACCESS_FLAG := 'Y';
7960 l_TerrRsc_Tbl(1).GROUP_ID := -999;
7961
7962 a:=0;
7963 FOR rsc_acc IN na_access(p_terr_group_id(x)) LOOP
7964
7965 a := a+1;
7966
7967 IF rsc_acc.access_type= 'ACCOUNT' THEN
7968
7969 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
7970 INTO l_terr_rsc_access_id
7971 FROM DUAL;
7972
7973 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
7974 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
7975 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
7976 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
7977 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
7978 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
7979 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
7980 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'ACCOUNT';
7981 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
7982 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := 1;
7983
7984 ELSIF rsc_acc.access_type= 'OPPORTUNITY' THEN
7985
7986 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
7987 INTO l_terr_rsc_access_id
7988 FROM DUAL;
7989
7990 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
7991 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
7992 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
7993 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
7994 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
7995 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
7996 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
7997 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
7998 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
7999 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := 1;
8000
8001 ELSIF rsc_acc.access_type= 'LEAD' THEN
8002
8003 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
8004 INTO l_terr_rsc_access_id
8005 FROM DUAL;
8006
8007 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
8008 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
8009 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
8010 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
8011 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
8012 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
8013 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
8014 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
8015 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
8016 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := 1;
8017
8018 END IF;
8019 END LOOP;
8020
8021 l_init_msg_list := FND_API.G_TRUE;
8022
8023 Jtf_Territory_Resource_Pvt.create_terrresource (
8024 p_api_version_number => l_Api_Version_Number,
8025 p_init_msg_list => l_Init_Msg_List,
8026 p_commit => l_Commit,
8027 p_validation_level => FND_API.g_valid_level_NONE,
8028 x_return_status => x_Return_Status,
8029 x_msg_count => x_Msg_Count,
8030 x_msg_data => x_msg_data,
8031 p_terrrsc_tbl => l_TerrRsc_tbl,
8032 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
8033 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
8034 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
8035 );
8036
8037 IF x_Return_Status='S' THEN
8038 IF G_Debug THEN
8039 write_log( 2,' RESOURCE CREATED FOR NAMED ACCOUNT CATCH ALL TERRITORY ' || x_terr_id);
8040 END IF;
8041 ELSE
8042 IF G_Debug THEN
8043 write_log( 2,' FAILED IN RESOURCE CREATION FOR NAMED ACCOUNT CATCH ALL TERRITORY' || x_terr_id);
8044 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
8045 write_log(2, x_msg_data);
8046 END IF;
8047 END IF;
8048
8049 */
8050
8051 /* else of -if the catch all territory creation failed */
8052 ELSE
8053 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
8054 IF G_Debug THEN
8055 write_log(2,x_msg_data);
8056 WRITE_LOG(2,'ERROR: NA CATCH-ALL TERRITORY CREATION FAILED ' || 'FOR TERRITORY_GROUP_ID# '
8057 ||p_terr_group_id(x));
8058 END IF;
8059 END IF;
8060
8061 END IF; /* ( p_matching_rule_code(x) IN ('1', '2') AND p_generate_catchall_flag(x) = 'Y' ) THEN */
8062
8063 /**************************************************************/
8064 /* (4) END: CREATE NA CATCH-ALL TERRITORY FOR TERRITORY GROUP */
8065 /**************************************************************/
8066
8067
8068 /***************************************************************/
8069 /* (5) START: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
8070 /* USING DUNS# , PARTY# PARTY_SITE_ID, ACOUNT HIERARCHY QULIFIER */
8071 /***************************************************************/
8072
8073 IF ( p_matching_rule_code(x) NOT IN ('1')) THEN -- IN ('2', '3', '4') ) THEN
8074
8075 /* if matching rule code is 2 or 3 create territories for duns qualifier else for party number qualifier */
8076 FOR naterr IN get_party_info(p_terr_group_id(x), p_matching_rule_code(x)) LOOP
8077
8078 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
8079 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
8080 l_terr_qual_tbl := l_terr_qual_empty_tbl;
8081 l_terr_values_tbl := l_terr_values_empty_tbl;
8082 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
8083 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
8084
8085 /* TERRITORY HEADER */
8086 /* Ensure static TERR_ID to benefit TAP Performance */
8087 BEGIN
8088
8089 l_terr_exists := 0;
8090
8091 SELECT COUNT(*)
8092 INTO l_terr_exists
8093 FROM jtf_terr_all jt
8094 WHERE jt.terr_id = naterr.terr_group_account_id * -100;
8095
8096 IF (l_terr_exists = 0) THEN
8097 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -100;
8098 ELSE
8099 l_terr_all_rec.TERR_ID := NULL;
8100 END IF;
8101
8102 EXCEPTION
8103 WHEN NO_DATA_FOUND THEN
8104 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -100;
8105 END;
8106
8107 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
8108 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
8109 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
8110 l_terr_all_rec.CREATED_BY := p_created_by(x);
8111 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
8112 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
8113
8114 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
8115 l_terr_all_rec.NAME := naterr.name ;
8116 ELSIF ( p_matching_rule_code(x) IN ('4')) THEN
8117 l_terr_all_rec.NAME := naterr.name ;
8118 ELSIF ( p_matching_rule_code(x) IN ('5')) THEN
8119 l_terr_all_rec.NAME := naterr.name ;
8120 ELSE
8121 l_terr_all_rec.NAME := naterr.name ;
8122 END IF;
8123
8124
8125 IF naterr.start_date IS NULL THEN
8126 l_terr_all_rec.start_date_active := p_active_from_date(x);
8127 ELSE
8128 l_terr_all_rec.start_date_active := naterr.start_date;
8129 END IF;
8130
8131 IF naterr.end_date IS NULL THEN
8132 l_terr_all_rec.end_date_active := p_active_to_date(x);
8133 ELSE
8134 l_terr_all_rec.end_date_active := naterr.end_date;
8135 END IF;
8136
8137 l_terr_all_rec.PARENT_TERRITORY_ID := l_nacat;
8138 l_terr_all_rec.RANK := p_rank(x) + 10;
8139 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
8140 l_terr_all_rec.TEMPLATE_FLAG := 'N';
8141 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
8142 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
8143 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
8144
8145 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
8146 l_terr_all_rec.DESCRIPTION := naterr.name ;
8147 ELSIF ( p_matching_rule_code(x) IN ('4')) THEN
8148 l_terr_all_rec.DESCRIPTION := naterr.name ;
8149 ELSIF ( p_matching_rule_code(x) IN ('5')) THEN
8150 l_terr_all_rec.DESCRIPTION := naterr.name ;
8151 ELSE
8152 l_terr_all_rec.DESCRIPTION := naterr.name ;
8153 END IF;
8154
8155 l_terr_all_rec.UPDATE_FLAG := 'N';
8156 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
8157 l_terr_all_rec.ORG_ID := p_org_id(x);
8158 l_terr_all_rec.NUM_WINNERS := NULL ;
8159 l_terr_all_rec.terr_creation_flag := NULL;
8160 l_terr_all_rec.TERRITORY_TYPE_ID := -1;
8161 l_terr_all_rec.attribute_category := naterr.attribute_category;
8162 l_terr_all_rec.attribute1 := naterr.attribute1;
8163 l_terr_all_rec.attribute2 := naterr.attribute2;
8164 l_terr_all_rec.attribute3 := naterr.attribute3;
8165 l_terr_all_rec.attribute4 := naterr.attribute4;
8166 l_terr_all_rec.attribute5 := naterr.attribute5;
8167 l_terr_all_rec.attribute6 := naterr.attribute6;
8168 l_terr_all_rec.attribute7 := naterr.attribute7;
8169 l_terr_all_rec.attribute8 := naterr.attribute8;
8170 l_terr_all_rec.attribute9 := naterr.attribute9;
8171 l_terr_all_rec.attribute10 := naterr.attribute10;
8172 l_terr_all_rec.attribute11 := naterr.attribute11;
8173 l_terr_all_rec.attribute12 := naterr.attribute12;
8174 l_terr_all_rec.attribute13 := naterr.attribute13;
8175 l_terr_all_rec.attribute14 := naterr.attribute14;
8176 l_terr_all_rec.attribute15 := naterr.attribute15;
8177
8178 /* Oracle Sales and Telesales Usage */
8179 SELECT JTF_TERR_USGS_S.NEXTVAL
8180 INTO l_terr_usg_id
8181 FROM DUAL;
8182
8183 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
8184 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
8185 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
8186 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
8187 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
8188 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
8189 l_terr_usgs_tbl(1).TERR_ID := NULL;
8190 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
8191 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
8192
8193 i:=0;
8194
8195 /* BEGIN: For each Access Type defined for the Territory Group */
8196 FOR acctype IN get_NON_OVLY_na_trans(naterr.terr_group_account_id)
8197 LOOP
8198
8199 i:=i+1;
8200
8201 IF ( acctype.access_type = 'ACCOUNT' ) THEN
8202 l_qual_type_usg_id := -1001;
8203 ELSIF ( acctype.access_type = 'LEAD' ) THEN
8204 l_qual_type_usg_id := -1002;
8205 ELSIF ( acctype.access_type = 'OPPORTUNITY' ) THEN
8206 l_qual_type_usg_id := -1003;
8207 ELSIF ( acctype.access_type = 'QUOTE' ) THEN
8208 l_qual_type_usg_id := -1105;
8209 ELSIF ( acctype.access_type = 'PROPOSAL' ) THEN
8210 l_qual_type_usg_id := -1106;
8211 END IF;
8212
8213 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
8214 INTO l_terr_qtype_usg_id
8215 FROM DUAL;
8216
8217 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
8218 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
8219 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
8220 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
8221 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
8222 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
8223 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
8224 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := l_qual_type_usg_id;
8225 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
8226
8227 END LOOP; /* END: For each Access Type defined for the Territory Group */
8228
8229 /*
8230 ** get Named Account Customer Keyname and Postal Code Mapping
8231 ** rules, to use as territory definition qualifier values
8232 */
8233 j:=0;
8234 K:=0;
8235 l_prev_qual_usg_id:=1;
8236
8237 FOR qval IN match_rule3( naterr.named_account_id , p_matching_rule_code(x) ) LOOP
8238
8239 /* new qualifier, i.e., if there is a qualifier in
8240 ** Addition to DUNS# or party number */
8241 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
8242
8243 j:=j+1;
8244
8245 SELECT JTF_TERR_QUAL_S.NEXTVAL
8246 INTO l_terr_qual_id
8247 FROM DUAL;
8248
8249 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
8250 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
8251 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
8252 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
8253 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
8254 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
8255 l_terr_qual_tbl(j).TERR_ID := NULL;
8256 l_terr_qual_tbl(j).QUAL_USG_ID := qval.qual_usg_id;
8257 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
8258 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
8259 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
8260 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
8261 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
8262 l_prev_qual_usg_id := qval.qual_usg_id;
8263
8264 END IF;
8265
8266 k:=k+1;
8267
8268 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
8269 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
8270 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
8271 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
8272 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
8273 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
8274 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
8275 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
8276 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
8277
8278 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
8279 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
8280 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
8281 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
8282 l_terr_values_tbl(k).VALUE_SET := NULL;
8283 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
8284 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
8285 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
8286 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
8287 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
8288 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
8289 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
8290 l_terr_values_tbl(k).qualifier_tbl_index := j;
8291
8292 /* JRADHAKR: Added support for Party site id and hierarchy */
8293
8294 IF ( p_matching_rule_code(x) IN ('2', '3', '4')) THEN
8295 l_terr_values_tbl(k).LOW_VALUE_CHAR := qval.value1_char;
8296 ELSIF ( p_matching_rule_code(x) IN ('5')) THEN
8297 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := qval.value1_num;
8298 ELSE
8299 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := qval.value1_num;
8300 l_terr_values_tbl(k).LOW_VALUE_CHAR := p_matching_rule_code(x);
8301 END IF;
8302
8303 END LOOP; /* qval IN pqual */
8304
8305 l_init_msg_list :=FND_API.G_TRUE;
8306
8307 JTF_TERRITORY_PVT.create_territory (
8308 p_api_version_number => l_api_version_number,
8309 p_init_msg_list => l_init_msg_list,
8310 p_commit => l_commit,
8311 p_validation_level => FND_API.g_valid_level_NONE,
8312 x_return_status => x_return_status,
8313 x_msg_count => x_msg_count,
8314 x_msg_data => x_msg_data,
8315 p_terr_all_rec => l_terr_all_rec,
8316 p_terr_usgs_tbl => l_terr_usgs_tbl,
8317 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
8318 p_terr_qual_tbl => l_terr_qual_tbl,
8319 p_terr_values_tbl => l_terr_values_tbl,
8320 x_terr_id => x_terr_id,
8321 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
8322 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
8323 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
8324 x_terr_values_out_tbl => x_terr_values_out_tbl
8325
8326 );
8327
8328
8329 IF G_Debug THEN
8330 write_log(2,' NA territory created = '||naterr.name);
8331 END IF;
8332
8333 /* BEGIN: Successful Territory creation? */
8334 IF x_return_status = 'S' THEN
8335
8336 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID and CATCH_ALL_FLAG
8337 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
8338 UPDATE JTF_TERR_ALL
8339 SET TERR_GROUP_FLAG = 'Y'
8340 , TERR_GROUP_ID = p_terr_group_id(x)
8341 , CATCH_ALL_FLAG = 'N'
8342 , NAMED_ACCOUNT_FLAG = 'Y'
8343 , TERR_GROUP_ACCOUNT_ID = naterr.terr_group_account_id
8344 WHERE terr_id = x_terr_id;
8345
8346 l_init_msg_list :=FND_API.G_TRUE;
8347 i := 0;
8348 a := 0;
8349
8350 FOR tran_type IN role_interest_nonpi(p_Terr_gROUP_ID(x)) LOOP
8351
8352 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
8353 FOR rsc IN resource_grp(naterr.terr_group_account_id,tran_type.role_code) LOOP
8354 i:=i+1;
8355
8356 SELECT JTF_TERR_RSC_S.NEXTVAL
8357 INTO l_terr_rsc_id
8358 FROM DUAL;
8359
8360 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
8361 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
8362 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
8363 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
8364 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
8365 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
8366 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
8367 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
8368 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
8369 l_TerrRsc_Tbl(i).ROLE := tran_type.role_code;
8370 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
8371
8372 IF rsc.start_date IS NULL THEN
8373 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
8374 ELSE
8375 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := rsc.start_date;
8376 END IF;
8377
8378 IF rsc.end_date IS NULL THEN
8379 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
8380 ELSE
8381 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := rsc.end_date;
8382 END IF;
8383
8384 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
8385 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
8386 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
8387 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
8388 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
8389 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
8390 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
8391 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
8392 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
8393 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
8394 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
8395 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
8396 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
8397 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
8398 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
8399 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
8400 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
8401 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
8402 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
8403
8404
8405 FOR rsc_acc IN NON_OVLY_role_access(p_terr_group_id(x),tran_type.role_code)
8406 LOOP
8407 a := a+1;
8408
8409 IF ( rsc_acc.access_type='OPPORTUNITY' ) THEN
8410 l_qual_type := 'OPPOR';
8411 ELSE
8412 l_qual_type := rsc_acc.access_type;
8413 END IF;
8414
8415 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
8416 INTO l_terr_rsc_access_id
8417 FROM DUAL;
8418
8419 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
8420 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
8421 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
8422 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
8423 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
8424 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
8425 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
8426 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := l_qual_type;
8427 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
8428 l_TerrRsc_Access_Tbl(a).TRANS_ACCESS_CODE := rsc_acc.trans_access_code;
8429 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
8430
8431 END LOOP; /* FOR rsc_acc in NON_OVLY_role_access */
8432
8433 END LOOP; /* FOR rsc in resource_grp */
8434
8435 END LOOP;/* FOR tran_type in role_interest_nonpi */
8436
8437 l_init_msg_list :=FND_API.G_TRUE;
8438
8439 -- 07/08/03: JDOCHERT: bug#3023653
8440 Jtf_Territory_Resource_Pvt.create_terrresource (
8441 p_api_version_number => l_Api_Version_Number,
8442 p_init_msg_list => l_Init_Msg_List,
8443 p_commit => l_Commit,
8444 p_validation_level => FND_API.g_valid_level_NONE,
8445 x_return_status => x_Return_Status,
8446 x_msg_count => x_Msg_Count,
8447 x_msg_data => x_msg_data,
8448 p_terrrsc_tbl => l_TerrRsc_tbl,
8449 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
8450 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
8451 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
8452 );
8453
8454 IF x_Return_Status='S' THEN
8455 IF G_Debug THEN
8456 write_log(2,' Resource created for NA territory # ' ||x_terr_id);
8457 END IF;
8458 ELSE
8459 IF G_Debug THEN
8460 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
8461 write_log(2,x_msg_data);
8462 write_log(2, ' Failed in resource creation for NA territory # ' || x_terr_id);
8463 END IF;
8464 END IF;
8465
8466 ELSE
8467 IF G_Debug THEN
8468 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
8469 write_log(2,SUBSTR(x_msg_data,1,254));
8470 WRITE_LOG(2,'ERROR: NA TERRITORY CREATION FAILED ' || 'FOR NAMED_ACCOUNT_ID# ' || naterr.named_account_id );
8471 END IF;
8472 END IF; /* END: Successful Territory creation? */
8473
8474 END LOOP; /* naterr in get_party_info */
8475 END IF; /* ( p_matching_rule_code(x) IN ('3') THEN */
8476 /*************************************************************/
8477
8478 /* (5) END: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
8479 /* USING DUNS# OR PARTY NUMBER QUALIFIER */
8480 /*************************************************************/
8481
8482 /***************************************************************/
8483 /* (6) START: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
8484 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
8485 /***************************************************************/
8486
8487 IF ( p_matching_rule_code(x) IN ('1', '2') ) THEN
8488 FOR naterr IN get_party_name(p_terr_group_id(x)) LOOP
8489
8490 --write_log(2,'na '||naterr.named_account_id);
8491 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
8492 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
8493 l_terr_qual_tbl := l_terr_qual_empty_tbl;
8494 l_terr_values_tbl := l_terr_values_empty_tbl;
8495 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
8496 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
8497
8498 /* TERRITORY HEADER */
8499 /* Ensure static TERR_ID to benefit TAP Performance */
8500 BEGIN
8501
8502 l_terr_exists := 0;
8503
8504 SELECT COUNT(*)
8505 INTO l_terr_exists
8506 FROM jtf_terr_all jt
8507 WHERE jt.terr_id = naterr.terr_group_account_id * -10000;
8508
8509 IF (l_terr_exists = 0) THEN
8510 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -10000;
8511 ELSE
8512 l_terr_all_rec.TERR_ID := NULL;
8513 END IF;
8514
8515 EXCEPTION
8516 WHEN NO_DATA_FOUND THEN
8517 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -10000;
8518 END;
8519
8520 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
8521 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
8522 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
8523 l_terr_all_rec.CREATED_BY := p_created_by(x);
8524 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
8525 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
8526 l_terr_all_rec.NAME := naterr.name;
8527
8528 IF naterr.start_date IS NULL THEN
8529 l_terr_all_rec.start_date_active := p_active_from_date(x);
8530 ELSE
8531 l_terr_all_rec.start_date_active := naterr.start_date;
8532 END IF;
8533
8534 IF naterr.end_date IS NULL THEN
8535 l_terr_all_rec.end_date_active := p_active_to_date(x);
8536 ELSE
8537 l_terr_all_rec.end_date_active := naterr.end_date;
8538 END IF;
8539
8540 l_terr_all_rec.PARENT_TERRITORY_ID := l_nacat;
8541 l_terr_all_rec.RANK := p_rank(x) + 20;
8542 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
8543 l_terr_all_rec.TEMPLATE_FLAG := 'N';
8544 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
8545 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
8546 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
8547 l_terr_all_rec.DESCRIPTION := naterr.name;
8548 l_terr_all_rec.UPDATE_FLAG := 'N';
8549 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
8550 l_terr_all_rec.ORG_ID := p_org_id(x);
8551 l_terr_all_rec.NUM_WINNERS := NULL ;
8552 l_terr_all_rec.terr_creation_flag := NULL;
8553 l_terr_all_rec.TERRITORY_TYPE_ID := -1;
8554 l_terr_all_rec.attribute_category := naterr.attribute_category;
8555 l_terr_all_rec.attribute1 := naterr.attribute1;
8556 l_terr_all_rec.attribute2 := naterr.attribute2;
8557 l_terr_all_rec.attribute3 := naterr.attribute3;
8558 l_terr_all_rec.attribute4 := naterr.attribute4;
8559 l_terr_all_rec.attribute5 := naterr.attribute5;
8560 l_terr_all_rec.attribute6 := naterr.attribute6;
8561 l_terr_all_rec.attribute7 := naterr.attribute7;
8562 l_terr_all_rec.attribute8 := naterr.attribute8;
8563 l_terr_all_rec.attribute9 := naterr.attribute9;
8564 l_terr_all_rec.attribute10 := naterr.attribute10;
8565 l_terr_all_rec.attribute11 := naterr.attribute11;
8566 l_terr_all_rec.attribute12 := naterr.attribute12;
8567 l_terr_all_rec.attribute13 := naterr.attribute13;
8568 l_terr_all_rec.attribute14 := naterr.attribute14;
8569 l_terr_all_rec.attribute15 := naterr.attribute15;
8570
8571 /* Oracle Sales and Telesales Usage */
8572 SELECT JTF_TERR_USGS_S.NEXTVAL
8573 INTO l_terr_usg_id
8574 FROM DUAL;
8575
8576 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
8577 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
8578 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
8579 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
8580 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
8581 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
8582 l_terr_usgs_tbl(1).TERR_ID := NULL;
8583 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
8584 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
8585
8586 i:=0;
8587
8588 /* BEGIN: For each Access Type defined for the Territory Group */
8589 FOR acctype IN get_NON_OVLY_na_trans(naterr.terr_group_account_id)
8590 LOOP
8591
8592 i:=i+1;
8593
8594 IF ( acctype.access_type='ACCOUNT' ) THEN
8595 l_qual_type_usg_id := -1001;
8596 ELSIF ( acctype.access_type='LEAD' ) THEN
8597 l_qual_type_usg_id := -1002;
8598 ELSIF ( acctype.access_type='OPPORTUNITY' ) THEN
8599 l_qual_type_usg_id := -1003;
8600 ELSIF ( acctype.access_type='QUOTE' ) THEN
8601 l_qual_type_usg_id := -1105;
8602 ELSIF ( acctype.access_type='PROPOSAL' ) THEN
8603 l_qual_type_usg_id := -1106;
8604 END IF;
8605
8606 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
8607 INTO l_terr_qtype_usg_id
8608 FROM DUAL;
8609
8610 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
8611 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
8612 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
8613 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
8614 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
8615 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
8616 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
8617 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := l_qual_type_usg_id;
8618 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
8619
8620 END LOOP;
8621 /* END: For each Access Type defined for the Territory Group */
8622
8623 /*
8624 ** get Named Account Customer Keyname and Postal Code Mapping
8625 ** rules, to use as territory definition qualifier values
8626 */
8627 j:=0;
8628 K:=0;
8629 l_prev_qual_usg_id:=1;
8630 FOR qval IN match_rule1( naterr.named_account_id ) LOOP
8631
8632 /* new qualifier, i.e., Customer Name Range or Postal Code: ** driven by ORDER BY on p_qual */
8633 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
8634
8635 j:=j+1;
8636
8637 SELECT JTF_TERR_QUAL_S.NEXTVAL
8638 INTO l_terr_qual_id
8639 FROM DUAL;
8640
8641 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
8642 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
8643 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
8644 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
8645 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
8646 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
8647 l_terr_qual_tbl(j).TERR_ID := NULL;
8648 l_terr_qual_tbl(j).QUAL_USG_ID := qval.qual_usg_id;
8649 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
8650 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
8651 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
8652 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
8653 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
8654 l_prev_qual_usg_id := qval.qual_usg_id;
8655 END IF;
8656
8657 k:=k+1;
8658
8659 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
8660 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
8661 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
8662 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
8663 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
8664 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
8665 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
8666 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
8667 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
8668 l_terr_values_tbl(k).LOW_VALUE_CHAR := qval.value1_char;
8669 l_terr_values_tbl(k).HIGH_VALUE_CHAR := qval.value2_char;
8670 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
8671 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
8672 l_terr_values_tbl(k).VALUE_SET := NULL;
8673 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
8674 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
8675 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
8676 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
8677 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
8678 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
8679 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
8680 l_terr_values_tbl(k).qualifier_tbl_index := j;
8681
8682 END LOOP; /* qval IN pqual */
8683
8684 l_init_msg_list :=FND_API.G_TRUE;
8685
8686 JTF_TERRITORY_PVT.create_territory (
8687 p_api_version_number => l_api_version_number,
8688 p_init_msg_list => l_init_msg_list,
8689 p_commit => l_commit,
8690 p_validation_level => FND_API.g_valid_level_NONE,
8691 x_return_status => x_return_status,
8692 x_msg_count => x_msg_count,
8693 x_msg_data => x_msg_data,
8694 p_terr_all_rec => l_terr_all_rec,
8695 p_terr_usgs_tbl => l_terr_usgs_tbl,
8696 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
8697 p_terr_qual_tbl => l_terr_qual_tbl,
8698 p_terr_values_tbl => l_terr_values_tbl,
8699 x_terr_id => x_terr_id,
8700 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
8701 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
8702 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
8703 x_terr_values_out_tbl => x_terr_values_out_tbl
8704
8705 );
8706
8707 IF G_Debug THEN
8708 write_log(2,' NA territory created = '||naterr.name);
8709 END IF;
8710
8711 /* BEGIN: Successful Territory creation? */
8712 IF x_return_status = 'S' THEN
8713
8714 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID and CATCH_ALL_FLAG
8715 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
8716 UPDATE JTF_TERR_ALL
8717 SET TERR_GROUP_FLAG = 'Y'
8718 , TERR_GROUP_ID = p_terr_group_id(x)
8719 , CATCH_ALL_FLAG = 'N'
8720 , NAMED_ACCOUNT_FLAG = 'Y'
8721 , TERR_GROUP_ACCOUNT_ID = naterr.terr_group_account_id
8722 WHERE terr_id = x_terr_id;
8723
8724 l_init_msg_list :=FND_API.G_TRUE;
8725 i := 0;
8726 a := 0;
8727
8728 FOR tran_type IN role_interest_nonpi(p_Terr_gROUP_ID(x)) LOOP
8729
8730 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
8731 FOR rsc IN resource_grp(naterr.terr_group_account_id,tran_type.role_code) LOOP
8732 i:=i+1;
8733
8734 SELECT JTF_TERR_RSC_S.NEXTVAL
8735 INTO l_terr_rsc_id
8736 FROM DUAL;
8737
8738 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
8739 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
8740 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
8741 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
8742 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
8743 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
8744 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
8745 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
8746 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
8747 l_TerrRsc_Tbl(i).ROLE := tran_type.role_code;
8748 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
8749
8750 IF rsc.start_date IS NULL THEN
8751 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
8752 ELSE
8753 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := rsc.start_date;
8754 END IF;
8755
8756 IF rsc.end_date IS NULL THEN
8757 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
8758 ELSE
8759 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := rsc.end_date;
8760 END IF;
8761
8762 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
8763 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
8764 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
8765 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
8766 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
8767 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
8768 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
8769 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
8770 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
8771 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
8772 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
8773 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
8774 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
8775 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
8776 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
8777 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
8778 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
8779 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
8780 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
8781
8782 FOR rsc_acc IN NON_OVLY_role_access(p_terr_group_id(x),tran_type.role_code)
8783 LOOP
8784 a := a+1;
8785
8786 IF ( rsc_acc.access_type='OPPORTUNITY' ) THEN
8787 l_qual_type := 'OPPOR';
8788 ELSE
8789 l_qual_type := rsc_acc.access_type;
8790 END IF;
8791
8792 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
8793 INTO l_terr_rsc_access_id
8794 FROM DUAL;
8795
8796 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
8797 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
8798 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
8799 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
8800 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
8801 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
8802 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
8803 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := l_qual_type;
8804 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
8805 l_TerrRsc_Access_Tbl(a).TRANS_ACCESS_CODE := rsc_acc.trans_access_code;
8806 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
8807
8808 END LOOP; /* FOR rsc_acc in NON_OVLY_role_access */
8809
8810 END LOOP; /* FOR rsc in resource_grp */
8811
8812 END LOOP;/* FOR tran_type in role_interest_nonpi */
8813
8814 l_init_msg_list :=FND_API.G_TRUE;
8815
8816 Jtf_Territory_Resource_Pvt.create_terrresource (
8817 p_api_version_number => l_Api_Version_Number,
8818 p_init_msg_list => l_Init_Msg_List,
8819 p_commit => l_Commit,
8820 p_validation_level => FND_API.g_valid_level_NONE,
8821 x_return_status => x_Return_Status,
8822 x_msg_count => x_Msg_Count,
8823 x_msg_data => x_msg_data,
8824 p_terrrsc_tbl => l_TerrRsc_tbl,
8825 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
8826 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
8827 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
8828 );
8829
8830 IF x_Return_Status='S' THEN
8831 IF G_Debug THEN
8832 write_log(2,' Resource created for NA territory # ' ||x_terr_id);
8833 END IF;
8834 ELSE
8835 IF G_Debug THEN
8836 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
8837 write_log(2,x_msg_data);
8838 write_log(2, ' Failed in resource creation for NA territory # ' || x_terr_id);
8839 END IF;
8840 END IF;
8841
8842 ELSE
8843 IF G_Debug THEN
8844 x_msg_data := SUBSTR(FND_MSG_PUB.get(1, FND_API.g_false),1,254);
8845 write_log(2,SUBSTR(x_msg_data,1,254));
8846 WRITE_LOG(2,'ERROR: NA TERRITORY CREATION FAILED ' || 'FOR NAMED_ACCOUNT_ID# ' || naterr.named_account_id );
8847 END IF;
8848 END IF; /* END: Successful Territory creation? */
8849
8850 END LOOP; /* naterr in get_party_name */
8851 END IF; /* p_matching_rule_code(x) IN ('1', '2') THEN */
8852
8853 /*************************************************************/
8854 /* (6) END: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
8855 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
8856 /*************************************************************/
8857
8858 /********************************************************/
8859 /* delete the role and access */
8860 /********************************************************/
8861 IF l_ovnon_flag = 'Y' THEN
8862
8863 FOR i IN l_overnon_role_tbl.first.. l_overnon_role_tbl.last
8864 LOOP
8865 DELETE FROM jtf_tty_terr_grp_roles
8866 WHERE TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
8867 --dbms_output.put_line('deleted');
8868 DELETE FROM jtf_tty_role_access
8869 WHERE TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
8870 END LOOP;
8871 END IF;
8872
8873 END IF;
8874 /* END: if Territory Group exists with Named Accounts then auto-create territory definitions */
8875
8876
8877
8878 /*********************************************************************/
8879 /*********************************************************************/
8880 /************** OVERLAY TERRITORY CREATION ***************************/
8881 /*********************************************************************/
8882 /*********************************************************************/
8883
8884 /* if any role with PI and Account access and no non pi role exist */
8885 /* we need to create a new branch with Named Account */
8886
8887 /* OVERLAY BRANCH */
8888
8889 BEGIN
8890
8891 SELECT COUNT( DISTINCT b.role_code )
8892 INTO l_pi_count
8893 FROM jtf_rs_roles_vl r
8894 , jtf_tty_role_prod_int a
8895 , jtf_tty_terr_grp_roles b
8896 WHERE r.role_code = b.role_code
8897 AND a.terr_group_role_id = b.terr_group_role_id
8898 AND b.terr_group_id = p_terr_group_id(x)
8899 AND EXISTS (
8900 /* Named Account exists with Salesperson with this role */
8901 SELECT NULL
8902 FROM jtf_tty_named_acct_rsc nar, jtf_tty_terr_grp_accts tga
8903 WHERE tga.terr_group_account_id = nar.terr_group_account_id
8904 AND tga.terr_group_id = b.terr_group_id
8905 AND nar.rsc_role_code = b.role_code )
8906 AND ROWNUM < 2;
8907
8908 EXCEPTION
8909 WHEN OTHERS THEN NULL;
8910 END;
8911
8912 /* are there overlay roles, i.e., are there roles with Product
8913 ** Interests defined for this Territory Group */
8914 IF l_pi_count > 0 THEN
8915
8916 /***************************************************************/
8917 /* (7) START: CREATE TOP-LEVEL TERRITORY FOR OVERLAY BRANCH OF */
8918 /* TERRITORY GROUP */
8919 /***************************************************************/
8920 FOR topt IN topterr(p_parent_terr_id(x)) LOOP
8921
8922 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
8923 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
8924 l_terr_qual_tbl := l_terr_qual_empty_tbl;
8925 l_terr_values_tbl := l_terr_values_empty_tbl;
8926 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
8927 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
8928
8929 l_terr_all_rec.TERR_ID := NULL;
8930 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
8931 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
8932 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
8933 l_terr_all_rec.CREATED_BY := p_created_by(x);
8934 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
8935 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
8936 l_terr_all_rec.NAME := p_terr_group_name(x) || ' (OVERLAY)';
8937 l_terr_all_rec.start_date_active := p_active_from_date(x);
8938 l_terr_all_rec.end_date_active := p_active_to_date(x);
8939 l_terr_all_rec.PARENT_TERRITORY_ID := topt.PARENT_TERRITORY_ID;
8940 l_terr_all_rec.RANK := topt.RANK;
8941 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
8942 l_terr_all_rec.TEMPLATE_FLAG := 'N';
8943 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
8944 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
8945 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
8946 l_terr_all_rec.DESCRIPTION := topt.DESCRIPTION;
8947 l_terr_all_rec.UPDATE_FLAG := 'N';
8948 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
8949 l_terr_all_rec.ORG_ID := p_org_id(x);
8950 l_terr_all_rec.NUM_WINNERS := l_pi_count ;
8951
8952 /* ORACLE SALES AND TELESALES USAGE */
8953 SELECT JTF_TERR_USGS_S.NEXTVAL
8954 INTO l_terr_usg_id
8955 FROM DUAL;
8956
8957 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
8958 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
8959 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
8960 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
8961 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
8962 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
8963 l_terr_usgs_tbl(1).TERR_ID := NULL;
8964 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
8965 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
8966
8967 /* LEAD TRANSACTION TYPE */
8968 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
8969 INTO l_terr_qtype_usg_id
8970 FROM DUAL;
8971
8972 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
8973 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
8974 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
8975 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_creation_date(x);
8976 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_created_by(x);
8977 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
8978 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
8979 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1002;
8980 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_org_id(x);
8981
8982 /* OPPORTUNITY TRANSACTION TYPE */
8983 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
8984 INTO l_terr_qtype_usg_id
8985 FROM DUAL;
8986
8987 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
8988 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_last_update_date(x);
8989 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := p_last_updated_by(x);
8990 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_creation_date(x);
8991 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_created_by(x);
8992 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := p_last_update_login(x);
8993 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
8994 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1003;
8995 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_org_id(x);
8996
8997 /*
8998 ** get Top-Level Parent's Qualifier and values and
8999 ** aad them to Overlay branch top-level territory
9000 */
9001 j:=0;
9002 k:=0;
9003 l_prev_qual_usg_id:=1;
9004 FOR csr_qual IN csr_get_qual ( topt.terr_id ) LOOP
9005
9006 j:=j+1;
9007
9008 SELECT JTF_TERR_QUAL_S.NEXTVAL
9009 INTO l_terr_qual_id
9010 FROM DUAL;
9011
9012 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
9013 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
9014 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
9015 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
9016 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
9017 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
9018 l_terr_qual_tbl(j).TERR_ID := NULL;
9019 l_terr_qual_tbl(j).QUAL_USG_ID := csr_qual.qual_usg_id;
9020 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
9021 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'Y';
9022 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
9023 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
9024 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
9025
9026 FOR csr_qual_val IN csr_get_qual_val (csr_qual.terr_qual_id) LOOP
9027
9028 k:=k+1;
9029
9030 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
9031 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
9032 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
9033 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
9034 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
9035 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
9036 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
9037 l_terr_values_tbl(k).INCLUDE_FLAG := csr_qual_val.INCLUDE_FLAG;
9038 l_terr_values_tbl(k).COMPARISON_OPERATOR := csr_qual_val.COMPARISON_OPERATOR;
9039 l_terr_values_tbl(k).LOW_VALUE_CHAR := csr_qual_val.LOW_VALUE_CHAR;
9040 l_terr_values_tbl(k).HIGH_VALUE_CHAR := csr_qual_val.HIGH_VALUE_CHAR;
9041 l_terr_values_tbl(k).LOW_VALUE_NUMBER := csr_qual_val.LOW_VALUE_NUMBER;
9042 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := csr_qual_val.HIGH_VALUE_NUMBER;
9043 l_terr_values_tbl(k).VALUE_SET := csr_qual_val.VALUE_SET;
9044 l_terr_values_tbl(k).INTEREST_TYPE_ID := csr_qual_val.INTEREST_TYPE_ID;
9045 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := csr_qual_val.PRIMARY_INTEREST_CODE_ID;
9046 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := csr_qual_val.SECONDARY_INTEREST_CODE_ID;
9047 l_terr_values_tbl(k).CURRENCY_CODE := csr_qual_val.CURRENCY_CODE;
9048 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
9049 l_terr_values_tbl(k).ID_USED_FLAG := csr_qual_val.ID_USED_FLAG;
9050 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := csr_qual_val.LOW_VALUE_CHAR_ID;
9051 l_terr_values_tbl(k).qualifier_tbl_index := j;
9052
9053 END LOOP;/* csr_qual_val IN csr_get_qual_val */
9054 END LOOP; /* csr_qual IN csr_get_qual */
9055
9056 l_init_msg_list :=FND_API.G_TRUE;
9057
9058 JTF_TERRITORY_PVT.create_territory (
9059 p_api_version_number => l_api_version_number,
9060 p_init_msg_list => l_init_msg_list,
9061 p_commit => l_commit,
9062 p_validation_level => FND_API.g_valid_level_NONE,
9063 x_return_status => x_return_status,
9064 x_msg_count => x_msg_count,
9065 x_msg_data => x_msg_data,
9066 p_terr_all_rec => l_terr_all_rec,
9067 p_terr_usgs_tbl => l_terr_usgs_tbl,
9068 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
9069 p_terr_qual_tbl => l_terr_qual_tbl,
9070 p_terr_values_tbl => l_terr_values_tbl,
9071 x_terr_id => x_terr_id,
9072 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
9073 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
9074 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
9075 x_terr_values_out_tbl => x_terr_values_out_tbl
9076
9077 );
9078
9079 IF G_Debug THEN
9080 write_log(2,' OVERLAY Top level Territory Created,territory_id# '||x_terr_id);
9081 END IF;
9082
9083 IF x_return_status = 'S' THEN
9084
9085 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
9086 UPDATE JTF_TERR_ALL
9087 SET TERR_GROUP_FLAG = 'Y'
9088 , TERR_GROUP_ID = p_TERR_GROUP_ID(x)
9089 WHERE terr_id = x_terr_id;
9090
9091 END IF;
9092
9093 l_overlay_top :=x_terr_id;
9094
9095 END LOOP;/* top level territory */
9096 /***************************************************************/
9097 /* (7) END: CREATE TOP-LEVEL TERRITORY FOR OVERLAY BRANCH OF */
9098 /* TERRITORY GROUP */
9099 /***************************************************************/
9100
9101
9102 /***************************************************************/
9103 /* (8) START: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
9104 /* USING DUNS# OR PARTY NUMBER QUALIFIER */
9105 /***************************************************************/
9106 IF ( p_matching_rule_code(x) IN ('2', '3', '4') ) THEN
9107 FOR overlayterr IN get_OVLY_party_info(p_terr_group_id(x), p_matching_rule_code(x)) LOOP
9108
9109 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
9110 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
9111 l_terr_qual_tbl := l_terr_qual_empty_tbl;
9112 l_terr_values_tbl := l_terr_values_empty_tbl;
9113 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
9114 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
9115
9116 l_terr_all_rec.TERR_ID := NULL;
9117 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
9118 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
9119 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
9120 l_terr_all_rec.CREATED_BY := p_created_by(x);
9121 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
9122 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
9123
9124 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
9125 l_terr_all_rec.NAME := overlayterr.name || ' (OVERLAY DUNS#)';
9126 ELSE
9127 l_terr_all_rec.NAME := overlayterr.name || ' (OVERLAY Registry ID)';
9128 END IF;
9129
9130 l_terr_all_rec.start_date_active := p_active_from_date(x);
9131 l_terr_all_rec.end_date_active := p_active_to_date(x);
9132 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay_top;
9133 l_terr_all_rec.RANK := p_rank(x)+ 10;
9134 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
9135 l_terr_all_rec.TEMPLATE_FLAG := 'N';
9136 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
9137 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
9138 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
9139
9140 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
9141 l_terr_all_rec.DESCRIPTION := overlayterr.name || ' (OVERLAY DUNS#)';
9142 ELSE
9143 l_terr_all_rec.DESCRIPTION := overlayterr.name || ' (OVERLAY Registry ID)';
9144 END IF;
9145
9146 l_terr_all_rec.UPDATE_FLAG := 'N';
9147 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
9148 l_terr_all_rec.ORG_ID := p_org_id(x);
9149 l_terr_all_rec.NUM_WINNERS := NULL ;
9150
9151 SELECT JTF_TERR_USGS_S.NEXTVAL
9152 INTO l_terr_usg_id
9153 FROM DUAL;
9154
9155 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
9156 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
9157 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
9158 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
9159 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
9160 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
9161 l_terr_usgs_tbl(1).TERR_ID := NULL;
9162 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
9163 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
9164
9165 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
9166 INTO l_terr_qtype_usg_id
9167 FROM DUAL;
9168
9169 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
9170 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
9171 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
9172 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_creation_date(x);
9173 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_created_by(x);
9174 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
9175 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
9176 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1002;
9177 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_org_id(x);
9178
9179 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
9180 INTO l_terr_qtype_usg_id
9181 FROM DUAL;
9182
9183 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
9184 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_last_update_date(x);
9185 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := p_last_updated_by(x);
9186 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_creation_date(x);
9187 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_created_by(x);
9188 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := p_last_update_login(x);
9189 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
9190 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1003;
9191 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_org_id(x);
9192
9193 SELECT JTF_TERR_QUAL_S.NEXTVAL
9194 INTO l_terr_qual_id
9195 FROM DUAL;
9196
9197 j:=0;
9198 K:=0;
9199 l_prev_qual_usg_id:=1;
9200
9201 FOR qval IN match_rule3(overlayterr.named_account_id, p_matching_rule_code(x)) LOOP
9202
9203 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
9204
9205 j:=j+1;
9206
9207 SELECT JTF_TERR_QUAL_S.NEXTVAL
9208 INTO l_terr_qual_id
9209 FROM DUAL;
9210
9211 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
9212 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
9213 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
9214 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
9215 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
9216 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
9217 l_terr_qual_tbl(j).TERR_ID := NULL;
9218 l_terr_qual_tbl(j).QUAL_USG_ID := qval.qual_usg_id;
9219 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
9220 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
9221 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
9222 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
9223 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
9224 l_prev_qual_usg_id := qval.qual_usg_id;
9225
9226 END IF;
9227
9228 k:=k+1;
9229
9230 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
9231 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
9232 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
9233 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
9234 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
9235 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
9236 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
9237 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
9238 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
9239 l_terr_values_tbl(k).LOW_VALUE_CHAR := qval.value1_char;
9240 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
9241 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
9242 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
9243 l_terr_values_tbl(k).VALUE_SET := NULL;
9244 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
9245 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
9246 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
9247 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
9248 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
9249 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
9250 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
9251 l_terr_values_tbl(k).qualifier_tbl_index := j;
9252
9253 END LOOP;
9254
9255 l_init_msg_list :=FND_API.G_TRUE;
9256
9257 JTF_TERRITORY_PVT.create_territory (
9258 p_api_version_number => l_api_version_number,
9259 p_init_msg_list => l_init_msg_list,
9260 p_commit => l_commit,
9261 p_validation_level => FND_API.g_valid_level_NONE,
9262 x_return_status => x_return_status,
9263 x_msg_count => x_msg_count,
9264 x_msg_data => x_msg_data,
9265 p_terr_all_rec => l_terr_all_rec,
9266 p_terr_usgs_tbl => l_terr_usgs_tbl,
9267 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
9268 p_terr_qual_tbl => l_terr_qual_tbl,
9269 p_terr_values_tbl => l_terr_values_tbl,
9270 x_terr_id => x_terr_id,
9271 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
9272 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
9273 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
9274 x_terr_values_out_tbl => x_terr_values_out_tbl
9275
9276 );
9277
9278 IF G_Debug THEN
9279 write_log(2,' Named Account OVERLAY territory created: '||l_terr_all_rec.NAME);
9280 END IF;
9281
9282 IF x_return_status = 'S' THEN
9283
9284 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
9285 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
9286 UPDATE JTF_TERR_ALL
9287 SET TERR_GROUP_FLAG = 'Y'
9288 , TERR_GROUP_ID = p_TERR_GROUP_ID(x)
9289 , NAMED_ACCOUNT_FLAG = 'Y'
9290 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
9291 WHERE terr_id = x_terr_id;
9292
9293 l_overlay:=x_terr_id;
9294
9295 FOR pit IN role_pi(p_terr_group_id(x), overlayterr.terr_group_account_id) LOOP
9296
9297 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
9298 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
9299 l_terr_qual_tbl := l_terr_qual_empty_tbl;
9300 l_terr_values_tbl := l_terr_values_empty_tbl;
9301 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
9302 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
9303
9304 l_role_counter := l_role_counter + 1;
9305
9306 l_terr_all_rec.TERR_ID := overlayterr.terr_group_account_id * -30 * l_role_counter;
9307 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
9308 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
9309 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
9310 l_terr_all_rec.CREATED_BY := p_created_by(x);
9311 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
9312 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
9313
9314 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
9315 l_terr_all_rec.NAME := overlayterr.name || ': ' || pit.role_name || ' (OVERLAY DUNS#)';
9316 ELSE
9317 l_terr_all_rec.NAME := overlayterr.name || ': ' || pit.role_name || ' (OVERLAY Registry ID)';
9318 END IF;
9319
9320 l_terr_all_rec.start_date_active := p_active_from_date(x);
9321 l_terr_all_rec.end_date_active := p_active_to_date(x);
9322 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay;
9323 l_terr_all_rec.RANK := p_rank(x) + 10;
9324 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
9325 l_terr_all_rec.TEMPLATE_FLAG := 'N';
9326 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
9327 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
9328 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
9329
9330 IF ( p_matching_rule_code(x) IN ('2', '3')) THEN
9331 l_terr_all_rec.DESCRIPTION := overlayterr.name || ': ' || pit.role_name || ' (OVERLAY DUNS#)';
9332 ELSE
9333 l_terr_all_rec.DESCRIPTION := overlayterr.name || ': ' || pit.role_name || ' (OVERLAY Registry ID)';
9334 END IF;
9335
9336 l_terr_all_rec.UPDATE_FLAG := 'N';
9337 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
9338 l_terr_all_rec.ORG_ID := p_org_id(x);
9339 l_terr_all_rec.NUM_WINNERS := NULL ;
9340 l_terr_all_rec.attribute_category := overlayterr.attribute_category;
9341 l_terr_all_rec.attribute1 := overlayterr.attribute1;
9342 l_terr_all_rec.attribute2 := overlayterr.attribute2;
9343 l_terr_all_rec.attribute3 := overlayterr.attribute3;
9344 l_terr_all_rec.attribute4 := overlayterr.attribute4;
9345 l_terr_all_rec.attribute5 := overlayterr.attribute5;
9346 l_terr_all_rec.attribute6 := overlayterr.attribute6;
9347 l_terr_all_rec.attribute7 := overlayterr.attribute7;
9348 l_terr_all_rec.attribute8 := overlayterr.attribute8;
9349 l_terr_all_rec.attribute9 := overlayterr.attribute9;
9350 l_terr_all_rec.attribute10 := overlayterr.attribute10;
9351 l_terr_all_rec.attribute11 := overlayterr.attribute11;
9352 l_terr_all_rec.attribute12 := overlayterr.attribute12;
9353 l_terr_all_rec.attribute13 := overlayterr.attribute13;
9354 l_terr_all_rec.attribute14 := overlayterr.attribute14;
9355 l_terr_all_rec.attribute15 := overlayterr.attribute15;
9356
9357 SELECT JTF_TERR_USGS_S.NEXTVAL
9358 INTO l_terr_usg_id
9359 FROM DUAL;
9360
9361 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
9362 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
9363 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
9364 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
9365 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
9366 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
9367 l_terr_usgs_tbl(1).TERR_ID := NULL;
9368 l_terr_usgs_tbl(1).SOURCE_ID :=-1001;
9369 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
9370
9371 i := 0;
9372 K:= 0;
9373 FOR acc_type IN role_access(p_terr_group_id(x),pit.role_code) LOOP
9374 --i:=i+1;
9375 --dbms_output.put_line('acc type '||acc_type.access_type);
9376 IF acc_type.access_type= 'OPPORTUNITY' THEN
9377 i:=i+1;
9378 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
9379 INTO l_terr_qtype_usg_id
9380 FROM DUAL;
9381
9382 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
9383 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
9384 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
9385 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
9386 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
9387 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
9388 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
9389 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1003;
9390 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
9391
9392 SELECT JTF_TERR_QUAL_S.NEXTVAL
9393 INTO l_terr_qual_id
9394 FROM DUAL;
9395
9396 /* opp expected purchase */
9397 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
9398 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
9399 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
9400 l_terr_qual_tbl(i).CREATION_DATE := p_creation_date(x);
9401 l_terr_qual_tbl(i).CREATED_BY := p_created_by(x);
9402 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
9403 l_terr_qual_tbl(i).TERR_ID := NULL;
9404 l_terr_qual_tbl(i).QUAL_USG_ID := g_opp_qual_usg_id;
9405 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
9406 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
9407 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
9408 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
9409 l_terr_qual_tbl(i).ORG_ID := p_org_id(x);
9410
9411 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
9412 k:=k+1;
9413
9414 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
9415 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
9416 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
9417 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
9418 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
9419 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
9420 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
9421 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
9422 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
9423 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
9424 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
9425 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
9426 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
9427 l_terr_values_tbl(k).VALUE_SET := NULL;
9428 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
9429 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
9430 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
9431 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
9432 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
9433 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
9434 l_terr_values_tbl(k).qualifier_tbl_index := i;
9435
9436 IF (g_prod_cat_enabled) THEN
9437 l_terr_values_tbl(k).value1_id := qval.product_category_id;
9438 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
9439 ELSE
9440 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
9441 END IF;
9442
9443 END LOOP;
9444
9445 ELSIF acc_type.access_type= 'LEAD' THEN
9446
9447 i:=i+1;
9448 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
9449 INTO l_terr_qtype_usg_id
9450 FROM DUAL;
9451
9452 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
9453 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
9454 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
9455 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
9456 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
9457 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
9458 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
9459 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
9460 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
9461
9462 SELECT JTF_TERR_QUAL_S.NEXTVAL
9463 INTO l_terr_qual_id
9464 FROM DUAL;
9465
9466 /* lead expected purchase */
9467 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
9468 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
9469 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
9470 l_terr_qual_tbl(i).CREATION_DATE := p_creation_date(x);
9471 l_terr_qual_tbl(i).CREATED_BY := p_created_by(x);
9472 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
9473 l_terr_qual_tbl(i).TERR_ID := NULL;
9474 l_terr_qual_tbl(i).QUAL_USG_ID := g_lead_qual_usg_id;
9475 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
9476 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
9477 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
9478 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
9479 l_terr_qual_tbl(i).ORG_ID := p_org_id(x);
9480
9481 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
9482
9483 k:=k+1;
9484
9485 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
9486 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
9487 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
9488 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
9489 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
9490 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
9491 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
9492 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
9493 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
9494 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
9495 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
9496 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
9497 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
9498 l_terr_values_tbl(k).VALUE_SET := NULL;
9499 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
9500 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
9501 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
9502 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
9503 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
9504 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
9505 l_terr_values_tbl(k).qualifier_tbl_index := i;
9506
9507 IF (g_prod_cat_enabled) THEN
9508 l_terr_values_tbl(k).value1_id := qval.product_category_id;
9509 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
9510 ELSE
9511 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
9512 END IF;
9513
9514 END LOOP;
9515
9516 ELSE
9517 IF G_Debug THEN
9518 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||p_terr_group_id(x));
9519 END IF;
9520 END IF;
9521
9522 END LOOP;
9523
9524 l_init_msg_list :=FND_API.G_TRUE;
9525
9526 JTF_TERRITORY_PVT.create_territory (
9527 p_api_version_number => l_api_version_number,
9528 p_init_msg_list => l_init_msg_list,
9529 p_commit => l_commit,
9530 p_validation_level => FND_API.g_valid_level_NONE,
9531 x_return_status => x_return_status,
9532 x_msg_count => x_msg_count,
9533 x_msg_data => x_msg_data,
9534 p_terr_all_rec => l_terr_all_rec,
9535 p_terr_usgs_tbl => l_terr_usgs_tbl,
9536 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
9537 p_terr_qual_tbl => l_terr_qual_tbl,
9538 p_terr_values_tbl => l_terr_values_tbl,
9539 x_terr_id => x_terr_id,
9540 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
9541 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
9542 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
9543 x_terr_values_out_tbl => x_terr_values_out_tbl
9544
9545 );
9546
9547 IF (x_return_status = 'S') THEN
9548
9549 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
9550 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
9551 UPDATE JTF_TERR_ALL
9552 SET TERR_GROUP_FLAG = 'Y'
9553 , TERR_GROUP_ID = p_terr_group_id(x)
9554 , NAMED_ACCOUNT_FLAG = 'Y'
9555 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
9556 WHERE terr_id = x_terr_id;
9557
9558
9559 IF G_Debug THEN
9560 write_log(2,' OVERLAY PI Territory Created = '||l_terr_all_rec.NAME);
9561 END IF;
9562
9563 ELSE
9564 IF G_Debug THEN
9565 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
9566 write_log(2,x_msg_data);
9567 write_log(2, 'Failed in OVERLAY PI Territory Creation for TERR_GROUP_ACCOUNT_ID#'||
9568 overlayterr.terr_group_account_id);
9569 END IF;
9570
9571 END IF;
9572
9573 --dbms_output.put_line('pit.role '||pit.role_code);
9574 i:=0;
9575
9576 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
9577 FOR rsc IN resource_grp(overlayterr.terr_group_account_id,pit.role_code) LOOP
9578
9579 i:=i+1;
9580
9581 SELECT JTF_TERR_RSC_S.NEXTVAL
9582 INTO l_terr_rsc_id
9583 FROM DUAL;
9584
9585 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
9586 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
9587 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
9588 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
9589 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
9590 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
9591 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
9592 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
9593 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
9594 l_TerrRsc_Tbl(i).ROLE := pit.role_code;
9595 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
9596 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
9597 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
9598 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
9599 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
9600 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
9601 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
9602 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
9603 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
9604 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
9605 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
9606 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
9607 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
9608 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
9609 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
9610 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
9611 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
9612 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
9613 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
9614 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
9615 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
9616 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
9617
9618 a := 0;
9619
9620 FOR rsc_acc IN role_access(p_terr_group_id(x),pit.role_code) LOOP
9621
9622 IF rsc_acc.access_type= 'OPPORTUNITY' THEN
9623
9624 a := a+1;
9625
9626 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
9627 INTO l_terr_rsc_access_id
9628 FROM DUAL;
9629
9630 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
9631 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
9632 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
9633 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
9634 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
9635 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
9636 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
9637 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
9638 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
9639 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
9640 ELSIF rsc_acc.access_type= 'LEAD' THEN
9641
9642 a := a+1;
9643
9644 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
9645 INTO l_terr_rsc_access_id
9646 FROM DUAL;
9647
9648 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
9649 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
9650 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
9651 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
9652 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
9653 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
9654 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
9655 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
9656 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
9657 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
9658 END IF;
9659 END LOOP; /* rsc_acc in role_access */
9660
9661 l_init_msg_list :=FND_API.G_TRUE;
9662
9663 -- 07/08/03: JDOCHERT: bug#3023653
9664 Jtf_Territory_Resource_Pvt.create_terrresource (
9665 p_api_version_number => l_Api_Version_Number,
9666 p_init_msg_list => l_Init_Msg_List,
9667 p_commit => l_Commit,
9668 p_validation_level => FND_API.g_valid_level_NONE,
9669 x_return_status => x_Return_Status,
9670 x_msg_count => x_Msg_Count,
9671 x_msg_data => x_msg_data,
9672 p_terrrsc_tbl => l_TerrRsc_tbl,
9673 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
9674 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
9675 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
9676 );
9677
9678 IF x_Return_Status='S' THEN
9679 IF G_Debug THEN
9680 write_log(2,'Resource created for Product Interest OVERLAY Territory '||l_terr_all_rec.NAME);
9681 END IF;
9682 ELSE
9683 IF G_Debug THEN
9684 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '||
9685 x_terr_id);
9686 END IF;
9687 END IF;
9688
9689 END LOOP; /* rsc in resource_grp */
9690
9691 END LOOP;
9692
9693 ELSE
9694 IF G_Debug THEN
9695 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
9696 write_log(2,x_msg_data);
9697 write_log(2,'Failed in OVERLAY Territory Creation for Territory Group: ' ||
9698 p_terr_group_id(x) || ' : ' ||
9699 p_terr_group_name(x) );
9700 END IF;
9701 END IF; /* if (x_return_status = 'S' */
9702 END LOOP; /* overlayterr in get_OVLY_party_info */
9703 END IF; /* ( p_matching_rule_code(x) IN ('2','3') THEN */
9704 /***************************************************************/
9705 /* (8) END: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
9706 /* USING DUNS# OR PARTY NUMBER QUALIFIER */
9707 /***************************************************************/
9708
9709
9710 /***************************************************************/
9711 /* (9) START: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
9712 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
9713 /***************************************************************/
9714 IF ( p_matching_rule_code(x) IN ('1', '2') ) THEN
9715 FOR overlayterr IN get_OVLY_party_name(p_terr_group_id(x)) LOOP
9716
9717 l_terr_usgs_tbl := l_terr_usgs_empty_tbl;
9718 l_terr_qualtypeusgs_tbl := l_terr_qualtypeusgs_empty_tbl;
9719 l_terr_qual_tbl := l_terr_qual_empty_tbl;
9720 l_terr_values_tbl := l_terr_values_empty_tbl;
9721 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
9722 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
9723
9724 l_terr_all_rec.TERR_ID := NULL;
9725 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
9726 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
9727 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
9728 l_terr_all_rec.CREATED_BY := p_created_by(x);
9729 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
9730 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
9731 l_terr_all_rec.NAME := overlayterr.name || ' (OVERLAY)';
9732 l_terr_all_rec.start_date_active := p_active_from_date(x);
9733 l_terr_all_rec.end_date_active := p_active_to_date(x);
9734 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay_top;
9735 l_terr_all_rec.RANK := p_rank(x) + 20;
9736 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
9737 l_terr_all_rec.TEMPLATE_FLAG := 'N';
9738 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
9739 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
9740 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
9741 l_terr_all_rec.DESCRIPTION := overlayterr.name || ' (OVERLAY)';
9742 l_terr_all_rec.UPDATE_FLAG := 'N';
9743 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
9744 l_terr_all_rec.ORG_ID := p_org_id(x);
9745 l_terr_all_rec.NUM_WINNERS := NULL ;
9746
9747
9748 SELECT JTF_TERR_USGS_S.NEXTVAL
9749 INTO l_terr_usg_id
9750 FROM DUAL;
9751
9752 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
9753 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
9754 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
9755 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
9756 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
9757 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
9758 l_terr_usgs_tbl(1).TERR_ID := NULL;
9759 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
9760 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
9761
9762 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
9763 INTO l_terr_qtype_usg_id
9764 FROM DUAL;
9765
9766 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
9767 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
9768 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
9769 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := p_creation_date(x);
9770 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_created_by(x);
9771 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
9772 l_terr_qualtypeusgs_tbl(1).TERR_ID := NULL;
9773 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1002;
9774 l_terr_qualtypeusgs_tbl(1).ORG_ID := p_org_id(x);
9775
9776 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
9777 INTO l_terr_qtype_usg_id
9778 FROM DUAL;
9779
9780 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
9781 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := p_last_update_date(x);
9782 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := p_last_updated_by(x);
9783 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := p_creation_date(x);
9784 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_created_by(x);
9785 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := p_last_update_login(x);
9786 l_terr_qualtypeusgs_tbl(2).TERR_ID := NULL;
9787 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1003;
9788 l_terr_qualtypeusgs_tbl(2).ORG_ID := p_org_id(x);
9789
9790 SELECT JTF_TERR_QUAL_S.NEXTVAL
9791 INTO l_terr_qual_id
9792 FROM DUAL;
9793
9794 j:=0;
9795 K:=0;
9796 l_prev_qual_usg_id:=1;
9797
9798 FOR qval IN match_rule1(overlayterr.named_account_id) LOOP
9799
9800 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
9801
9802 j:=j+1;
9803 SELECT JTF_TERR_QUAL_S.NEXTVAL
9804 INTO l_terr_qual_id
9805 FROM DUAL;
9806
9807 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
9808 l_terr_qual_tbl(j).LAST_UPDATE_DATE := p_last_update_date(x);
9809 l_terr_qual_tbl(j).LAST_UPDATED_BY := p_last_updated_by(x);
9810 l_terr_qual_tbl(j).CREATION_DATE := p_creation_date(x);
9811 l_terr_qual_tbl(j).CREATED_BY := p_created_by(x);
9812 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN := p_last_update_login(x);
9813 l_terr_qual_tbl(j).TERR_ID := NULL;
9814 l_terr_qual_tbl(j).QUAL_USG_ID := qval.qual_usg_id;
9815 l_terr_qual_tbl(j).QUALIFIER_MODE := NULL;
9816 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG := 'N';
9817 l_terr_qual_tbl(j).USE_TO_NAME_FLAG := NULL;
9818 l_terr_qual_tbl(j).GENERATE_FLAG := NULL;
9819 l_terr_qual_tbl(j).ORG_ID := p_org_id(x);
9820 l_prev_qual_usg_id := qval.qual_usg_id;
9821
9822 END IF;
9823
9824 k:=k+1;
9825
9826 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
9827 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
9828 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
9829 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
9830 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
9831 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
9832 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
9833 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
9834 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
9835 l_terr_values_tbl(k).LOW_VALUE_CHAR := qval.value1_char;
9836 l_terr_values_tbl(k).HIGH_VALUE_CHAR := qval.value2_char;
9837 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
9838 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
9839 l_terr_values_tbl(k).VALUE_SET := NULL;
9840 l_terr_values_tbl(k).INTEREST_TYPE_ID := NULL;
9841 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
9842 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
9843 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
9844 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
9845 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
9846 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
9847 l_terr_values_tbl(k).qualifier_tbl_index := j;
9848
9849 END LOOP;
9850
9851 l_init_msg_list :=FND_API.G_TRUE;
9852
9853 JTF_TERRITORY_PVT.create_territory (
9854 p_api_version_number => l_api_version_number,
9855 p_init_msg_list => l_init_msg_list,
9856 p_commit => l_commit,
9857 p_validation_level => FND_API.g_valid_level_NONE,
9858 x_return_status => x_return_status,
9859 x_msg_count => x_msg_count,
9860 x_msg_data => x_msg_data,
9861 p_terr_all_rec => l_terr_all_rec,
9862 p_terr_usgs_tbl => l_terr_usgs_tbl,
9863 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
9864 p_terr_qual_tbl => l_terr_qual_tbl,
9865 p_terr_values_tbl => l_terr_values_tbl,
9866 x_terr_id => x_terr_id,
9867 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
9868 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
9869 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
9870 x_terr_values_out_tbl => x_terr_values_out_tbl
9871
9872 );
9873
9874 IF G_Debug THEN
9875 write_log(2,' OVERLAY Territory Created,territory_id# '||x_terr_id);
9876 END IF;
9877
9878 IF x_return_status = 'S' THEN
9879
9880 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
9881 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
9882 UPDATE JTF_TERR_ALL
9883 SET TERR_GROUP_FLAG = 'Y'
9884 , TERR_GROUP_ID = p_terr_group_id(x)
9885 , NAMED_ACCOUNT_FLAG = 'Y'
9886 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
9887 WHERE terr_id = x_terr_id;
9888
9889 l_overlay:=x_terr_id;
9890
9891 FOR pit IN role_pi( p_terr_group_id(x) , overlayterr.terr_group_account_id) LOOP
9892
9893 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
9894 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
9895 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
9896 l_terr_values_tbl:=l_terr_values_empty_tbl;
9897 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
9898 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
9899
9900 l_role_counter := l_role_counter + 1;
9901
9902 l_terr_all_rec.TERR_ID := overlayterr.terr_group_account_id * -40 * l_role_counter;
9903 l_terr_all_rec.LAST_UPDATE_DATE := p_last_update_date(x);
9904 l_terr_all_rec.LAST_UPDATED_BY := p_last_updated_by(x);
9905 l_terr_all_rec.CREATION_DATE := p_creation_date(x);
9906 l_terr_all_rec.CREATED_BY := p_created_by(x);
9907 l_terr_all_rec.LAST_UPDATE_LOGIN := p_last_update_login(x);
9908 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
9909 l_terr_all_rec.NAME := overlayterr.name || ' ' || pit.role_name || ' (OVERLAY)';
9910 l_terr_all_rec.start_date_active := p_active_from_date(x);
9911 l_terr_all_rec.end_date_active := p_active_to_date(x);
9912 l_terr_all_rec.PARENT_TERRITORY_ID := l_overlay;
9913 l_terr_all_rec.RANK := p_rank(x)+10;
9914 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
9915 l_terr_all_rec.TEMPLATE_FLAG := 'N';
9916 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
9917 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
9918 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
9919 l_terr_all_rec.DESCRIPTION := pit.role_code||' '||overlayterr.name||' (OVERLAY)';
9920 l_terr_all_rec.UPDATE_FLAG := 'N';
9921 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
9922 l_terr_all_rec.ORG_ID := p_org_id(x);
9923 l_terr_all_rec.NUM_WINNERS := NULL ;
9924 l_terr_all_rec.attribute_category := overlayterr.attribute_category;
9925 l_terr_all_rec.attribute1 := overlayterr.attribute1;
9926 l_terr_all_rec.attribute2 := overlayterr.attribute2;
9927 l_terr_all_rec.attribute3 := overlayterr.attribute3;
9928 l_terr_all_rec.attribute4 := overlayterr.attribute4;
9929 l_terr_all_rec.attribute5 := overlayterr.attribute5;
9930 l_terr_all_rec.attribute6 := overlayterr.attribute6;
9931 l_terr_all_rec.attribute7 := overlayterr.attribute7;
9932 l_terr_all_rec.attribute8 := overlayterr.attribute8;
9933 l_terr_all_rec.attribute9 := overlayterr.attribute9;
9934 l_terr_all_rec.attribute10 := overlayterr.attribute10;
9935 l_terr_all_rec.attribute11 := overlayterr.attribute11;
9936 l_terr_all_rec.attribute12 := overlayterr.attribute12;
9937 l_terr_all_rec.attribute13 := overlayterr.attribute13;
9938 l_terr_all_rec.attribute14 := overlayterr.attribute14;
9939 l_terr_all_rec.attribute15 := overlayterr.attribute15;
9940
9941 SELECT JTF_TERR_USGS_S.NEXTVAL
9942 INTO l_terr_usg_id
9943 FROM DUAL;
9944
9945 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
9946 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_last_update_date(x);
9947 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_last_updated_by(x);
9948 l_terr_usgs_tbl(1).CREATION_DATE := p_creation_date(x);
9949 l_terr_usgs_tbl(1).CREATED_BY := p_created_by(x);
9950 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_last_update_login(x);
9951 l_terr_usgs_tbl(1).TERR_ID := NULL;
9952 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
9953 l_terr_usgs_tbl(1).ORG_ID := p_org_id(x);
9954
9955 i := 0;
9956 K:= 0;
9957 FOR acc_type IN role_access(p_terr_group_id(x),pit.role_code) LOOP
9958 --i:=i+1;
9959 --dbms_output.put_line('acc type '||acc_type.access_type);
9960 IF acc_type.access_type= 'OPPORTUNITY' THEN
9961 i:=i+1;
9962 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
9963 INTO l_terr_qtype_usg_id
9964 FROM DUAL;
9965
9966 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
9967 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
9968 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
9969 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
9970 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
9971 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
9972 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
9973 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1003;
9974 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
9975
9976 SELECT JTF_TERR_QUAL_S.NEXTVAL
9977 INTO l_terr_qual_id
9978 FROM DUAL;
9979
9980 /* opp expected purchase */
9981 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
9982 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
9983 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
9984 l_terr_qual_tbl(i).CREATION_DATE := p_creation_date(x);
9985 l_terr_qual_tbl(i).CREATED_BY := p_created_by(x);
9986 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
9987 l_terr_qual_tbl(i).TERR_ID := NULL;
9988 l_terr_qual_tbl(i).QUAL_USG_ID := g_opp_qual_usg_id;
9989 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
9990 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
9991 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
9992 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
9993 l_terr_qual_tbl(i).ORG_ID := p_org_id(x);
9994
9995 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
9996 k:=k+1;
9997
9998 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
9999 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
10000 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
10001 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
10002 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
10003 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
10004 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
10005 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
10006 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
10007 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
10008 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
10009 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
10010 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
10011 l_terr_values_tbl(k).VALUE_SET := NULL;
10012 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
10013 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
10014 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
10015 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
10016 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
10017 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
10018 l_terr_values_tbl(k).qualifier_tbl_index := i;
10019
10020 IF (g_prod_cat_enabled) THEN
10021 l_terr_values_tbl(k).value1_id := qval.product_category_id;
10022 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
10023 ELSE
10024 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
10025 END IF;
10026
10027 END LOOP;
10028
10029 ELSIF acc_type.access_type= 'LEAD' THEN
10030
10031 i:=i+1;
10032 SELECT JTF_TERR_QTYPE_USGS_S.NEXTVAL
10033 INTO l_terr_qtype_usg_id
10034 FROM DUAL;
10035
10036 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
10037 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
10038 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
10039 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_creation_date(x);
10040 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_created_by(x);
10041 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
10042 l_terr_qualtypeusgs_tbl(i).TERR_ID := NULL;
10043 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
10044 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id(x);
10045
10046 SELECT JTF_TERR_QUAL_S.NEXTVAL
10047 INTO l_terr_qual_id
10048 FROM DUAL;
10049
10050 /* lead expected purchase */
10051 l_terr_qual_tbl(i).TERR_QUAL_ID := l_terr_qual_id;
10052 l_terr_qual_tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
10053 l_terr_qual_tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
10054 l_terr_qual_tbl(i).CREATION_DATE := p_creation_date(x);
10055 l_terr_qual_tbl(i).CREATED_BY := p_created_by(x);
10056 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
10057 l_terr_qual_tbl(i).TERR_ID := NULL;
10058 l_terr_qual_tbl(i).QUAL_USG_ID := g_lead_qual_usg_id;
10059 l_terr_qual_tbl(i).QUALIFIER_MODE := NULL;
10060 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG := 'N';
10061 l_terr_qual_tbl(i).USE_TO_NAME_FLAG := NULL;
10062 l_terr_qual_tbl(i).GENERATE_FLAG := NULL;
10063 l_terr_qual_tbl(i).ORG_ID := p_org_id(x);
10064
10065 FOR qval IN role_pi_interest(p_terr_group_id(x),pit.role_code) LOOP
10066
10067 k:=k+1;
10068 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
10069 l_terr_values_tbl(k).LAST_UPDATED_BY := p_last_updated_by(x);
10070 l_terr_values_tbl(k).LAST_UPDATE_DATE := p_last_update_date(x);
10071 l_terr_values_tbl(k).CREATED_BY := p_created_by(x);
10072 l_terr_values_tbl(k).CREATION_DATE := p_creation_date(x);
10073 l_terr_values_tbl(k).LAST_UPDATE_LOGIN := p_last_update_login(x);
10074 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
10075 l_terr_values_tbl(k).INCLUDE_FLAG := NULL;
10076 l_terr_values_tbl(k).COMPARISON_OPERATOR := '=';
10077 l_terr_values_tbl(k).LOW_VALUE_CHAR := NULL;
10078 l_terr_values_tbl(k).HIGH_VALUE_CHAR := NULL;
10079 l_terr_values_tbl(k).LOW_VALUE_NUMBER := NULL;
10080 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := NULL;
10081 l_terr_values_tbl(k).VALUE_SET := NULL;
10082 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := NULL;
10083 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := NULL;
10084 l_terr_values_tbl(k).CURRENCY_CODE := NULL;
10085 l_terr_values_tbl(k).ORG_ID := p_org_id(x);
10086 l_terr_values_tbl(k).ID_USED_FLAG := 'N';
10087 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := NULL;
10088 l_terr_values_tbl(k).qualifier_tbl_index := i;
10089
10090 IF (g_prod_cat_enabled) THEN
10091 l_terr_values_tbl(k).value1_id := qval.product_category_id;
10092 l_terr_values_tbl(k).value2_id := qval.product_category_set_id;
10093 ELSE
10094 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
10095 END IF;
10096
10097 END LOOP;
10098
10099 ELSE
10100 IF G_Debug THEN
10101 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||p_terr_group_id(x));
10102 END IF;
10103 --l_terr_qualtypeusgs_tbl(1).ORG_ID:=p_ORG_ID(x);
10104 END IF;
10105
10106 END LOOP;
10107
10108 l_init_msg_list :=FND_API.G_TRUE;
10109
10110 JTF_TERRITORY_PVT.create_territory (
10111 p_api_version_number => l_api_version_number,
10112 p_init_msg_list => l_init_msg_list,
10113 p_commit => l_commit,
10114 p_validation_level => FND_API.g_valid_level_NONE,
10115 x_return_status => x_return_status,
10116 x_msg_count => x_msg_count,
10117 x_msg_data => x_msg_data,
10118 p_terr_all_rec => l_terr_all_rec,
10119 p_terr_usgs_tbl => l_terr_usgs_tbl,
10120 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
10121 p_terr_qual_tbl => l_terr_qual_tbl,
10122 p_terr_values_tbl => l_terr_values_tbl,
10123 x_terr_id => x_terr_id,
10124 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
10125 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
10126 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
10127 x_terr_values_out_tbl => x_terr_values_out_tbl
10128
10129 );
10130
10131 IF (x_return_status = 'S') THEN
10132
10133 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
10134 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
10135 UPDATE JTF_TERR_ALL
10136 SET TERR_GROUP_FLAG = 'Y'
10137 , TERR_GROUP_ID = p_TERR_GROUP_ID(x)
10138 , NAMED_ACCOUNT_FLAG = 'Y'
10139 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
10140 WHERE terr_id = x_terr_id;
10141
10142 IF G_Debug THEN
10143 write_log(2,' OVERLAY CNR territory created:' || l_terr_all_rec.NAME);
10144 END IF;
10145
10146 ELSE
10147 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
10148 IF G_Debug THEN
10149 write_log(2,x_msg_data);
10150 write_log(2,'Failed in OVERLAY CNR territory treation for ' || 'TERR_GROUP_ACCOUNT_ID = ' ||
10151 overlayterr.terr_group_account_id );
10152 END IF;
10153
10154 END IF; /* IF (x_return_status = 'S') */
10155
10156 --dbms_output.put_line('pit.role '||pit.role_code);
10157 i:=0;
10158
10159 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
10160 FOR rsc IN resource_grp( overlayterr.terr_group_account_id , pit.role_code) LOOP
10161
10162 i:=i+1;
10163
10164 SELECT JTF_TERR_RSC_S.NEXTVAL
10165 INTO l_terr_rsc_id
10166 FROM DUAL;
10167
10168 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
10169 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
10170 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := p_last_update_date(x);
10171 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := p_last_updated_by(x);
10172 l_TerrRsc_Tbl(i).CREATION_DATE := p_creation_date(x);
10173 l_TerrRsc_Tbl(i).CREATED_BY := p_created_by(x);
10174 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := p_last_update_login(x);
10175 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
10176 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
10177 l_TerrRsc_Tbl(i).ROLE := pit.role_code;
10178 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
10179 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := p_active_from_date(x);
10180 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := p_active_to_date(x);
10181 l_TerrRsc_Tbl(i).ORG_ID := p_org_id(x);
10182 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
10183 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
10184 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
10185 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
10186 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
10187 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
10188 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
10189 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
10190 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
10191 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
10192 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
10193 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
10194 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
10195 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
10196 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
10197 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
10198 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
10199 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
10200
10201 a := 0;
10202
10203 FOR rsc_acc IN role_access(p_terr_group_id(x),pit.role_code) LOOP
10204
10205 IF rsc_acc.access_type= 'OPPORTUNITY' THEN
10206
10207 a := a+1;
10208
10209 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
10210 INTO l_terr_rsc_access_id
10211 FROM DUAL;
10212
10213 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
10214 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
10215 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
10216 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
10217 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
10218 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
10219 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
10220 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'OPPOR';
10221 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
10222 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
10223
10224 ELSIF rsc_acc.access_type= 'LEAD' THEN
10225
10226 a := a+1;
10227
10228 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
10229 INTO l_terr_rsc_access_id
10230 FROM DUAL;
10231
10232 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
10233 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := p_last_update_date(x);
10234 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := p_last_updated_by(x);
10235 l_TerrRsc_Access_Tbl(a).CREATION_DATE := p_creation_date(x);
10236 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_created_by(x);
10237 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := p_last_update_login(x);
10238 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
10239 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := 'LEAD';
10240 l_TerrRsc_Access_Tbl(a).ORG_ID := p_org_id(x);
10241 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
10242 END IF;
10243 END LOOP; /* rsc_acc in role_access */
10244
10245 l_init_msg_list :=FND_API.G_TRUE;
10246
10247 -- 07/08/03: JDOCHERT: bug#3023653
10248 Jtf_Territory_Resource_Pvt.create_terrresource (
10249 p_api_version_number => l_Api_Version_Number,
10250 p_init_msg_list => l_Init_Msg_List,
10251 p_commit => l_Commit,
10252 p_validation_level => FND_API.g_valid_level_NONE,
10253 x_return_status => x_Return_Status,
10254 x_msg_count => x_Msg_Count,
10255 x_msg_data => x_msg_data,
10256 p_terrrsc_tbl => l_TerrRsc_tbl,
10257 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
10258 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
10259 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
10260 );
10261
10262 IF x_Return_Status='S' THEN
10263 IF G_Debug THEN
10264 write_log(2,'Resource created for Product Interest OVERLAY Territory# '|| x_terr_id);
10265 END IF;
10266 ELSE
10267 IF G_Debug THEN
10268 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '|| x_terr_id);
10269 END IF;
10270 END IF;
10271
10272 END LOOP; /* rsc in resource_grp */
10273
10274 END LOOP;
10275
10276 ELSE
10277 IF G_Debug THEN
10278 x_msg_data := FND_MSG_PUB.get(1, FND_API.g_false);
10279 write_log(2,x_msg_data);
10280 write_log(2,'Failed in OVERLAY Territory Creation for Territory Group: ' || p_terr_group_id(x) || ' : ' ||
10281 p_terr_group_name(x) );
10282 END IF;
10283 END IF;
10284
10285 END LOOP; /* for overlayterr in get_OVLY_party_name */
10286 END IF; /* IF ( p_matching_rule_code(x) IN ('1', '2') ) THEN */
10287 /***************************************************************/
10288 /* (9) END: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
10289 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
10290 /***************************************************************/
10291
10292 END IF; /* l_pi_count*/
10293
10294 IF G_Debug THEN
10295 write_log(2, '');
10296 write_log(2,'END: Territory Creation for Territory Group: ' || p_terr_group_id(x) || ' : ' ||
10297 p_terr_group_name(x) );
10298 write_log(2, '');
10299 write_log(2, '----------------------------------------------------------');
10300 END IF;
10301
10302 END LOOP;
10303 /****************************************************
10304 ** (2) END: CREATE NAMED ACCOUNT TERRITORY CREATION
10305 ** FOR EACH TERRITORY GROUP
10306 *****************************************************/
10307
10308 EXCEPTION
10309 WHEN OTHERS THEN
10310 IF G_Debug THEN
10311 Write_Log(2, 'Error in procedure create_na_terr_for_TG');
10312 END IF;
10313 IF (get_NON_OVLY_na_trans%ISOPEN) THEN
10314 CLOSE get_NON_OVLY_na_trans;
10315 END IF;
10316 IF (role_access%ISOPEN) THEN
10317 CLOSE role_access;
10318 END IF;
10319 IF (NON_OVLY_role_access%ISOPEN) THEN
10320 CLOSE NON_OVLY_role_access;
10321 END IF;
10322 IF (role_interest_nonpi%ISOPEN) THEN
10323 CLOSE role_interest_nonpi;
10324 END IF;
10325 IF (role_pi%ISOPEN) THEN
10326 CLOSE role_pi;
10327 END IF;
10328 IF (role_pi_interest%ISOPEN) THEN
10329 CLOSE role_pi_interest;
10330 END IF;
10331 IF (resource_grp%ISOPEN) THEN
10332 CLOSE resource_grp;
10333 END IF;
10334 IF (get_party_info%ISOPEN) THEN
10335 CLOSE get_party_info;
10336 END IF;
10337 IF (get_party_name%ISOPEN) THEN
10338 CLOSE get_party_name;
10339 END IF;
10340 IF (get_OVLY_party_info%ISOPEN) THEN
10341 CLOSE get_OVLY_party_info;
10342 END IF;
10343 IF (get_OVLY_party_name%ISOPEN) THEN
10344 CLOSE get_OVLY_party_name;
10345 END IF;
10346 IF (match_rule1%ISOPEN) THEN
10347 CLOSE match_rule1;
10348 END IF;
10349 IF (match_rule3%ISOPEN) THEN
10350 CLOSE match_rule3;
10351 END IF;
10352 IF (na_access%ISOPEN) THEN
10353 CLOSE na_access;
10354 END IF;
10355 IF (catchall_cust%ISOPEN) THEN
10356 CLOSE catchall_cust;
10357 END IF;
10358 IF (topterr%ISOPEN) THEN
10359 CLOSE topterr;
10360 END IF;
10361 IF (csr_get_qual%ISOPEN) THEN
10362 CLOSE csr_get_qual;
10363 END IF;
10364 IF (csr_get_qual_val%ISOPEN) THEN
10365 CLOSE csr_get_qual_val;
10366 END IF;
10367 IF (role_no_pi%ISOPEN) THEN
10368 CLOSE role_no_pi;
10369 END IF;
10370
10371 RAISE;
10372 END create_na_terr_for_TG;
10373
10374 /*------------------------------------------------------------------------------------------
10375 This procedure will delete and recreate the deafult territory corresponding to geo territory
10376 -------------------------------------------------------------------------------------------*/
10377 PROCEDURE process_parent_geo_terr(p_geo_territory_id IN NUMBER)
10378 IS
10379 CURSOR geo_default_terr(l_geo_territory_id NUMBER) IS
10380 SELECT B.geo_territory_id
10381 ,B.geo_terr_name
10382 ,B.terr_group_id
10383 ,C.rank
10384 ,C.active_from_date
10385 ,C.active_to_date
10386 ,C.created_by
10387 ,C.creation_date
10388 ,C.last_updated_by
10389 ,C.last_update_date
10390 ,C.last_update_login
10391 ,D.org_id
10392 ,-1 * B.terr_group_id
10393 ,E.terr_id
10394 FROM jtf_tty_geo_terr B
10395 ,jtf_tty_terr_groups C
10396 ,jtf_terr_all D
10397 ,jtf_terr_all E -- to get the terr_id of the top level territory of overlay branch
10398 WHERE B.geo_territory_id = l_geo_territory_id
10399 AND B.terr_group_id = C.terr_group_id
10400 AND C.parent_terr_id = D.terr_id
10401 AND E.terr_group_id(+) = C.terr_group_id -- outer-join is necessary as overlay branch may not exist
10402 AND E.name(+) = C.terr_group_name || ' (OVERLAY)'
10403 AND E.terr_group_flag(+) = 'Y';
10404
10405 l_geo_territory_id g_geo_territory_id_tab;
10406 l_geo_terr_name g_geo_terr_name_tab;
10407 l_terr_group_id g_terr_group_id_tab;
10408 l_rank g_rank_tab;
10409 l_active_from_date g_active_from_date_tab;
10410 l_active_to_date g_active_to_date_tab;
10411 l_created_by g_created_by_tab;
10412 l_creation_date g_creation_date_tab;
10413 l_last_updated_by g_last_updated_by_tab;
10414 l_last_update_date g_last_update_date_tab;
10415 l_last_update_login g_last_update_login_tab;
10416 l_org_id g_ORG_ID_tab;
10417 l_terr_id g_terr_id_tab;
10418 l_overlay_top g_terr_id_tab;
10419
10420 l_no_of_records NUMBER;
10421 BEGIN
10422 IF G_Debug THEN
10423 Write_Log(2, 'Inside process_parent_geo_terr : open the cursor geo_default_terr');
10424 END IF;
10425
10426 -- open the cursor
10427 OPEN geo_default_terr(p_geo_territory_id);
10428
10429 -- loop till all the geo territories that have been created/updated are processed
10430 LOOP
10431
10432 IF G_Debug THEN
10433 Write_Log(2, 'fetching the next set of territories');
10434 END IF;
10435
10436 /* Bulk collect geo territories information and process them row by row */
10437 FETCH geo_default_terr BULK COLLECT INTO
10438 l_geo_territory_id
10439 ,l_geo_terr_name
10440 ,l_terr_group_id
10441 ,l_rank
10442 ,l_active_from_date
10443 ,l_active_to_date
10444 ,l_created_by
10445 ,l_creation_date
10446 ,l_last_updated_by
10447 ,l_last_update_date
10448 ,l_last_update_login
10449 ,l_org_id
10450 ,l_terr_id
10451 ,l_overlay_top
10452 LIMIT g_commit_chunk_size;
10453
10454 /* Get the number of rows returned by the fetch */
10455 l_no_of_records := l_geo_territory_id.COUNT;
10456
10457 /* process the result set if the fetch has returned at least 1 row */
10458 IF (l_no_of_records > 0) THEN
10459
10460 IF G_Debug THEN
10461 Write_Log(2, 'Start : create_geo_terr_for_GT');
10462 END IF;
10463
10464 create_geo_terr_for_GT(
10465 l_geo_territory_id
10466 ,l_geo_terr_name
10467 ,l_terr_group_id
10468 ,l_rank
10469 ,l_active_from_date
10470 ,l_active_to_date
10471 ,l_created_by
10472 ,l_creation_date
10473 ,l_last_updated_by
10474 ,l_last_update_date
10475 ,l_last_update_login
10476 ,l_org_id
10477 ,l_terr_id
10478 ,l_overlay_top);
10479
10480 IF G_Debug THEN
10481 Write_Log(2, 'End : create_geo_terr_for_GT');
10482 END IF;
10483
10484 /* trim the pl/sql tables to free up memory */
10485 l_geo_territory_id.TRIM(l_no_of_records);
10486 l_geo_terr_name.TRIM(l_no_of_records);
10487 l_terr_group_id.TRIM(l_no_of_records);
10488 l_rank.TRIM(l_no_of_records);
10489 l_active_from_date.TRIM(l_no_of_records);
10490 l_active_to_date.TRIM(l_no_of_records);
10491 l_created_by.TRIM(l_no_of_records);
10492 l_creation_date.TRIM(l_no_of_records);
10493 l_last_updated_by.TRIM(l_no_of_records);
10494 l_last_update_date.TRIM(l_no_of_records);
10495 l_last_update_login.TRIM(l_no_of_records);
10496 l_ORG_ID.TRIM(l_no_of_records);
10497 l_terr_id.TRIM(l_no_of_records);
10498 l_overlay_top.TRIM(l_no_of_records);
10499
10500 END IF;
10501
10502 IF G_Debug THEN
10503 Write_Log(2, 'Finished process the current set of geo territories');
10504 END IF;
10505
10506 EXIT WHEN geo_default_terr%NOTFOUND;
10507
10508 END LOOP;
10509
10510 CLOSE geo_default_terr;
10511
10512 IF G_Debug THEN
10513 Write_Log(2, 'Finish process_parent_geo_terr');
10514 END IF;
10515
10516 EXCEPTION
10517 WHEN OTHERS THEN
10518 IF G_Debug THEN
10519 Write_Log(2, 'process_parent_geo_terr : Error in procedure process_parent_geo_terr');
10520 END IF;
10521 RAISE;
10522 IF (geo_default_terr%ISOPEN) THEN
10523 CLOSE geo_default_terr;
10524 END IF;
10525 END process_parent_geo_terr;
10526
10527 PROCEDURE Initialize
10528 IS
10529 l_status VARCHAR2(30);
10530 l_industry VARCHAR2(30);
10531 l_flag VARCHAR2(1);
10532 BEGIN
10533 G_DEBUG := FALSE;
10534 /* Set Global Application Short Name */
10535 IF G_APP_SHORT_NAME IS NULL THEN
10536 G_APP_SHORT_NAME := 'JTF';
10537 END IF;
10538
10539 -- Get the schema name for JTF
10540 IF(Fnd_Installation.GET_APP_INFO('JTF', l_status, l_industry, g_jtf_schema)) THEN
10541 NULL;
10542 END IF;
10543
10544 IF (Fnd_Profile.DEFINED('JTF_TTY_PROD_CAT_ENABLED')) THEN
10545 l_flag := NVL(Fnd_Profile.VALUE('JTF_TTY_PROD_CAT_ENABLED'), 'N');
10546 IF (l_flag = 'N') THEN
10547 g_prod_cat_enabled := FALSE;
10548 ELSE
10549 g_prod_cat_enabled := TRUE;
10550 END IF;
10551 ELSE
10552 g_prod_cat_enabled := FALSE;
10553 END IF;
10554 IF (g_prod_cat_enabled) THEN
10555 g_opp_qual_usg_id := -1142;
10556 g_lead_qual_usg_id := -1131;
10557 ELSE
10558 g_opp_qual_usg_id := -1023;
10559 g_lead_qual_usg_id := -1018;
10560 END IF;
10561 END Initialize;
10562 /*------------------------------------------------------------
10563 This procedure will create/update territories corresponding to
10564 the geography territories that have been updated
10565 -------------------------------------------------------------*/
10566 PROCEDURE create_terr_for_gt(p_geo_terr_id IN NUMBER,
10567 p_from_where IN VARCHAR2)
10568 IS
10569 CURSOR geo_terr_update(l_geo_terr_id NUMBER) IS
10570 SELECT p_from_where from_where
10571 ,p_geo_terr_id geo_territory_id
10572 ,B.geo_terr_name
10573 ,B.terr_group_id
10574 ,C.rank
10575 ,C.active_from_date
10576 ,C.active_to_date
10577 ,C.created_by
10578 ,C.creation_date
10579 ,C.last_updated_by
10580 ,C.last_update_date
10581 ,C.last_update_login
10582 ,D.org_id
10583 ,-1 * B.terr_group_id
10584 ,E.terr_id
10585 FROM jtf_tty_geo_terr B
10586 ,jtf_tty_terr_groups C
10587 ,jtf_terr_all D
10588 ,jtf_terr_all E -- to get the terr_id of the top level territory of overlay branch
10589 WHERE B.geo_territory_id = l_geo_terr_id
10590 AND B.terr_group_id = C.terr_group_id
10591 AND C.parent_terr_id = D.terr_id
10592 AND E.terr_group_id(+) = C.terr_group_id -- outer-join is necessary as overlay branch may not exist
10593 AND E.name(+) = C.terr_group_name || ' (OVERLAY)'
10594 AND E.terr_group_flag(+) = 'Y';
10595
10596 /* All the child territories of the territories that have been updated */
10597 CURSOR child_terr(l_geo_terr_id NUMBER) IS
10598 SELECT geo_territory_id
10599 FROM JTF_TTY_GEO_TERR
10600 WHERE geo_territory_id <> l_geo_terr_id
10601 START WITH geo_territory_id = l_geo_terr_id
10602 CONNECT BY PRIOR geo_territory_id = parent_geo_terr_id;
10603
10604 l_geo_territory_id g_geo_territory_id_tab;
10605 l_geo_terr_name g_geo_terr_name_tab;
10606 l_terr_group_id g_terr_group_id_tab;
10607 l_rank g_rank_tab;
10608 l_active_from_date g_active_from_date_tab;
10609 l_active_to_date g_active_to_date_tab;
10610 l_created_by g_created_by_tab;
10611 l_creation_date g_creation_date_tab;
10612 l_last_updated_by g_last_updated_by_tab;
10613 l_last_update_date g_last_update_date_tab;
10614 l_last_update_login g_last_update_login_tab;
10615 l_org_id g_ORG_ID_tab;
10616 l_terr_id g_terr_id_tab;
10617 l_overlay_top g_terr_id_tab;
10618 l_from_where g_from_where_tab;
10619 l_child_geo_terr_id g_geo_territory_id_tab;
10620
10621 l_no_of_records NUMBER;
10622 l_no_of_records1 NUMBER;
10623 l_parent_geo_terr_id NUMBER;
10624 BEGIN
10625 Initialize;
10626 IF G_Debug THEN
10627 Write_Log(2, 'Open the cursor geo_terr_update');
10628 END IF;
10629
10630 -- open the cursor
10631 OPEN geo_terr_update(p_geo_terr_id);
10632
10633 -- loop till all the GTs that have been created/updated are processed
10634 LOOP
10635
10636 IF G_Debug THEN
10637 Write_Log(2, 'fetching the next set of GTs');
10638 END IF;
10639
10640 /* Bulk collect GT information and process them row by row */
10641 FETCH geo_terr_update BULK COLLECT INTO
10642 l_from_where
10643 ,l_geo_territory_id
10644 ,l_geo_terr_name
10645 ,l_terr_group_id
10646 ,l_rank
10647 ,l_active_from_date
10648 ,l_active_to_date
10649 ,l_created_by
10650 ,l_creation_date
10651 ,l_last_updated_by
10652 ,l_last_update_date
10653 ,l_last_update_login
10654 ,l_org_id
10655 ,l_terr_id
10656 ,l_overlay_top
10657 LIMIT g_commit_chunk_size;
10658
10659 /* Get the number of rows returned by the fetch */
10660 l_no_of_records := l_geo_territory_id.COUNT;
10661
10662 /* process the result set if the fetch has returned at least 1 row */
10663 IF (l_no_of_records > 0) THEN
10664
10665 IF G_Debug THEN
10666 Write_Log(2, 'Start : create_geo_terr_for_GT');
10667 END IF;
10668
10669 create_geo_terr_for_GT(
10670 l_geo_territory_id
10671 ,l_geo_terr_name
10672 ,l_terr_group_id
10673 ,l_rank
10674 ,l_active_from_date
10675 ,l_active_to_date
10676 ,l_created_by
10677 ,l_creation_date
10678 ,l_last_updated_by
10679 ,l_last_update_date
10680 ,l_last_update_login
10681 ,l_org_id
10682 ,l_terr_id
10683 ,l_overlay_top);
10684
10685 IF G_Debug THEN
10686 Write_Log(2, 'End : create_geo_terr_for_GT');
10687 END IF;
10688
10689 FOR i IN l_geo_territory_id.FIRST .. l_geo_territory_id.LAST LOOP
10690
10691 IF (l_from_where(i) = 'Update Mapping') THEN
10692 BEGIN
10693 /* Get the parent territory id and recreate it */
10694 SELECT A.parent_geo_terr_id
10695 INTO l_parent_geo_terr_id
10696 FROM jtf_tty_geo_terr A
10697 WHERE A.geo_territory_id = l_geo_territory_id(i);
10698
10699 IF G_Debug THEN
10700 Write_Log(2, 'Start : process_parent_geo_terr');
10701 END IF;
10702
10703 process_parent_geo_terr(l_parent_geo_terr_id);
10704
10705 IF G_Debug THEN
10706 Write_Log(2, 'End : process_parent_geo_terr');
10707 END IF;
10708 EXCEPTION
10709 WHEN NO_DATA_FOUND THEN NULL;
10710 WHEN OTHERS THEN RAISE;
10711 END;
10712
10713 /* Get all the child territories and recreate it */
10714 -- open the cursor
10715 OPEN child_terr(l_geo_territory_id(i));
10716
10717 LOOP
10718
10719 /* Bulk collect TGA information and process them row by row */
10720 FETCH child_terr BULK COLLECT INTO
10721 l_child_geo_terr_id
10722 LIMIT g_commit_chunk_size;
10723
10724 /* Get the number of rows returned by the fetch */
10725 l_no_of_records1 := l_child_geo_terr_id.COUNT;
10726
10727 IF (l_no_of_records1 > 0) THEN
10728 FOR j IN l_child_geo_terr_id.FIRST .. l_child_geo_terr_id.LAST LOOP
10729 process_parent_geo_terr(l_child_geo_terr_id(j));
10730 END LOOP;
10731
10732 /* trim the pl/sql tables to free up memory */
10733 l_child_geo_terr_id.TRIM(l_no_of_records1);
10734
10735 END IF;
10736
10737 EXIT WHEN child_terr%NOTFOUND;
10738
10739 END LOOP;
10740
10741 CLOSE child_terr;
10742
10743 END IF; /* end if l_from_where(i) = 'Update Mapping' */
10744
10745 END LOOP;
10746
10747 /* trim the pl/sql tables to free up memory */
10748 l_geo_territory_id.TRIM(l_no_of_records);
10749 l_geo_terr_name.TRIM(l_no_of_records);
10750 l_terr_group_id.TRIM(l_no_of_records);
10751 l_rank.TRIM(l_no_of_records);
10752 l_active_from_date.TRIM(l_no_of_records);
10753 l_active_to_date.TRIM(l_no_of_records);
10754 l_created_by.TRIM(l_no_of_records);
10755 l_creation_date.TRIM(l_no_of_records);
10756 l_last_updated_by.TRIM(l_no_of_records);
10757 l_last_update_date.TRIM(l_no_of_records);
10758 l_last_update_login.TRIM(l_no_of_records);
10759 l_ORG_ID.TRIM(l_no_of_records);
10760 l_terr_id.TRIM(l_no_of_records);
10761 l_overlay_top.TRIM(l_no_of_records);
10762
10763 END IF;
10764
10765 IF G_Debug THEN
10766 Write_Log(2, 'Finished process the current set of GTs');
10767 END IF;
10768
10769 EXIT WHEN geo_terr_update%NOTFOUND;
10770
10771 END LOOP;
10772
10773 CLOSE geo_terr_update;
10774 -- No commit required if updating geography territory
10775 -- from web adi excel document
10776 IF (p_from_where = 'Update Geography Territory Sales Team') THEN
10777 COMMIT;
10778 END IF;
10779
10780 EXCEPTION
10781 WHEN OTHERS THEN
10782 IF G_Debug THEN
10783 Write_Log(2, 'Error in procedure process_GT_update');
10784 END IF;
10785 IF (geo_terr_update%ISOPEN) THEN
10786 CLOSE geo_terr_update;
10787 END IF;
10788 IF (child_terr%ISOPEN) THEN
10789 CLOSE child_terr;
10790 END IF;
10791 RAISE;
10792 END create_terr_for_gt;
10793
10794 /*------------------------------------------------------------
10795 This procedure will create/update territories corresponding to
10796 the territory group account that have been updated
10797 -------------------------------------------------------------*/
10798 PROCEDURE process_TGA_update
10799 IS
10800
10801 /* Territory groups that are created/updated */
10802 CURSOR terr_grp_acct(l_date DATE) IS
10803 SELECT A.terr_group_account_id
10804 ,C.terr_group_id
10805 ,C.rank
10806 ,C.active_from_date
10807 ,C.active_to_date
10808 ,C.matching_rule_code
10809 ,C.generate_catchall_flag
10810 ,C.created_by
10811 ,C.creation_date
10812 ,C.last_updated_by
10813 ,C.last_update_date
10814 ,C.last_update_login
10815 ,D.ORG_ID
10816 ,F.terr_id -- placeholder territory for non-overlay branch
10817 ,E.terr_id -- placeholder territory for overlay branch
10818 ,C.terr_group_id * -1 -- catch-all territory id
10819 -- if the change type is both sales team update and mapping update , we need to process only mapping update
10820 ,MIN(A.change_type) change_type
10821 ,to_char(null) -- attribute_category
10822 ,B.attribute1
10823 ,B.attribute2
10824 ,B.attribute3
10825 ,B.attribute4
10826 ,B.attribute5
10827 ,B.attribute6
10828 ,B.attribute7
10829 ,B.attribute8
10830 ,B.attribute9
10831 ,B.attribute10
10832 ,B.attribute11
10833 ,B.attribute12
10834 ,B.attribute13
10835 ,B.attribute14
10836 ,B.attribute15
10837 FROM (
10838 /* Get the territory group account for which the sales team has been updated */
10839 SELECT A.OBJECT_ID terr_group_account_id
10840 ,'SALES_TEAM_UPDATE' change_type
10841 FROM JTF_TTY_NAMED_ACCT_CHANGES A
10842 WHERE A.creation_date <= l_date
10843 AND A.change_type = 'UPDATE'
10844 AND A.object_type = 'TGA'
10845 AND NOT EXISTS
10846 /* if the territory group account is already deleted , no need to process the insert/update */
10847 ( SELECT 1
10848 FROM jtf_tty_named_acct_changes B
10849 WHERE A.object_id = B.object_id
10850 AND B.object_type = 'TGA'
10851 AND B.change_type = 'DELETE')
10852 UNION
10853 /* Get the territory group account for which the mapping **
10854 ** of the corresponding named account has been updated */
10855 SELECT B.terr_group_account_id terr_group_account_id
10856 ,'MAPPING_UPDATE' change_type
10857 FROM jtf_tty_named_acct_changes A
10858 ,jtf_tty_terr_grp_accts B
10859 WHERE A.creation_date <= l_date
10860 AND A.change_type = 'UPDATE'
10861 AND A.object_type = 'NA'
10862 AND A.object_id = B.named_account_id) A
10863 ,jtf_tty_terr_grp_accts B
10864 ,jtf_tty_terr_groups C
10865 ,jtf_terr_all D -- to get the org_id of the parent territory
10866 ,jtf_terr_all E -- to get the terr_id of the top level territory of overlay branch
10867 ,jtf_terr_all F -- to get the terr_id for the placeholder territory of non-overlay branch
10868 WHERE A.terr_group_account_id = B.terr_group_account_id
10869 AND B.terr_group_id = C.terr_group_id
10870 AND C.parent_terr_id = D.terr_id
10871 AND E.terr_group_id(+) = C.terr_group_id -- outer-join is necessary as overlay branch may not exist
10872 AND E.name(+) = C.terr_group_name || ' (OVERLAY)'
10873 AND E.terr_group_flag(+) = 'Y'
10874 AND F.terr_group_id = C.terr_group_id -- outer-join is necessary as overlay branch may not exist
10875 AND F.name = C.terr_group_name
10876 AND F.terr_group_flag = 'Y'
10877 AND NVL(F.named_account_flag ,'N') <> 'Y'
10878 /* no need to process the TGA if it is part of the TG that has been updated */
10879 AND NOT EXISTS (
10880 SELECT 1
10881 FROM jtf_tty_named_acct_changes F
10882 WHERE F.object_type = 'TG'
10883 AND F.object_id = C.terr_group_id
10884 AND F.creation_date <= l_date)
10885 GROUP BY
10886 A.terr_group_account_id
10887 ,C.terr_group_id
10888 ,C.rank
10889 ,C.active_from_date
10890 ,C.active_to_date
10891 ,C.matching_rule_code
10892 ,C.generate_catchall_flag
10893 ,C.created_by
10894 ,C.creation_date
10895 ,C.last_updated_by
10896 ,C.last_update_date
10897 ,C.last_update_login
10898 ,D.ORG_ID
10899 ,F.terr_id
10900 ,E.terr_id
10901 ,C.terr_group_id * -1
10902 ,B.attribute1
10903 ,B.attribute2
10904 ,B.attribute3
10905 ,B.attribute4
10906 ,B.attribute5
10907 ,B.attribute6
10908 ,B.attribute7
10909 ,B.attribute8
10910 ,B.attribute9
10911 ,B.attribute10
10912 ,B.attribute11
10913 ,B.attribute12
10914 ,B.attribute13
10915 ,B.attribute14
10916 ,B.attribute15;
10917
10918 l_terr_group_account_id g_terr_group_account_id_tab;
10919 l_terr_group_id g_terr_group_id_tab;
10920 l_rank g_rank_tab;
10921 l_active_from_date g_active_from_date_tab;
10922 l_active_to_date g_active_to_date_tab;
10923 l_matching_rule_code g_matching_rule_code_tab;
10924 l_generate_catchall_flag g_generate_catchall_flag_tab;
10925 l_created_by g_created_by_tab;
10926 l_creation_date g_creation_date_tab;
10927 l_last_updated_by g_last_updated_by_tab;
10928 l_last_update_date g_last_update_date_tab;
10929 l_last_update_login g_last_update_login_tab;
10930 l_org_id g_ORG_ID_tab;
10931 l_terr_id g_terr_id_tab;
10932 l_overlay_top g_terr_id_tab;
10933 l_catchall_terr_id g_terr_id_tab;
10934 l_change_type g_change_type_tab;
10935 l_terr_attr_cat g_terr_attr_cat_tab;
10936 l_terr_attribute1 g_terr_attribute_tab;
10937 l_terr_attribute2 g_terr_attribute_tab;
10938 l_terr_attribute3 g_terr_attribute_tab;
10939 l_terr_attribute4 g_terr_attribute_tab;
10940 l_terr_attribute5 g_terr_attribute_tab;
10941 l_terr_attribute6 g_terr_attribute_tab;
10942 l_terr_attribute7 g_terr_attribute_tab;
10943 l_terr_attribute8 g_terr_attribute_tab;
10944 l_terr_attribute9 g_terr_attribute_tab;
10945 l_terr_attribute10 g_terr_attribute_tab;
10946 l_terr_attribute11 g_terr_attribute_tab;
10947 l_terr_attribute12 g_terr_attribute_tab;
10948 l_terr_attribute13 g_terr_attribute_tab;
10949 l_terr_attribute14 g_terr_attribute_tab;
10950 l_terr_attribute15 g_terr_attribute_tab;
10951
10952 l_no_of_records NUMBER;
10953 BEGIN
10954 IF G_Debug THEN
10955 Write_Log(2, 'Open the cursor terr_grp_acct');
10956 END IF;
10957
10958 -- open the cursor
10959 OPEN terr_grp_acct(g_cutoff_time);
10960
10961 -- loop till all the TGAs that have been created/updated are processed
10962 LOOP
10963
10964 IF G_Debug THEN
10965 Write_Log(2, 'fetching the next set of TGAs');
10966 END IF;
10967
10968 /* Bulk collect TGA information and process them row by row */
10969 FETCH terr_grp_acct BULK COLLECT INTO
10970 l_terr_group_account_id
10971 ,l_terr_group_id
10972 ,l_rank
10973 ,l_active_from_date
10974 ,l_active_to_date
10975 ,l_matching_rule_code
10976 ,l_generate_catchall_flag
10977 ,l_created_by
10978 ,l_creation_date
10979 ,l_last_updated_by
10980 ,l_last_update_date
10981 ,l_last_update_login
10982 ,l_ORG_ID
10983 ,l_terr_id
10984 ,l_overlay_top
10985 ,l_catchall_terr_id
10986 ,l_change_type
10987 ,l_terr_attr_cat
10988 ,l_terr_attribute1
10989 ,l_terr_attribute2
10990 ,l_terr_attribute3
10991 ,l_terr_attribute4
10992 ,l_terr_attribute5
10993 ,l_terr_attribute6
10994 ,l_terr_attribute7
10995 ,l_terr_attribute8
10996 ,l_terr_attribute9
10997 ,l_terr_attribute10
10998 ,l_terr_attribute11
10999 ,l_terr_attribute12
11000 ,l_terr_attribute13
11001 ,l_terr_attribute14
11002 ,l_terr_attribute15
11003 LIMIT g_commit_chunk_size;
11004
11005 /* Get the number of rows returned by the fetch */
11006 l_no_of_records := l_terr_group_account_id.COUNT;
11007
11008 /* process the result set if the fetch has returned at least 1 row */
11009 IF (l_no_of_records > 0) THEN
11010
11011 IF G_Debug THEN
11012 Write_Log(2, 'Start : create_na_terr_for_TGA');
11013 END IF;
11014
11015 -- create territories for the territory group account
11016 create_na_terr_for_TGA(
11017 l_terr_group_account_id
11018 ,l_terr_group_id
11019 ,l_rank
11020 ,l_active_from_date
11021 ,l_active_to_date
11022 ,l_matching_rule_code
11023 ,l_generate_catchall_flag
11024 ,l_created_by
11025 ,l_creation_date
11026 ,l_last_updated_by
11027 ,l_last_update_date
11028 ,l_last_update_login
11029 ,l_ORG_ID
11030 ,l_terr_id
11031 ,l_overlay_top
11032 ,l_catchall_terr_id
11033 ,l_change_type
11034 ,l_terr_attr_cat
11035 ,l_terr_attribute1
11036 ,l_terr_attribute2
11037 ,l_terr_attribute3
11038 ,l_terr_attribute4
11039 ,l_terr_attribute5
11040 ,l_terr_attribute6
11041 ,l_terr_attribute7
11042 ,l_terr_attribute8
11043 ,l_terr_attribute9
11044 ,l_terr_attribute10
11045 ,l_terr_attribute11
11046 ,l_terr_attribute12
11047 ,l_terr_attribute13
11048 ,l_terr_attribute14
11049 ,l_terr_attribute15);
11050
11051 IF G_Debug THEN
11052 Write_Log(2, 'End : create_na_terr_for_TGA');
11053 END IF;
11054
11055 /* trim the pl/sql tables to free up memory */
11056 l_terr_group_account_id.TRIM(l_no_of_records);
11057 l_terr_group_id.TRIM(l_no_of_records);
11058 l_rank.TRIM(l_no_of_records);
11059 l_active_from_date.TRIM(l_no_of_records);
11060 l_active_to_date.TRIM(l_no_of_records);
11061 l_matching_rule_code.TRIM(l_no_of_records);
11062 l_generate_catchall_flag.TRIM(l_no_of_records);
11063 l_created_by.TRIM(l_no_of_records);
11064 l_creation_date.TRIM(l_no_of_records);
11065 l_last_updated_by.TRIM(l_no_of_records);
11066 l_last_update_date.TRIM(l_no_of_records);
11067 l_last_update_login.TRIM(l_no_of_records);
11068 l_ORG_ID.TRIM(l_no_of_records);
11069 l_terr_id.TRIM(l_no_of_records);
11070 l_overlay_top.TRIM(l_no_of_records);
11071 l_catchall_terr_id.TRIM(l_no_of_records);
11072 l_change_type.TRIM(l_no_of_records);
11073 l_terr_attr_cat.TRIM(l_no_of_records);
11074 l_terr_attribute1.TRIM(l_no_of_records);
11075 l_terr_attribute2.TRIM(l_no_of_records);
11076 l_terr_attribute3.TRIM(l_no_of_records);
11077 l_terr_attribute4.TRIM(l_no_of_records);
11078 l_terr_attribute5.TRIM(l_no_of_records);
11079 l_terr_attribute6.TRIM(l_no_of_records);
11080 l_terr_attribute7.TRIM(l_no_of_records);
11081 l_terr_attribute8.TRIM(l_no_of_records);
11082 l_terr_attribute9.TRIM(l_no_of_records);
11083 l_terr_attribute10.TRIM(l_no_of_records);
11084 l_terr_attribute11.TRIM(l_no_of_records);
11085 l_terr_attribute12.TRIM(l_no_of_records);
11086 l_terr_attribute13.TRIM(l_no_of_records);
11087 l_terr_attribute14.TRIM(l_no_of_records);
11088 l_terr_attribute15.TRIM(l_no_of_records);
11089
11090 END IF;
11091
11092 IF G_Debug THEN
11093 Write_Log(2, 'Finished process the current set of TGAs');
11094 END IF;
11095
11096 EXIT WHEN terr_grp_acct%NOTFOUND;
11097
11098 END LOOP;
11099
11100 CLOSE terr_grp_acct;
11101
11102 EXCEPTION
11103 WHEN OTHERS THEN
11104 IF G_Debug THEN
11105 Write_Log(2, 'Error in procedure process_TGA_update');
11106 END IF;
11107 IF (terr_grp_acct%ISOPEN) THEN
11108 CLOSE terr_grp_acct;
11109 END IF;
11110 RAISE;
11111 END process_TGA_update;
11112
11113 /*----------------------------------------------------------
11114 This procedure will create/update territories corresponding to
11115 the territory groups that have been created or updated
11116 ----------------------------------------------------------*/
11117 PROCEDURE process_TG_update
11118 IS
11119
11120 /* Named Account Territory groups that are created/updated */
11121 CURSOR na_terr_grp(l_date DATE) IS
11122 SELECT A.TERR_GROUP_ID
11123 , A.TERR_GROUP_NAME
11124 , A.RANK
11125 , A.ACTIVE_FROM_DATE
11126 , A.ACTIVE_TO_DATE
11127 , A.PARENT_TERR_ID
11128 , A.MATCHING_RULE_CODE
11129 , A.CREATED_BY
11130 , A.CREATION_DATE
11131 , A.LAST_UPDATED_BY
11132 , A.LAST_UPDATE_DATE
11133 , A.LAST_UPDATE_LOGIN
11134 , A.Catch_all_resource_id
11135 , A.catch_all_resource_type
11136 , A.generate_catchall_flag
11137 , A.NUM_WINNERS
11138 , B.ORG_ID
11139 , MIN(C.change_type) change_type
11140 -- if there is both insert and update to a territory group , we need to process only the insert
11141 FROM JTF_TTY_TERR_GROUPS A
11142 ,JTF_TERR_ALL B
11143 ,JTF_TTY_NAMED_ACCT_CHANGES C
11144 WHERE C.creation_date <= l_date
11145 AND C.change_type IN ('INSERT', 'UPDATE')
11146 AND C.object_type = 'TG'
11147 AND C.object_id = A.terr_group_id
11148 AND A.parent_terr_id = B.terr_id
11149 AND A.self_service_type = 'NAMED_ACCOUNT'
11150 AND NOT EXISTS
11151 /* if the territory group is already deleted , no need to process the insert/update */
11152 ( SELECT 1
11153 FROM jtf_tty_named_acct_changes D
11154 WHERE D.object_id = C.object_id
11155 AND D.object_type = 'TG'
11156 AND D.change_type = 'DELETE')
11157 GROUP BY
11158 A.TERR_GROUP_ID
11159 , A.TERR_GROUP_NAME
11160 , A.RANK
11161 , A.ACTIVE_FROM_DATE
11162 , A.ACTIVE_TO_DATE
11163 , A.PARENT_TERR_ID
11164 , A.MATCHING_RULE_CODE
11165 , A.CREATED_BY
11166 , A.CREATION_DATE
11167 , A.LAST_UPDATED_BY
11168 , A.LAST_UPDATE_DATE
11169 , A.LAST_UPDATE_LOGIN
11170 , A.Catch_all_resource_id
11171 , A.catch_all_resource_type
11172 , A.generate_catchall_flag
11173 , A.NUM_WINNERS
11174 , B.ORG_ID;
11175
11176 /* Geography Territory groups that are created/updated */
11177 CURSOR geo_terr_grp(l_date DATE) IS
11178 SELECT A.TERR_GROUP_ID
11179 , A.TERR_GROUP_NAME
11180 , A.RANK
11181 , A.ACTIVE_FROM_DATE
11182 , A.ACTIVE_TO_DATE
11183 , A.PARENT_TERR_ID
11184 , A.CREATED_BY
11185 , A.CREATION_DATE
11186 , A.LAST_UPDATED_BY
11187 , A.LAST_UPDATE_DATE
11188 , A.LAST_UPDATE_LOGIN
11189 , A.NUM_WINNERS
11190 , B.ORG_ID
11191 , MIN(C.change_type) change_type
11192 -- if there is both insert and update to a territory group , we need to process only the insert
11193 FROM JTF_TTY_TERR_GROUPS A
11194 ,JTF_TERR_ALL B
11195 ,JTF_TTY_NAMED_ACCT_CHANGES C
11196 WHERE C.creation_date <= l_date
11197 AND C.change_type IN ('INSERT', 'UPDATE')
11198 AND C.object_type = 'TG'
11199 AND C.object_id = A.terr_group_id
11200 AND A.parent_terr_id = B.terr_id
11201 AND A.self_service_type = 'GEOGRAPHY'
11202 AND NOT EXISTS
11203 /* if the territory group is already deleted , no need to process the insert/update */
11204 ( SELECT 1
11205 FROM jtf_tty_named_acct_changes D
11206 WHERE D.object_id = C.object_id
11207 AND D.object_type = 'TG'
11208 AND D.change_type = 'DELETE')
11209 GROUP BY
11210 A.TERR_GROUP_ID
11211 , A.TERR_GROUP_NAME
11212 , A.RANK
11213 , A.ACTIVE_FROM_DATE
11214 , A.ACTIVE_TO_DATE
11215 , A.PARENT_TERR_ID
11216 , A.MATCHING_RULE_CODE
11217 , A.CREATED_BY
11218 , A.CREATION_DATE
11219 , A.LAST_UPDATED_BY
11220 , A.LAST_UPDATE_DATE
11221 , A.LAST_UPDATE_LOGIN
11222 , A.Catch_all_resource_id
11223 , A.catch_all_resource_type
11224 , A.generate_catchall_flag
11225 , A.NUM_WINNERS
11226 , B.ORG_ID;
11227
11228 l_terr_group_id g_terr_group_id_tab;
11229 l_terr_group_name g_terr_group_name_tab;
11230 l_rank g_rank_tab;
11231 l_active_from_date g_active_from_date_tab;
11232 l_active_to_date g_active_to_date_tab;
11233 l_parent_terr_id g_parent_terr_id_tab;
11234 l_matching_rule_code g_matching_rule_code_tab;
11235 l_created_by g_created_by_tab;
11236 l_creation_date g_creation_date_tab;
11237 l_last_updated_by g_last_updated_by_tab;
11238 l_last_update_date g_last_update_date_tab;
11239 l_last_update_login g_last_update_login_tab;
11240 l_catch_all_resource_id g_catch_all_resource_id_tab;
11241 l_catch_all_resource_type g_catch_all_resource_type_tab;
11242 l_generate_catchall_flag g_generate_catchall_flag_tab;
11243 l_num_winners g_num_winners_tab;
11244 l_org_id g_org_id_tab;
11245 l_change_type g_change_type_tab;
11246
11247 l_no_of_records NUMBER;
11248 BEGIN
11249 IF G_Debug THEN
11250 Write_Log(2, 'Opening the cursor na_terr_grp');
11251 END IF;
11252
11253 /* Process the named account territory groups */
11254 -- open the cursor
11255 OPEN na_terr_grp(g_cutoff_time);
11256
11257 -- loop till all the TGs that have been created/updated are processed
11258 LOOP
11259
11260 IF G_Debug THEN
11261 Write_Log(2, 'fetching the next set of TGs');
11262 END IF;
11263
11264 /* Bulk collect TG information and process them row by row */
11265 FETCH na_terr_grp BULK COLLECT INTO
11266 l_terr_group_id
11267 ,l_terr_group_name
11268 ,l_rank
11269 ,l_active_from_date
11270 ,l_active_to_date
11271 ,l_parent_terr_id
11272 ,l_matching_rule_code
11273 ,l_created_by
11274 ,l_creation_date
11275 ,l_last_updated_by
11276 ,l_last_update_date
11277 ,l_last_update_login
11278 ,l_catch_all_resource_id
11279 ,l_catch_all_resource_type
11280 ,l_generate_catchall_flag
11281 ,l_num_winners
11282 ,l_org_id
11283 ,l_change_type
11284 LIMIT g_commit_chunk_size;
11285
11286 /* Get the number of rows returned by the fetch */
11287 l_no_of_records := l_terr_group_id.COUNT;
11288
11289 /* process the result set if the fetch has returned at least 1 row */
11290 IF (l_no_of_records > 0) THEN
11291
11292 IF G_Debug THEN
11293 Write_Log(2, 'START: create_na_terr_for_TG');
11294 END IF;
11295
11296 create_na_terr_for_TG (
11297 l_terr_group_id
11298 ,l_terr_group_name
11299 ,l_rank
11300 ,l_active_from_date
11301 ,l_active_to_date
11302 ,l_parent_terr_id
11303 ,l_matching_rule_code
11304 ,l_created_by
11305 ,l_creation_date
11306 ,l_last_updated_by
11307 ,l_last_update_date
11308 ,l_last_update_login
11309 ,l_catch_all_resource_id
11310 ,l_catch_all_resource_type
11311 ,l_generate_catchall_flag
11312 ,l_num_winners
11313 ,l_org_id
11314 ,l_change_type
11315 ,NULL
11316 ,NULL
11317 ,NULL);
11318
11319 IF G_Debug THEN
11320 Write_Log(2, 'END: create_na_terr_for_TG');
11321 END IF;
11322
11323 /* trim the pl/sql tables to free up memory */
11324 l_terr_group_id.TRIM(l_no_of_records);
11325 l_terr_group_name.TRIM(l_no_of_records);
11326 l_rank.TRIM(l_no_of_records);
11327 l_active_from_date.TRIM(l_no_of_records);
11328 l_active_to_date.TRIM(l_no_of_records);
11329 l_parent_terr_id.TRIM(l_no_of_records);
11330 l_matching_rule_code.TRIM(l_no_of_records);
11331 l_created_by.TRIM(l_no_of_records);
11332 l_creation_date.TRIM(l_no_of_records);
11333 l_last_updated_by.TRIM(l_no_of_records);
11334 l_last_update_date.TRIM(l_no_of_records);
11335 l_last_update_login.TRIM(l_no_of_records);
11336 l_catch_all_resource_id.TRIM(l_no_of_records);
11337 l_catch_all_resource_type.TRIM(l_no_of_records);
11338 l_generate_catchall_flag.TRIM(l_no_of_records);
11339 l_num_winners.TRIM(l_no_of_records);
11340 l_org_id.TRIM(l_no_of_records);
11341 l_change_type.TRIM(l_no_of_records);
11342
11343 END IF;
11344
11345 IF G_Debug THEN
11346 Write_Log(2, 'Finished process the current set of TGs');
11347 END IF;
11348
11349 EXIT WHEN na_terr_grp%NOTFOUND;
11350
11351 END LOOP;
11352
11353 CLOSE na_terr_grp;
11354 /* End process named account territory groups */
11355
11356 /* Process the geography territory groups */
11357 -- open the cursor
11358 OPEN geo_terr_grp(g_cutoff_time);
11359
11360 -- loop till all the TGs that have been created/updated are processed
11361 LOOP
11362
11363 IF G_Debug THEN
11364 Write_Log(2, 'fetching the next set of TGs');
11365 END IF;
11366
11367 /* Bulk collect TG information and process them row by row */
11368 FETCH geo_terr_grp BULK COLLECT INTO
11369 l_terr_group_id
11370 ,l_terr_group_name
11371 ,l_rank
11372 ,l_active_from_date
11373 ,l_active_to_date
11374 ,l_parent_terr_id
11375 ,l_created_by
11376 ,l_creation_date
11377 ,l_last_updated_by
11378 ,l_last_update_date
11379 ,l_last_update_login
11380 ,l_num_winners
11381 ,l_org_id
11382 ,l_change_type
11383 LIMIT g_commit_chunk_size;
11384
11385 /* Get the number of rows returned by the fetch */
11386 l_no_of_records := l_terr_group_id.COUNT;
11387
11388 /* process the result set if the fetch has returned at least 1 row */
11389 IF (l_no_of_records > 0) THEN
11390
11391 IF G_Debug THEN
11392 Write_Log(2, 'START: create_geo_terr_for_TG');
11393 END IF;
11394
11395 create_geo_terr_for_TG (
11396 l_terr_group_id
11397 ,l_terr_group_name
11398 ,l_rank
11399 ,l_active_from_date
11400 ,l_active_to_date
11401 ,l_parent_terr_id
11402 ,l_created_by
11403 ,l_creation_date
11404 ,l_last_updated_by
11405 ,l_last_update_date
11406 ,l_last_update_login
11407 ,l_num_winners
11408 ,l_org_id
11409 ,l_change_type);
11410
11411 IF G_Debug THEN
11412 Write_Log(2, 'END: create_geo_terr_for_TG');
11413 END IF;
11414
11415 /* trim the pl/sql tables to free up memory */
11416 l_terr_group_id.TRIM(l_no_of_records);
11417 l_terr_group_name.TRIM(l_no_of_records);
11418 l_rank.TRIM(l_no_of_records);
11419 l_active_from_date.TRIM(l_no_of_records);
11420 l_active_to_date.TRIM(l_no_of_records);
11421 l_parent_terr_id.TRIM(l_no_of_records);
11422 l_created_by.TRIM(l_no_of_records);
11423 l_creation_date.TRIM(l_no_of_records);
11424 l_last_updated_by.TRIM(l_no_of_records);
11425 l_last_update_date.TRIM(l_no_of_records);
11426 l_last_update_login.TRIM(l_no_of_records);
11427 l_num_winners.TRIM(l_no_of_records);
11428 l_org_id.TRIM(l_no_of_records);
11429 l_change_type.TRIM(l_no_of_records);
11430
11431 END IF;
11432
11433 IF G_Debug THEN
11434 Write_Log(2, 'Finished process the current set of TGs');
11435 END IF;
11436
11437 EXIT WHEN geo_terr_grp%NOTFOUND;
11438
11439 END LOOP;
11440
11441 CLOSE geo_terr_grp;
11442 /* End process geography territory groups */
11443
11444 EXCEPTION
11445 WHEN OTHERS THEN
11446 IF G_Debug THEN
11447 Write_Log(2, 'Error in procedure process_TG_update');
11448 END IF;
11449 IF (na_terr_grp%ISOPEN) THEN
11450 CLOSE na_terr_grp;
11451 END IF;
11452 IF (geo_terr_grp%ISOPEN) THEN
11453 CLOSE geo_terr_grp;
11454 END IF;
11455 RAISE;
11456 END process_TG_update;
11457
11458 /*----------------------------------------------------------
11459 This procedure will delete territories corresponding to the
11460 geography territories that have been deleted
11461 ----------------------------------------------------------*/
11462 PROCEDURE process_GT_delete
11463 IS
11464
11465 /* Geography territories that are deleted */
11466 CURSOR geo_terr_delete(l_date DATE) IS
11467 SELECT DISTINCT A.object_id
11468 FROM jtf_tty_named_acct_changes A
11469 ,jtf_terr_all B
11470 WHERE A.creation_date <= l_date
11471 AND A.change_type = 'DELETE'
11472 AND A.object_type = 'GT'
11473 AND A.object_id = B.geo_territory_id
11474 /* no need to process the deleted GT if the corresponding TG has been updated */
11475 AND NOT EXISTS (
11476 SELECT 1
11477 FROM jtf_tty_named_acct_changes F
11478 WHERE F.object_type = 'TG'
11479 AND F.object_id = B.terr_group_id
11480 AND F.creation_date <= l_date);
11481
11482 /* Parent of the geography territories that are deleted */
11483 CURSOR geo_terr_parent_delete(l_date DATE) IS
11484 SELECT DISTINCT A.object_id
11485 FROM jtf_tty_named_acct_changes A
11486 ,jtf_terr_all B
11487 WHERE A.creation_date <= l_date
11488 AND A.change_type = 'DELETE PARENT'
11489 AND A.object_type = 'GT'
11490 AND A.object_id = B.geo_territory_id
11491 /* no need to process the GT if the corresponding TG has been updated */
11492 AND NOT EXISTS (
11493 SELECT 1
11494 FROM jtf_tty_named_acct_changes F
11495 WHERE F.object_type = 'TG'
11496 AND F.object_id = B.terr_group_id
11497 AND F.creation_date <= l_date);
11498
11499 l_geo_territory_id g_geo_territory_id_tab;
11500
11501 l_no_of_records NUMBER;
11502 BEGIN
11503 IF G_Debug THEN
11504 Write_Log(2, 'open the cursor geo_terr_delete');
11505 END IF;
11506
11507 -- open the cursor
11508 OPEN geo_terr_delete(g_cutoff_time);
11509
11510 -- loop till all the GTs that have been deleted are processed
11511 LOOP
11512
11513 IF G_Debug THEN
11514 Write_Log(2, 'fetching the next set of GTs');
11515 END IF;
11516
11517 /* Bulk collect GT information and process them row by row */
11518 FETCH geo_terr_delete BULK COLLECT INTO
11519 l_geo_territory_id
11520 LIMIT g_commit_chunk_size;
11521
11522 /* Get the number of rows returned by the fetch */
11523 l_no_of_records := l_geo_territory_id.COUNT;
11524
11525 /* process the return set if the fetch has returned at least 1 row */
11526 IF (l_no_of_records > 0) THEN
11527
11528 FOR i IN l_geo_territory_id.FIRST .. l_geo_territory_id.LAST LOOP
11529
11530 IF G_Debug THEN
11531 Write_Log(2, 'START: delete_geo_terr');
11532 END IF;
11533
11534 delete_geo_terr(l_geo_territory_id(i));
11535
11536 IF G_Debug THEN
11537 Write_Log(2, 'END: delete_geo_terr');
11538 Write_Log(2, 'All the territories corresponding to the geography territory ' || l_geo_territory_id(i) ||
11539 ' have been deleted successfully.');
11540 END IF;
11541
11542 END LOOP;
11543
11544 /* trim the pl/sql tables to free up memory */
11545 l_geo_territory_id.TRIM(l_no_of_records);
11546
11547 END IF;
11548
11549 IF G_Debug THEN
11550 Write_Log(2, 'Finished process the current set of GTs');
11551 END IF;
11552
11553 EXIT WHEN geo_terr_delete%NOTFOUND;
11554
11555 END LOOP;
11556
11557 CLOSE geo_terr_delete;
11558
11559 IF G_Debug THEN
11560 Write_Log(2, 'open the cursor geo_terr_parent_delete');
11561 END IF;
11562
11563 -- open the cursor
11564 OPEN geo_terr_parent_delete(g_cutoff_time);
11565
11566 -- loop till all the GTs that have been deleted are processed
11567 LOOP
11568
11569 IF G_Debug THEN
11570 Write_Log(2, 'fetching the next set of GTs');
11571 END IF;
11572
11573 /* Bulk collect GT information and process them row by row */
11574 FETCH geo_terr_parent_delete BULK COLLECT INTO
11575 l_geo_territory_id
11576 LIMIT g_commit_chunk_size;
11577
11578 /* Get the number of rows returned by the fetch */
11579 l_no_of_records := l_geo_territory_id.COUNT;
11580
11581 /* process the return set if the fetch has returned at least 1 row */
11582 IF (l_no_of_records > 0) THEN
11583
11584 FOR i IN l_geo_territory_id.FIRST .. l_geo_territory_id.LAST LOOP
11585
11586 IF G_Debug THEN
11587 Write_Log(2, 'START: process_parent_geo_terr');
11588 END IF;
11589
11590 /* Delete and recreate the default geography territory */
11591 process_parent_geo_terr(l_geo_territory_id(i));
11592
11593 IF G_Debug THEN
11594 Write_Log(2, 'END: process_parent_geo_terr');
11595 END IF;
11596 END LOOP;
11597
11598 /* trim the pl/sql tables to free up memory */
11599 l_geo_territory_id.TRIM(l_no_of_records);
11600
11601 END IF;
11602
11603 IF G_Debug THEN
11604 Write_Log(2, 'Finished process the current set of GTs');
11605 END IF;
11606
11607 EXIT WHEN geo_terr_parent_delete%NOTFOUND;
11608
11609 END LOOP;
11610
11611 CLOSE geo_terr_parent_delete;
11612
11613 EXCEPTION
11614 WHEN OTHERS THEN
11615 IF G_Debug THEN
11616 Write_Log(2, 'Error in procedure process_GT_delete');
11617 END IF;
11618 IF (geo_terr_delete%ISOPEN) THEN
11619 CLOSE geo_terr_delete;
11620 END IF;
11621 IF (geo_terr_parent_delete%ISOPEN) THEN
11622 CLOSE geo_terr_parent_delete;
11623 END IF;
11624 RAISE;
11625 END process_GT_delete;
11626
11627 /*----------------------------------------------------------
11628 This procedure will create territories in incremental mode
11629 ----------------------------------------------------------*/
11630 PROCEDURE terr_incr_refresh
11631 IS
11632
11633 BEGIN
11634 IF G_Debug THEN
11635 Write_Log(2, 'Start altering triggers and determine the cut-off time');
11636 END IF;
11637
11638 -- disable all the triggers
11639 alter_triggers(p_status => 'DISABLE');
11640
11641 -- set the cut-off time to sysdate ; any changes made to territory group after this will not be processed in this run
11642 g_cutoff_time := SYSDATE;
11643
11644 IF G_Debug THEN
11645 Write_Log(2, 'Finished altering triggers and determining the cut-off time');
11646 Write_Log(2, 'START: process_TG_delete');
11647 END IF;
11648
11649 -- call the procedure process_TG_delete to handle the TGs that have been deleted
11650 process_TG_delete;
11651
11652 IF G_Debug THEN
11653 Write_Log(2, 'END: process_TG_delete');
11654 Write_Log(2, 'START: process_TG_update');
11655 END IF;
11656
11657 -- call the procedure process_TG_update to handle the TGs that have been created or updated
11658 process_TG_update;
11659
11660 IF G_Debug THEN
11661 Write_Log(2, 'END: process_TG_update');
11662 Write_Log(2, 'START: process_TGA_delete');
11663 END IF;
11664
11665 -- call the procedure process_TGA_delete to handle the TGAs that have been deleted
11666 process_TGA_delete;
11667
11668 IF G_Debug THEN
11669 Write_Log(2, 'END: process_TGA_delete');
11670 Write_Log(2, 'START: process_GT_delete');
11671 END IF;
11672
11673 -- call the procedure process_GT_delete to handle the GTs that have been deleted
11674 process_GT_delete;
11675
11676 IF G_Debug THEN
11677 Write_Log(2, 'END: process_GT_delete');
11678 Write_Log(2, 'START: process_TGA_update');
11679 END IF;
11680
11681 -- call the procedure process_TGA_update to handle the TGAs that have been updated
11682 process_TGA_update;
11683
11684 IF G_Debug THEN
11685 Write_Log(2, 'END: process_TGA_update');
11686 Write_Log(2, 'START: process_GT_update');
11687 END IF;
11688
11689 -- call the procedure process_GT_update to handle the GTs that have been updated
11690
11691 IF G_Debug THEN
11692 Write_Log(2, 'END: process_GT_update');
11693 END IF;
11694
11695 -- enable all the triggers
11696 alter_triggers(p_status => 'ENABLE');
11697
11698 -- delete the records from jtf_tty_named_acct_changes which have been processed
11699 DELETE jtf_tty_named_acct_changes
11700 WHERE creation_date <= g_cutoff_time;
11701
11702 EXCEPTION
11703 WHEN OTHERS THEN
11704 IF G_Debug THEN
11705 Write_Log(2, 'Error in procedure terr_incr_refresh');
11706 END IF;
11707 RAISE;
11708 END terr_incr_refresh;
11709
11710 /*----------------------------------------------------------
11711 This procedure will delete all the territories and recreate
11712 the territories for all the territory groups in total mode
11713 ----------------------------------------------------------*/
11714 PROCEDURE terr_initial_load
11715 IS
11716 /* Active Named Account Territory Groups with active Top-Level Territories */
11717 CURSOR na_terr_grp IS
11718 SELECT A.TERR_GROUP_ID
11719 , A.TERR_GROUP_NAME
11720 , A.RANK
11721 , A.ACTIVE_FROM_DATE
11722 , A.ACTIVE_TO_DATE
11723 , A.PARENT_TERR_ID
11724 , A.MATCHING_RULE_CODE
11725 , A.CREATED_BY
11726 , A.CREATION_DATE
11727 , A.LAST_UPDATED_BY
11728 , A.LAST_UPDATE_DATE
11729 , A.LAST_UPDATE_LOGIN
11730 , A.Catch_all_resource_id
11731 , A.catch_all_resource_type
11732 , A.generate_catchall_flag
11733 , A.NUM_WINNERS
11734 , B.ORG_ID
11735 , 'INSERT'
11736 FROM JTF_TTY_TERR_GROUPS A
11737 , JTF_TERR_ALL B
11738 WHERE a.parent_terr_id = b.terr_id
11739 AND ( a.active_to_date >= SYSDATE OR a.active_to_date IS NULL )
11740 AND a.active_from_date <= SYSDATE
11741 AND a.self_service_type = 'NAMED_ACCOUNT';
11742
11743 /* Active Geography Territory Groups with active Top-Level Territories */
11744 CURSOR geo_terr_grp IS
11745 SELECT A.TERR_GROUP_ID
11746 , A.TERR_GROUP_NAME
11747 , A.RANK
11748 , A.ACTIVE_FROM_DATE
11749 , A.ACTIVE_TO_DATE
11750 , A.PARENT_TERR_ID
11751 , A.CREATED_BY
11752 , A.CREATION_DATE
11753 , A.LAST_UPDATED_BY
11754 , A.LAST_UPDATE_DATE
11755 , A.LAST_UPDATE_LOGIN
11756 , A.NUM_WINNERS
11757 , B.ORG_ID
11758 , 'INSERT'
11759 FROM JTF_TTY_TERR_GROUPS A
11760 , JTF_TERR_ALL B
11761 WHERE a.parent_terr_id = b.terr_id
11762 AND ( a.active_to_date >= SYSDATE OR a.active_to_date IS NULL )
11763 AND a.active_from_date <= SYSDATE
11764 AND a.self_service_type = 'GEOGRAPHY';
11765
11766 l_terr_group_id g_terr_group_id_tab;
11767 l_terr_group_name g_terr_group_name_tab;
11768 l_rank g_rank_tab;
11769 l_active_from_date g_active_from_date_tab;
11770 l_active_to_date g_active_to_date_tab;
11771 l_parent_terr_id g_parent_terr_id_tab;
11772 l_matching_rule_code g_matching_rule_code_tab;
11773 l_created_by g_created_by_tab;
11774 l_creation_date g_creation_date_tab;
11775 l_last_updated_by g_last_updated_by_tab;
11776 l_last_update_date g_last_update_date_tab;
11777 l_last_update_login g_last_update_login_tab;
11778 l_catch_all_resource_id g_catch_all_resource_id_tab;
11779 l_catch_all_resource_type g_catch_all_resource_type_tab;
11780 l_generate_catchall_flag g_generate_catchall_flag_tab;
11781 l_num_winners g_num_winners_tab;
11782 l_org_id g_org_id_tab;
11783 l_change_type g_change_type_tab;
11784
11785 l_no_of_records NUMBER;
11786 l_stmt VARCHAR2(300);
11787
11788 BEGIN
11789 IF G_Debug THEN
11790 Write_Log(2, 'Start altering triggers and deleting existing territories');
11791 END IF;
11792
11793 -- disable all the triggers
11794 alter_triggers(p_status => 'DISABLE');
11795
11796 -- delete all existing territories
11797 cleanup_na_territories(p_mode => 'TOTAL');
11798
11799 IF G_Debug THEN
11800 Write_Log(2, 'End altering triggers and deleting existing territories');
11801 END IF;
11802
11803 /* Process the named account territory groups */
11804 -- open the cursor
11805 OPEN na_terr_grp;
11806
11807 -- loop till all the TGs are processed
11808 LOOP
11809
11810 IF G_Debug THEN
11811 Write_Log(2, 'fetching the next set of TGs');
11812 END IF;
11813
11814 /* Bulk collect TG information and process them row by row */
11815 FETCH na_terr_grp BULK COLLECT INTO
11816 l_terr_group_id
11817 ,l_terr_group_name
11818 ,l_rank
11819 ,l_active_from_date
11820 ,l_active_to_date
11821 ,l_parent_terr_id
11822 ,l_matching_rule_code
11823 ,l_created_by
11824 ,l_creation_date
11825 ,l_last_updated_by
11826 ,l_last_update_date
11827 ,l_last_update_login
11828 ,l_catch_all_resource_id
11829 ,l_catch_all_resource_type
11830 ,l_generate_catchall_flag
11831 ,l_num_winners
11832 ,l_org_id
11833 ,l_change_type
11834 LIMIT g_commit_chunk_size;
11835
11836 /* Get the number of rows returned by the fetch */
11837 l_no_of_records := l_terr_group_id.COUNT;
11838
11839 /* process the result set if the fetch has returned at least 1 row */
11840 IF (l_no_of_records > 0) THEN
11841 IF G_Debug THEN
11842 Write_Log(2, 'START: create_na_terr_for_TG');
11843 END IF;
11844
11845 create_na_terr_for_TG (
11846 l_terr_group_id
11847 ,l_terr_group_name
11848 ,l_rank
11849 ,l_active_from_date
11850 ,l_active_to_date
11851 ,l_parent_terr_id
11852 ,l_matching_rule_code
11853 ,l_created_by
11854 ,l_creation_date
11855 ,l_last_updated_by
11856 ,l_last_update_date
11857 ,l_last_update_login
11858 ,l_catch_all_resource_id
11859 ,l_catch_all_resource_type
11860 ,l_generate_catchall_flag
11861 ,l_num_winners
11862 ,l_org_id
11863 ,l_change_type
11864 ,NULL
11865 ,NULL
11866 ,NULL);
11867
11868 IF G_Debug THEN
11869 Write_Log(2, 'END: create_na_terr_for_TG');
11870 END IF;
11871
11872 /* trim the pl/sql tables to free up memory */
11873 l_terr_group_id.TRIM(l_no_of_records);
11874 l_terr_group_name.TRIM(l_no_of_records);
11875 l_rank.TRIM(l_no_of_records);
11876 l_active_from_date.TRIM(l_no_of_records);
11877 l_active_to_date.TRIM(l_no_of_records);
11878 l_parent_terr_id.TRIM(l_no_of_records);
11879 l_matching_rule_code.TRIM(l_no_of_records);
11880 l_created_by.TRIM(l_no_of_records);
11881 l_creation_date.TRIM(l_no_of_records);
11882 l_last_updated_by.TRIM(l_no_of_records);
11883 l_last_update_date.TRIM(l_no_of_records);
11884 l_last_update_login.TRIM(l_no_of_records);
11885 l_catch_all_resource_id.TRIM(l_no_of_records);
11886 l_catch_all_resource_type.TRIM(l_no_of_records);
11887 l_generate_catchall_flag.TRIM(l_no_of_records);
11888 l_num_winners.TRIM(l_no_of_records);
11889 l_org_id.TRIM(l_no_of_records);
11890 l_change_type.TRIM(l_no_of_records);
11891
11892 END IF;
11893
11894 IF G_Debug THEN
11895 Write_Log(2, 'Finished processing the current set of TGs');
11896 END IF;
11897
11898 EXIT WHEN na_terr_grp%NOTFOUND;
11899
11900 END LOOP;
11901
11902 CLOSE na_terr_grp;
11903
11904 /* End process the named account territory groups */
11905
11906 /* Process the geography territory groups */
11907 -- open the cursor
11908 OPEN geo_terr_grp;
11909
11910 -- loop till all the TGs are processed
11911 LOOP
11912
11913 IF G_Debug THEN
11914 Write_Log(2, 'fetching the next set of TGs');
11915 END IF;
11916
11917 /* Bulk collect TG information and process them row by row */
11918 FETCH geo_terr_grp BULK COLLECT INTO
11919 l_terr_group_id
11920 ,l_terr_group_name
11921 ,l_rank
11922 ,l_active_from_date
11923 ,l_active_to_date
11924 ,l_parent_terr_id
11925 ,l_created_by
11926 ,l_creation_date
11927 ,l_last_updated_by
11928 ,l_last_update_date
11929 ,l_last_update_login
11930 ,l_num_winners
11931 ,l_org_id
11932 ,l_change_type
11933 LIMIT g_commit_chunk_size;
11934
11935 /* Get the number of rows returned by the fetch */
11936 l_no_of_records := l_terr_group_id.COUNT;
11937
11938 /* process the result set if the fetch has returned at least 1 row */
11939 IF (l_no_of_records > 0) THEN
11940 IF G_Debug THEN
11941 Write_Log(2, 'START: create_geo_terr_for_TG');
11942 END IF;
11943
11944 create_geo_terr_for_TG (
11945 l_terr_group_id
11946 ,l_terr_group_name
11947 ,l_rank
11948 ,l_active_from_date
11949 ,l_active_to_date
11950 ,l_parent_terr_id
11951 ,l_created_by
11952 ,l_creation_date
11953 ,l_last_updated_by
11954 ,l_last_update_date
11955 ,l_last_update_login
11956 ,l_num_winners
11957 ,l_org_id
11958 ,l_change_type);
11959
11960 IF G_Debug THEN
11961 Write_Log(2, 'END: create_geo_terr_for_TG');
11962 END IF;
11963
11964 /* trim the pl/sql tables to free up memory */
11965 l_terr_group_id.TRIM(l_no_of_records);
11966 l_terr_group_name.TRIM(l_no_of_records);
11967 l_rank.TRIM(l_no_of_records);
11968 l_active_from_date.TRIM(l_no_of_records);
11969 l_active_to_date.TRIM(l_no_of_records);
11970 l_parent_terr_id.TRIM(l_no_of_records);
11971 l_created_by.TRIM(l_no_of_records);
11972 l_creation_date.TRIM(l_no_of_records);
11973 l_last_updated_by.TRIM(l_no_of_records);
11974 l_last_update_date.TRIM(l_no_of_records);
11975 l_last_update_login.TRIM(l_no_of_records);
11976 l_num_winners.TRIM(l_no_of_records);
11977 l_org_id.TRIM(l_no_of_records);
11978 l_change_type.TRIM(l_no_of_records);
11979
11980 END IF;
11981
11982 IF G_Debug THEN
11983 Write_Log(2, 'Finished processing the current set of TGs');
11984 END IF;
11985
11986 EXIT WHEN geo_terr_grp%NOTFOUND;
11987
11988 END LOOP;
11989
11990 CLOSE geo_terr_grp;
11991
11992 /* End process the named account territory groups */
11993
11994 -- enable all the triggers
11995 alter_triggers(p_status => 'ENABLE');
11996
11997 -- truncate the table jtf_tty_named_accts so that next incremental runs donot process the rows processed in total mode
11998 l_stmt := 'truncate table '||g_jtf_schema||'.'|| 'jtf_tty_named_acct_changes';
11999 EXECUTE IMMEDIATE l_stmt;
12000
12001 EXCEPTION
12002 WHEN OTHERS THEN
12003 IF G_Debug THEN
12004 Write_Log(2, 'Error in procedure terr_initial_load');
12005 END IF;
12006 IF (na_terr_grp%ISOPEN) THEN
12007 CLOSE na_terr_grp;
12008 END IF;
12009 IF (geo_terr_grp%ISOPEN) THEN
12010 CLOSE geo_terr_grp;
12011 END IF;
12012 RAISE;
12013 END terr_initial_load;
12014
12015 PROCEDURE generate_terr (
12016 errbuf OUT NOCOPY VARCHAR2,
12017 retcode OUT NOCOPY VARCHAR2,
12018 p_mode IN VARCHAR2,
12019 p_number_of_workers IN NUMBER,
12020 p_debug_flag IN VARCHAR2,
12021 p_sql_trace IN VARCHAR2
12022 )
12023 AS
12024
12025 l_status VARCHAR2(30);
12026 l_industry VARCHAR2(30);
12027 l_flag VARCHAR2(1);
12028
12029 BEGIN
12030 -- Initialize Global variables
12031 G_Debug := FALSE;
12032
12033 /* Set Global Application Short Name */
12034 IF G_APP_SHORT_NAME IS NULL THEN
12035 G_APP_SHORT_NAME := 'JTF';
12036 END IF;
12037
12038 -- Get the schema name for JTF
12039 IF(Fnd_Installation.GET_APP_INFO('JTF', l_status, l_industry, g_jtf_schema)) THEN
12040 NULL;
12041 END IF;
12042
12043 -- If the SQL trace flag is turned on, then turn on the trace
12044 IF UPPER(p_sql_trace) = 'Y' THEN
12045 dbms_session.set_sql_trace(TRUE);
12046 END IF;
12047
12048 -- If the debug flag is set, Then turn on the debug message logging
12049 IF UPPER( RTRIM(p_debug_flag) ) = 'Y' THEN
12050 G_Debug := TRUE;
12051 END IF;
12052
12053 /* Depending on uptake of product category set the opportunity/lead qualifier usage */
12054 IF (Fnd_Profile.DEFINED('JTF_TTY_PROD_CAT_ENABLED')) THEN
12055 l_flag := NVL(Fnd_Profile.VALUE('JTF_TTY_PROD_CAT_ENABLED'), 'N');
12056 IF (l_flag = 'N') THEN
12057 g_prod_cat_enabled := FALSE;
12058 ELSE
12059 g_prod_cat_enabled := TRUE;
12060 END IF;
12061 ELSE
12062 g_prod_cat_enabled := FALSE;
12063 END IF;
12064 IF (g_prod_cat_enabled) THEN
12065 g_opp_qual_usg_id := -1142;
12066 g_lead_qual_usg_id := -1131;
12067 ELSE
12068 g_opp_qual_usg_id := -1023;
12069 g_lead_qual_usg_id := -1018;
12070 END IF;
12071
12072 IF G_Debug THEN
12073 Write_Log(2, 'Inside generate_terr');
12074 END IF;
12075
12076 IF p_mode = 'TOTAL' THEN
12077
12078 IF G_Debug THEN
12079 Write_Log(2, 'START: terr_initial_load');
12080 END IF;
12081
12082 -- call the procedure terr_initial_load for total refresh of territories
12083 terr_initial_load;
12084
12085 IF G_Debug THEN
12086 Write_Log(2, 'END: terr_initial_load');
12087 END IF;
12088
12089 ELSIF p_mode = 'INCR' THEN
12090
12091 IF G_Debug THEN
12092 Write_Log(2, 'START: terr_incr_refresh');
12093 END IF;
12094
12095 -- call the procedure terr_incr_refresh for incremental refresh of territories
12096 terr_incr_refresh;
12097
12098 IF G_Debug THEN
12099 Write_Log(2, 'END: terr_incr_refresh');
12100 END IF;
12101
12102 ELSE
12103 IF G_Debug THEN
12104 write_log(2, 'Invalid run mode : valid values are total and incremental refresh');
12105 END IF;
12106 ERRBUF := 'Program terminated with invalid run mode';
12107 RETCODE := 2;
12108 END IF;
12109
12110 EXCEPTION
12111 WHEN utl_file.invalid_path OR utl_file.invalid_mode OR
12112 utl_file.invalid_filehandle OR utl_file.invalid_operation OR
12113 utl_file.write_error THEN
12114 ERRBUF := 'Program terminated with exception. Error writing to output file.';
12115 RETCODE := 2;
12116
12117 WHEN OTHERS THEN
12118 ROLLBACK;
12119 IF G_Debug THEN
12120 Write_Log(1,'Program terminated with OTHERS exception.');
12121 Write_Log(1,'SQLCODE : ' || SQLCODE);
12122 Write_Log(1,'SQLERRM : ' || SQLERRM);
12123 END IF;
12124 ERRBUF := 'Program terminated with OTHERS exception. ' || SQLERRM;
12125 RETCODE := 2;
12126 END generate_terr;
12127
12128
12129 /*----------------------------------------------------------
12130 This procedure will create territory when a named account
12131 is changes e.g. from Map Named Account page
12132 ----------------------------------------------------------*/
12133
12134 PROCEDURE create_terr_for_na(p_terr_grp_acct_id IN NUMBER,
12135 p_terr_grp_id IN NUMBER)
12136 IS
12137 /* Territory groups that are created/updated */
12138 CURSOR terr_grp_acct(l_terr_grp_acct_id NUMBER)
12139 IS
12140 SELECT B.terr_group_account_id
12141 ,C.terr_group_id
12142 ,C.rank
12143 ,C.active_from_date
12144 ,C.active_to_date
12145 ,C.matching_rule_code
12146 ,C.generate_catchall_flag
12147 ,C.created_by
12148 ,C.creation_date
12149 ,C.last_updated_by
12150 ,C.last_update_date
12151 ,C.last_update_login
12152 ,D.ORG_ID
12153 ,F.terr_id -- placeholder territory for non-overlay branch
12154 ,E.terr_id -- placeholder territory for overlay branch
12155 ,C.terr_group_id * -1 -- catch-all territory id
12156 ,'MAPPING_UPDATE' change_type
12157 ,to_char(null) -- attribute_category
12158 ,B.attribute1
12159 ,B.attribute2
12160 ,B.attribute3
12161 ,B.attribute4
12162 ,B.attribute5
12163 ,B.attribute6
12164 ,B.attribute7
12165 ,B.attribute8
12166 ,B.attribute9
12167 ,B.attribute10
12168 ,B.attribute11
12169 ,B.attribute12
12170 ,B.attribute13
12171 ,B.attribute14
12172 ,B.attribute15
12173 FROM
12174 jtf_tty_terr_grp_accts B
12175 ,jtf_tty_terr_groups C
12176 ,jtf_terr_all D -- to get the org_id of the parent territory
12177 ,jtf_terr_all E -- to get the terr_id of the top level territory of overlay branch
12178 ,jtf_terr_all F -- to get the terr_id for the placeholder territory of non-overlay branch
12179 WHERE B.terr_group_account_id = l_terr_grp_acct_id
12180 AND B.terr_group_id = C.terr_group_id
12181 AND C.terr_group_id = D.terr_group_id
12182 AND D.terr_group_flag = 'Y'
12183 AND D.catch_all_flag = 'N'
12184 AND nvl(D.named_account_flag,'N') = 'N'
12185 AND E.terr_group_id(+) = C.terr_group_id -- outer-join is necessary as overlay branch may not exist
12186 AND E.name(+) = C.terr_group_name || ' (OVERLAY)'
12187 AND E.terr_group_flag(+) = 'Y'
12188 AND F.terr_group_id = C.terr_group_id -- outer-join is necessary as overlay branch may not exist
12189 AND F.name = C.terr_group_name
12190 AND F.terr_group_flag = 'Y'
12191 AND NVL(F.named_account_flag ,'N') <> 'Y';
12192
12193 l_terr_group_account_id g_terr_group_account_id_tab;
12194 l_terr_group_id g_terr_group_id_tab;
12195 l_rank g_rank_tab;
12196 l_active_from_date g_active_from_date_tab;
12197 l_active_to_date g_active_to_date_tab;
12198 l_matching_rule_code g_matching_rule_code_tab;
12199 l_generate_catchall_flag g_generate_catchall_flag_tab;
12200 l_created_by g_created_by_tab;
12201 l_creation_date g_creation_date_tab;
12202 l_last_updated_by g_last_updated_by_tab;
12203 l_last_update_date g_last_update_date_tab;
12204 l_last_update_login g_last_update_login_tab;
12205 l_org_id g_ORG_ID_tab;
12206 l_terr_id g_terr_id_tab;
12207 l_overlay_top g_terr_id_tab;
12208 l_catchall_terr_id g_terr_id_tab;
12209 l_change_type g_change_type_tab;
12210 l_terr_attr_cat g_terr_attr_cat_tab;
12211 l_terr_attribute1 g_terr_attribute_tab;
12212 l_terr_attribute2 g_terr_attribute_tab;
12213 l_terr_attribute3 g_terr_attribute_tab;
12214 l_terr_attribute4 g_terr_attribute_tab;
12215 l_terr_attribute5 g_terr_attribute_tab;
12216 l_terr_attribute6 g_terr_attribute_tab;
12217 l_terr_attribute7 g_terr_attribute_tab;
12218 l_terr_attribute8 g_terr_attribute_tab;
12219 l_terr_attribute9 g_terr_attribute_tab;
12220 l_terr_attribute10 g_terr_attribute_tab;
12221 l_terr_attribute11 g_terr_attribute_tab;
12222 l_terr_attribute12 g_terr_attribute_tab;
12223 l_terr_attribute13 g_terr_attribute_tab;
12224 l_terr_attribute14 g_terr_attribute_tab;
12225 l_terr_attribute15 g_terr_attribute_tab;
12226
12227 l_no_of_records NUMBER;
12228 BEGIN
12229 Initialize;
12230 -- open the cursor
12231 OPEN terr_grp_acct(p_terr_grp_acct_id);
12232
12233 -- loop till all the TGAs that have been created/updated are processed
12234 LOOP
12235
12236 /* Bulk collect TGA information and process them row by row */
12237 FETCH terr_grp_acct BULK COLLECT INTO
12238 l_terr_group_account_id
12239 ,l_terr_group_id
12240 ,l_rank
12241 ,l_active_from_date
12242 ,l_active_to_date
12243 ,l_matching_rule_code
12244 ,l_generate_catchall_flag
12245 ,l_created_by
12246 ,l_creation_date
12247 ,l_last_updated_by
12248 ,l_last_update_date
12249 ,l_last_update_login
12250 ,l_ORG_ID
12251 ,l_terr_id
12252 ,l_overlay_top
12253 ,l_catchall_terr_id
12254 ,l_change_type
12255 ,l_terr_attr_cat
12256 ,l_terr_attribute1
12257 ,l_terr_attribute2
12258 ,l_terr_attribute3
12259 ,l_terr_attribute4
12260 ,l_terr_attribute5
12261 ,l_terr_attribute6
12262 ,l_terr_attribute7
12263 ,l_terr_attribute8
12264 ,l_terr_attribute9
12265 ,l_terr_attribute10
12266 ,l_terr_attribute11
12267 ,l_terr_attribute12
12268 ,l_terr_attribute13
12269 ,l_terr_attribute14
12270 ,l_terr_attribute15
12271 LIMIT g_commit_chunk_size;
12272
12273 /* Get the number of rows returned by the fetch */
12274 l_no_of_records := l_terr_group_account_id.COUNT;
12275
12276 /* process the result set if the fetch has returned at least 1 row */
12277 IF (l_no_of_records > 0) THEN
12278
12279 IF G_Debug THEN
12280 Write_Log(2, 'Start : create_na_terr_for_TGA');
12281 END IF;
12282 -- create territories for the territory group account
12283 create_na_terr_for_TGA(
12284 l_terr_group_account_id
12285 ,l_terr_group_id
12286 ,l_rank
12287 ,l_active_from_date
12288 ,l_active_to_date
12289 ,l_matching_rule_code
12290 ,l_generate_catchall_flag
12291 ,l_created_by
12292 ,l_creation_date
12293 ,l_last_updated_by
12294 ,l_last_update_date
12295 ,l_last_update_login
12296 ,l_ORG_ID
12297 ,l_terr_id
12298 ,l_overlay_top
12299 ,l_catchall_terr_id
12300 ,l_change_type
12301 ,l_terr_attr_cat
12302 ,l_terr_attribute1
12303 ,l_terr_attribute2
12304 ,l_terr_attribute3
12305 ,l_terr_attribute4
12306 ,l_terr_attribute5
12307 ,l_terr_attribute6
12308 ,l_terr_attribute7
12309 ,l_terr_attribute8
12310 ,l_terr_attribute9
12311 ,l_terr_attribute10
12312 ,l_terr_attribute11
12313 ,l_terr_attribute12
12314 ,l_terr_attribute13
12315 ,l_terr_attribute14
12316 ,l_terr_attribute15);
12317 IF G_Debug THEN
12318 Write_Log(2, 'End : create_na_terr_for_TGA');
12319 END IF;
12320
12321 /* trim the pl/sql tables to free up memory */
12322 l_terr_group_account_id.TRIM(l_no_of_records);
12323 l_terr_group_id.TRIM(l_no_of_records);
12324 l_rank.TRIM(l_no_of_records);
12325 l_active_from_date.TRIM(l_no_of_records);
12326 l_active_to_date.TRIM(l_no_of_records);
12327 l_matching_rule_code.TRIM(l_no_of_records);
12328 l_generate_catchall_flag.TRIM(l_no_of_records);
12329 l_created_by.TRIM(l_no_of_records);
12330 l_creation_date.TRIM(l_no_of_records);
12331 l_last_updated_by.TRIM(l_no_of_records);
12332 l_last_update_date.TRIM(l_no_of_records);
12333 l_last_update_login.TRIM(l_no_of_records);
12334 l_ORG_ID.TRIM(l_no_of_records);
12335 l_terr_id.TRIM(l_no_of_records);
12336 l_overlay_top.TRIM(l_no_of_records);
12337 l_catchall_terr_id.TRIM(l_no_of_records);
12338 l_change_type.TRIM(l_no_of_records);
12339 l_terr_attr_cat.TRIM(l_no_of_records);
12340 l_terr_attribute1.TRIM(l_no_of_records);
12341 l_terr_attribute2.TRIM(l_no_of_records);
12342 l_terr_attribute3.TRIM(l_no_of_records);
12343 l_terr_attribute4.TRIM(l_no_of_records);
12344 l_terr_attribute5.TRIM(l_no_of_records);
12345 l_terr_attribute6.TRIM(l_no_of_records);
12346 l_terr_attribute7.TRIM(l_no_of_records);
12347 l_terr_attribute8.TRIM(l_no_of_records);
12348 l_terr_attribute9.TRIM(l_no_of_records);
12349 l_terr_attribute10.TRIM(l_no_of_records);
12350 l_terr_attribute11.TRIM(l_no_of_records);
12351 l_terr_attribute12.TRIM(l_no_of_records);
12352 l_terr_attribute13.TRIM(l_no_of_records);
12353 l_terr_attribute14.TRIM(l_no_of_records);
12354 l_terr_attribute15.TRIM(l_no_of_records);
12355
12356 END IF;
12357
12358 IF G_Debug THEN
12359 Write_Log(2, 'Finished process the current set of TGAs');
12360 END IF;
12361
12362 EXIT WHEN terr_grp_acct%NOTFOUND;
12363
12364 END LOOP;
12365
12366 CLOSE terr_grp_acct;
12367 -- COMMIT;
12368 END create_terr_for_na;
12369
12370 /*----------------------------------------------------------
12371 This procedure will create Named account and Overlay Territory
12372 and geography territory for update or created named account TG
12373 or geography territory group.
12374 ----------------------------------------------------------*/
12375 PROCEDURE create_terr_for_TG( p_terr_group_id IN NUMBER
12376 ,p_territory_type IN VARCHAR2
12377 ,p_change_type IN VARCHAR2
12378 ,p_terr_type_id IN VARCHAR2
12379 ,p_terr_id IN VARCHAR2
12380 ,p_terr_creation_flag IN VARCHAR2
12381 )
12382 IS
12383
12384 /* Named Account Territory groups that are created/updated */
12385 CURSOR na_terr_grp(l_terr_group_id NUMBER) IS
12386 SELECT A.TERR_GROUP_ID
12387 , A.TERR_GROUP_NAME
12388 , A.RANK
12389 , A.ACTIVE_FROM_DATE
12390 , A.ACTIVE_TO_DATE
12391 , A.PARENT_TERR_ID
12392 , A.MATCHING_RULE_CODE
12393 , A.CREATED_BY
12394 , A.CREATION_DATE
12395 , A.LAST_UPDATED_BY
12396 , A.LAST_UPDATE_DATE
12397 , A.LAST_UPDATE_LOGIN
12398 , A.Catch_all_resource_id
12399 , A.catch_all_resource_type
12400 , A.generate_catchall_flag
12401 , A.NUM_WINNERS
12402 , B.ORG_ID
12403 , p_change_type change_type
12404 FROM JTF_TTY_TERR_GROUPS A
12405 ,JTF_TERR_ALL B
12406 ,JTF_TERR_ALL C
12407 WHERE A.parent_terr_id = B.terr_id
12408 AND B.terr_id = C.parent_territory_id
12409 AND B.org_id = C.org_id
12410 AND C.terr_id = p_terr_id
12411 AND A.terr_group_id = l_terr_group_id
12412 AND A.self_service_type = 'NAMED_ACCOUNT';
12413
12414 /* Geography Territory groups that are created/updated */
12415 CURSOR geo_terr_grp(l_terr_group_id NUMBER) IS
12416 SELECT A.TERR_GROUP_ID
12417 , A.TERR_GROUP_NAME
12418 , A.RANK
12419 , A.ACTIVE_FROM_DATE
12420 , A.ACTIVE_TO_DATE
12421 , A.PARENT_TERR_ID
12422 , A.CREATED_BY
12423 , A.CREATION_DATE
12424 , A.LAST_UPDATED_BY
12425 , A.LAST_UPDATE_DATE
12426 , A.LAST_UPDATE_LOGIN
12427 , A.NUM_WINNERS
12428 , B.ORG_ID
12429 , p_change_type change_type
12430 FROM JTF_TTY_TERR_GROUPS A
12431 ,JTF_TERR_ALL B
12432 WHERE A.terr_group_id = l_terr_group_id
12433 AND A.parent_terr_id = B.terr_id
12434 AND A.self_service_type = 'GEOGRAPHY';
12435
12436
12437 l_terr_group_id g_terr_group_id_tab := g_terr_group_id_tab();
12438 l_terr_group_name g_terr_group_name_tab := g_terr_group_name_tab();
12439 l_rank g_rank_tab := g_rank_tab();
12440 l_active_from_date g_active_from_date_tab := g_active_from_date_tab();
12441 l_active_to_date g_active_to_date_tab := g_active_to_date_tab();
12442 l_parent_terr_id g_parent_terr_id_tab := g_parent_terr_id_tab();
12443 l_matching_rule_code g_matching_rule_code_tab := g_matching_rule_code_tab();
12444 l_created_by g_created_by_tab := g_created_by_tab();
12445 l_creation_date g_creation_date_tab := g_creation_date_tab();
12446 l_last_updated_by g_last_updated_by_tab := g_last_updated_by_tab();
12447 l_last_update_date g_last_update_date_tab := g_last_update_date_tab();
12448 l_last_update_login g_last_update_login_tab := g_last_update_login_tab();
12449 l_catch_all_resource_id g_catch_all_resource_id_tab := g_catch_all_resource_id_tab();
12450 l_catch_all_resource_type g_catch_all_resource_type_tab := g_catch_all_resource_type_tab();
12451 l_generate_catchall_flag g_generate_catchall_flag_tab := g_generate_catchall_flag_tab();
12452 l_num_winners g_num_winners_tab := g_num_winners_tab();
12453 l_org_id g_org_id_tab := g_org_id_tab();
12454 l_change_type g_change_type_tab := g_change_type_tab();
12455 -- l_terr_created_id g_terr_created_id_tab := g_terr_created_id_tab();
12456 -- l_terr_creation_flag g_terr_creation_flag_tab:=g__terr_creation_flag_tab();
12457
12458 l_no_of_records NUMBER;
12459 l_status VARCHAR2(30);
12460 l_industry VARCHAR2(30);
12461 l_flag VARCHAR2(1);
12462
12463 BEGIN
12464 -- Initialize
12465
12466 Initialize;
12467 l_terr_group_id.extend;
12468 l_terr_group_name.extend;
12469 l_rank.extend;
12470 l_active_from_date.extend ;
12471 l_active_to_date.extend ;
12472 l_parent_terr_id.extend ;
12473 l_matching_rule_code.extend ;
12474 l_created_by.extend ;
12475 l_creation_date.extend ;
12476 l_last_updated_by.extend ;
12477 l_last_update_date.extend ;
12478 l_last_update_login.extend ;
12479 l_catch_all_resource_id.extend;
12480 l_catch_all_resource_type.extend;
12481 l_generate_catchall_flag.extend;
12482 l_num_winners.extend;
12483 l_org_id.extend;
12484 l_change_type.extend;
12485
12486 -- l_terr_created_id.extend;
12487 -- l_terr_creation_flag.extend;
12488
12489
12490 IF (p_territory_type = 'NAMED_ACCOUNT') THEN
12491 OPEN na_terr_grp(p_terr_group_id);
12492 LOOP
12493 FETCH na_terr_grp INTO
12494 l_terr_group_id(1)
12495 ,l_terr_group_name(1)
12496 ,l_rank(1)
12497 ,l_active_from_date(1)
12498 ,l_active_to_date(1)
12499 ,l_parent_terr_id(1)
12500 ,l_matching_rule_code(1)
12501 ,l_created_by(1)
12502 ,l_creation_date(1)
12503 ,l_last_updated_by(1)
12504 ,l_last_update_date(1)
12505 ,l_last_update_login(1)
12506 ,l_catch_all_resource_id(1)
12507 ,l_catch_all_resource_type(1)
12508 ,l_generate_catchall_flag(1)
12509 ,l_num_winners(1)
12510 ,l_org_id(1)
12511 ,l_change_type(1);
12512 EXIT WHEN na_terr_grp%NOTFOUND;
12513 END LOOP;
12514 CLOSE na_terr_grp;
12515 create_na_terr_for_TG (
12516 l_terr_group_id
12517 ,l_terr_group_name
12518 ,l_rank
12519 ,l_active_from_date
12520 ,l_active_to_date
12521 ,l_parent_terr_id
12522 ,l_matching_rule_code
12523 ,l_created_by
12524 ,l_creation_date
12525 ,l_last_updated_by
12526 ,l_last_update_date
12527 ,l_last_update_login
12528 ,l_catch_all_resource_id
12529 ,l_catch_all_resource_type
12530 ,l_generate_catchall_flag
12531 ,l_num_winners
12532 ,l_org_id
12533 ,l_change_type
12534 ,p_terr_type_id
12535 ,p_terr_id
12536 ,p_terr_creation_flag);
12537 ELSIF (p_territory_type = 'GEOGRAPHY') THEN
12538 OPEN geo_terr_grp(p_terr_group_id);
12539 LOOP
12540 FETCH geo_terr_grp INTO
12541 l_terr_group_id(1)
12542 ,l_terr_group_name(1)
12543 ,l_rank(1)
12544 ,l_active_from_date(1)
12545 ,l_active_to_date(1)
12546 ,l_parent_terr_id(1)
12547 ,l_created_by(1)
12548 ,l_creation_date(1)
12549 ,l_last_updated_by(1)
12550 ,l_last_update_date(1)
12551 ,l_last_update_login(1)
12552 ,l_num_winners(1)
12553 ,l_org_id(1)
12554 ,l_change_type(1);
12555 EXIT WHEN geo_terr_grp%NOTFOUND;
12556 END LOOP;
12557 CLOSE geo_terr_grp;
12558 create_geo_terr_for_TG (
12559 l_terr_group_id
12560 ,l_terr_group_name
12561 ,l_rank
12562 ,l_active_from_date
12563 ,l_active_to_date
12564 ,l_parent_terr_id
12565 ,l_created_by
12566 ,l_creation_date
12567 ,l_last_updated_by
12568 ,l_last_update_date
12569 ,l_last_update_login
12570 ,l_num_winners
12571 ,l_org_id
12572 ,l_change_type);
12573 END IF;
12574 COMMIT;
12575 END create_terr_for_TG;
12576
12577 PROCEDURE delete_catch_all_terr_for_TG(p_terr_group_id IN NUMBER)
12578 IS
12579
12580 l_catchall_terr_id NUMBER;
12581
12582 CURSOR c_get_terr_id (l_terr_grp_id NUMBER)
12583 IS
12584 SELECT terr_id
12585 FROM JTF_TERR_ALL
12586 WHERE CATCH_ALL_FLAG='Y'
12587 AND TERR_GROUP_ID = l_terr_grp_id;
12588
12589 BEGIN
12590
12591 l_catchall_terr_id := -999;
12592
12593 OPEN c_get_terr_id ( p_terr_group_id);
12594 FETCH c_get_terr_id INTO l_catchall_terr_id;
12595 CLOSE c_get_terr_id;
12596
12597 IF ( l_catchall_terr_id <> -999 ) THEN
12598 BEGIN
12599 DELETE FROM JTF_TERR_RSC_ACCESS_ALL A
12600 WHERE A.TERR_RSC_ID IN ( SELECT B.TERR_RSC_ID
12601 FROM JTF_TERR_RSC_ALL B
12602 WHERE B.terr_id = l_catchall_terr_id );
12603
12604 DELETE FROM JTF_TERR_RSC_ALL
12605 WHERE TERR_ID = l_catchall_terr_id;
12606
12607 DELETE FROM JTF_TERR_ALL
12608 WHERE TERR_ID = l_catchall_terr_id;
12609
12610 COMMIT;
12611 EXCEPTION
12612 WHEN OTHERS THEN NULL;
12613 END;
12614 END IF;
12615 EXCEPTION
12616 WHEN OTHERS THEN
12617 RAISE;
12618 END delete_catch_all_terr_for_TG;
12619
12620 PROCEDURE delete_catchall_terrrsc_for_TG(p_terr_group_id IN NUMBER)
12621 IS
12622 l_catchall_terr_id NUMBER;
12623
12624 CURSOR c_get_terr_id (l_terr_grp_id NUMBER)
12625 IS
12626 SELECT terr_id
12627 FROM JTF_TERR_ALL
12628 WHERE CATCH_ALL_FLAG='Y'
12629 AND TERR_GROUP_ID = l_terr_grp_id;
12630
12631 BEGIN
12632
12633 l_catchall_terr_id := -999;
12634
12635 OPEN c_get_terr_id ( p_terr_group_id);
12636 FETCH c_get_terr_id INTO l_catchall_terr_id;
12637 CLOSE c_get_terr_id;
12638
12639 IF ( l_catchall_terr_id <> -999 ) THEN
12640 BEGIN
12641
12642 DELETE FROM JTF_TERR_RSC_ACCESS_ALL A
12643 WHERE A.TERR_RSC_ID IN ( SELECT B.TERR_RSC_ID
12644 FROM JTF_TERR_RSC_ALL B
12645 WHERE B.terr_id = l_catchall_terr_id );
12646
12647 DELETE FROM JTF_TERR_RSC_ALL
12648 WHERE TERR_ID IN
12649 ( SELECT terr_id
12650 FROM JTF_TERR_ALL
12651 WHERE CATCH_ALL_FLAG='Y'
12652 AND TERR_GROUP_ID = p_terr_group_id
12653 );
12654
12655 COMMIT;
12656
12657 EXCEPTION
12658 WHEN OTHERS THEN NULL;
12659 END;
12660 END IF;
12661 EXCEPTION
12662 WHEN OTHERS THEN
12663 RAISE;
12664 END delete_catchall_terrrsc_for_TG;
12665
12666
12667 PROCEDURE create_catchall_terr_rsc(p_terr_group_id IN NUMBER
12668 ,p_org_id IN VARCHAR2
12669 ,p_resource_id IN NUMBER
12670 ,p_role_code IN VARCHAR2
12671 ,p_group_id IN NUMBER
12672 ,p_user_id IN NUMBER)
12673 IS
12674 l_catchall_terr_id NUMBER;
12675 l_terr_rsc_id NUMBER;
12676 l_terr_rsc_access_id NUMBER;
12677 l_qual_type VARCHAR2(20);
12678 l_trans_access_code VARCHAR2(20);
12679
12680 /* Access Types for a particular Role within a Territory Group */
12681 CURSOR role_access(l_terr_group_id NUMBER,l_role VARCHAR2) IS
12682 SELECT DISTINCT a.access_type, a.trans_access_code
12683 FROM jtf_tty_role_access a
12684 , jtf_tty_terr_grp_roles b
12685 WHERE a.terr_group_role_id = b.terr_group_role_id
12686 AND b.terr_group_id = l_terr_group_id
12687 AND b.role_code = l_role
12688 ORDER BY a.access_type ;
12689
12690 BEGIN
12691
12692 l_terr_rsc_id := 0;
12693 l_terr_rsc_access_id := 0;
12694 SELECT jtf_terr_rsc_s.NEXTVAL
12695 INTO l_terr_rsc_id
12696 FROM DUAL;
12697
12698 SELECT terr_id INTO l_catchall_terr_id
12699 FROM JTF_TERR_ALL
12700 WHERE CATCH_ALL_FLAG='Y'
12701 AND TERR_GROUP_ID = p_terr_group_id;
12702
12703 INSERT INTO jtf_terr_rsc_all
12704 (
12705 TERR_RSC_ID,
12706 LAST_UPDATE_DATE,
12707 LAST_UPDATED_BY,
12708 CREATION_DATE,
12709 CREATED_BY,
12710 TERR_ID,
12711 RESOURCE_ID,
12712 RESOURCE_TYPE,
12713 ROLE,
12714 START_DATE_ACTIVE,
12715 ORG_ID,
12716 FULL_ACCESS_FLAG,
12717 GROUP_ID
12718 )
12719 VALUES
12720 (
12721 l_terr_rsc_id,
12722 SYSDATE,
12723 p_user_id,
12724 SYSDATE,
12725 p_user_id,
12726 l_catchall_terr_id,
12727 p_resource_id,
12728 'RS_EMPLOYEE',
12729 p_role_code,
12730 SYSDATE,
12731 p_org_id,
12732 'Y',
12733 p_group_id
12734 );
12735
12736 FOR rsc_acc IN role_access(p_terr_group_id, p_role_code)
12737 LOOP
12738 IF ( rsc_acc.access_type='OPPORTUNITY' ) THEN
12739 l_qual_type := 'OPPOR';
12740 ELSE
12741 l_qual_type := rsc_acc.access_type;
12742 END IF;
12743
12744 l_trans_access_code := rsc_acc.trans_access_code;
12745
12746 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
12747 INTO l_terr_rsc_access_id
12748 FROM DUAL;
12749
12750 INSERT INTO jtf_terr_rsc_access_all
12751 ( TERR_RSC_ACCESS_ID,
12752 LAST_UPDATE_DATE,
12753 LAST_UPDATED_BY,
12754 CREATION_DATE,
12755 CREATED_BY,
12756 TERR_RSC_ID,
12757 ACCESS_TYPE,
12758 ORG_ID,
12759 OBJECT_VERSION_NUMBER,
12760 TRANS_ACCESS_CODE
12761 )
12762 VALUES
12763 (
12764 l_terr_rsc_access_id,
12765 SYSDATE,
12766 p_user_id,
12767 SYSDATE,
12768 p_user_id,
12769 l_terr_rsc_id,
12770 l_qual_type,
12771 p_org_id,
12772 0,
12773 l_trans_access_code
12774 );
12775
12776 END LOOP; /* FOR rsc_acc in role_access */
12777
12778 COMMIT;
12779
12780 EXCEPTION
12781 WHEN OTHERS THEN NULL;
12782 END;
12783
12784
12785 PROCEDURE Delete_Territory_or_tg(p_terr_Id IN VARCHAR2) IS
12786
12787 l_tg_id NUMBER;
12788 l_s VARCHAR2(30);
12789 l_ss VARCHAR2(300);
12790 l_n NUMBER;
12791
12792 Cursor NATG_TERR IS
12793 SELECT terr_id,
12794 TERR_GROUP_ID
12795 FROM jtf_terr_all
12796 CONNECT BY parent_territory_id = PRIOR terr_id
12797 AND TERR_ID <> 1
12798 AND CATCH_ALL_FLAG <> 'Y'
12799 AND NAMED_ACCOUNT_FLAG <> 'Y'
12800 AND TERR_GROUP_FLAG = 'Y'
12801 START WITH terr_id = to_number(p_terr_Id);
12802
12803 BEGIN
12804 FOR c in NATG_TERR LOOP
12805 JTF_TTY_NA_TERRGP.delete_terrgp(c.TERR_GROUP_ID);
12806 END LOOP;
12807
12808
12809 JTF_TERRITORY_PVT.Delete_Territory
12810 ( 1.0,
12811 NULL,
12812 'T',
12813 0,
12814 l_s,
12815 l_n,
12816 l_s,
12817 p_terr_id
12818 );
12819
12820
12821 COMMIT;
12822
12823 EXCEPTION
12824 WHEN OTHERS THEN NULL;
12825
12826 END;
12827
12828
12829
12830 /*----------------------------------------------------------
12831 This procedure will update the sales team for a named account in
12832 a territory group
12833 ----------------------------------------------------------*/
12834 PROCEDURE update_terr_rscs_for_na(p_terr_grp_acct_id IN NUMBER,
12835 p_terr_group_id IN NUMBER)
12836 IS
12837
12838 TYPE role_typ IS RECORD(
12839 grp_role_id NUMBER:=FND_API.G_MISS_NUM
12840 );
12841
12842 TYPE grp_role_tbl_type IS TABLE OF role_typ
12843 INDEX BY BINARY_INTEGER;
12844
12845 l_qual_type VARCHAR2(20);
12846 l_terr_rsc_id NUMBER;
12847 l_terr_rsc_access_id NUMBER;
12848 l_api_version_number CONSTANT NUMBER := 1.0;
12849 l_init_msg_list VARCHAR2(1);
12850 l_commit VARCHAR2(1);
12851
12852 x_return_status VARCHAR2(1);
12853 x_msg_count NUMBER;
12854 x_msg_data VARCHAR2(2000);
12855 x_terr_id NUMBER;
12856 l_user_id NUMBER;
12857 l_login_id NUMBER;
12858 l_terr_id NUMBER;
12859 l_org_id NUMBER;
12860 l_start_date DATE;
12861 l_end_date DATE;
12862
12863 i NUMBER;
12864 a NUMBER;
12865
12866 --l_TerrRsc_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type;
12867 l_TerrRsc_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type_wflex;
12868 l_TerrRsc_Access_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
12869
12870 x_TerrRsc_Out_Tbl Jtf_Territory_Resource_Pvt.TerrResource_out_tbl_type;
12871 x_TerrRsc_Access_Out_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_out_tbl_type;
12872
12873 --l_TerrRsc_empty_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type;
12874 l_TerrRsc_empty_Tbl Jtf_Territory_Resource_Pvt.TerrResource_tbl_type_wflex;
12875 l_TerrRsc_Access_empty_Tbl Jtf_Territory_Resource_Pvt.TerrRsc_Access_tbl_type ;
12876
12877 /* Roles defined for the TG */
12878 CURSOR roles_for_TG(l_terr_group_id NUMBER) IS
12879 SELECT b.role_code role_code
12880 ,b.terr_group_id
12881 FROM jtf_tty_terr_grp_roles b
12882 WHERE b.terr_group_id = l_terr_group_id
12883 ORDER BY b.role_code;
12884
12885 CURSOR resource_grp(l_terr_group_acct_id NUMBER, l_role VARCHAR2) IS
12886 SELECT DISTINCT b.resource_id
12887 , b.rsc_group_id
12888 , b.rsc_resource_type
12889 , b.start_date
12890 , b.end_date
12891 , to_char(null) attribute_category
12892 , b.attribute1 attribute1
12893 , b.attribute2 attribute2
12894 , b.attribute3 attribute3
12895 , b.attribute4 attribute4
12896 , b.attribute5 attribute5
12897 , to_char(null) attribute6
12898 , to_char(null) attribute7
12899 , to_char(null) attribute8
12900 , to_char(null) attribute9
12901 , to_char(null) attribute10
12902 , to_char(null) attribute11
12903 , to_char(null) attribute12
12904 , to_char(null) attribute13
12905 , to_char(null) attribute14
12906 , to_char(null) attribute15
12907 FROM jtf_tty_terr_grp_accts a
12908 , jtf_tty_named_acct_rsc b
12909 WHERE a.terr_group_account_id = l_terr_group_acct_id
12910 AND a.terr_group_account_id = b.terr_group_account_id
12911 AND b.rsc_role_code = l_role;
12912
12913 CURSOR c_get_terr_dtls ( l_terr_grp_acct_id NUMBER)
12914 IS
12915 SELECT terr_id, org_id, trunc(start_date_active), trunc(end_date_active)
12916 FROM jtf_terr_all
12917 WHERE terr_group_account_id = l_terr_grp_acct_id;
12918
12919 /* Access Types for a particular Role within a Territory Group */
12920 CURSOR role_access(l_terr_group_id NUMBER,l_role VARCHAR2) IS
12921 SELECT DISTINCT a.access_type, a.trans_access_code
12922 FROM jtf_tty_role_access a
12923 , jtf_tty_terr_grp_roles b
12924 WHERE a.terr_group_role_id = b.terr_group_role_id
12925 AND b.terr_group_id = l_terr_group_id
12926 AND b.role_code = l_role
12927 ORDER BY a.access_type ;
12928
12929 BEGIN
12930
12931 --Delete Territory Resource Access
12932 DELETE FROM JTF_TERR_RSC_ACCESS_ALL WHERE TERR_RSC_ID IN
12933 ( SELECT TERR_RSC_ID
12934 FROM JTF_TERR_RSC_ALL A
12935 ,JTF_TERR_ALL B
12936 WHERE B.TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id
12937 AND B.TERR_ID = A.TERR_ID );
12938
12939 -- Delete the Territory Resource records
12940 DELETE FROM JTF_TERR_RSC_ALL WHERE TERR_ID IN
12941 ( SELECT TERR_ID FROM JTF_TERR_ALL WHERE TERR_GROUP_ACCOUNT_ID = p_terr_grp_acct_id );
12942
12943 l_init_msg_list :=FND_API.G_TRUE;
12944 i := 0;
12945 a := 0;
12946 l_user_id := fnd_global.user_id;
12947 l_login_id := fnd_global.login_id;
12948
12949 OPEN c_get_terr_dtls (p_terr_grp_acct_id);
12950 FETCH c_get_terr_dtls INTO l_terr_id, l_org_id, l_start_date, l_end_date;
12951 CLOSE c_get_terr_dtls;
12952
12953 IF ( l_terr_id <> 0 ) THEN
12954
12955 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
12956 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
12957 FOR role_type IN roles_for_TG(p_terr_group_id)
12958 LOOP
12959
12960 FOR rsc IN resource_grp(p_terr_grp_acct_id, role_type.role_code)
12961 LOOP
12962 i:=i+1;
12963
12964 SELECT JTF_TERR_RSC_S.NEXTVAL
12965 INTO l_terr_rsc_id
12966 FROM DUAL;
12967
12968 l_TerrRsc_Tbl(i).terr_id := l_terr_id;
12969 l_TerrRsc_Tbl(i).TERR_RSC_ID := l_terr_rsc_id;
12970 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE := sysdate;
12971 l_TerrRsc_Tbl(i).LAST_UPDATED_BY := l_user_id;
12972 l_TerrRsc_Tbl(i).CREATION_DATE := sysdate;
12973 l_TerrRsc_Tbl(i).CREATED_BY := l_user_id;
12974 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN := l_login_id;
12975 l_TerrRsc_Tbl(i).RESOURCE_ID := rsc.resource_id;
12976 l_TerrRsc_Tbl(i).RESOURCE_TYPE := rsc.rsc_resource_type;
12977 l_TerrRsc_Tbl(i).ROLE := role_type.role_code;
12978 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG := 'N';
12979 /*
12980 commented out 07/11/2006, bug 5375964, replaced with below
12981 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := l_start_date;
12982 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := l_end_date;
12983 l_TerrRsc_Tbl(i).ORG_ID := l_org_id;
12984 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
12985 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
12986 */
12987 IF rsc.start_date IS NULL THEN
12988 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := l_start_date;
12989 ELSE
12990 l_TerrRsc_Tbl(i).START_DATE_ACTIVE := rsc.start_date;
12991 END IF;
12992
12993 IF rsc.end_date IS NULL THEN
12994 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := l_end_date;
12995 ELSE
12996 l_TerrRsc_Tbl(i).END_DATE_ACTIVE := rsc.end_date;
12997 END IF;
12998
12999 l_TerrRsc_Tbl(i).ORG_ID := l_org_id;
13000 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG := 'Y';
13001 l_TerrRsc_Tbl(i).GROUP_ID := rsc.rsc_group_id;
13002 l_TerrRsc_Tbl(i).ATTRIBUTE_CATEGORY := rsc.attribute_category;
13003 l_TerrRsc_Tbl(i).ATTRIBUTE1 := rsc.attribute1;
13004 l_TerrRsc_Tbl(i).ATTRIBUTE2 := rsc.attribute2;
13005 l_TerrRsc_Tbl(i).ATTRIBUTE3 := rsc.attribute3;
13006 l_TerrRsc_Tbl(i).ATTRIBUTE4 := rsc.attribute4;
13007 l_TerrRsc_Tbl(i).ATTRIBUTE5 := rsc.attribute5;
13008 l_TerrRsc_Tbl(i).ATTRIBUTE6 := rsc.attribute6;
13009 l_TerrRsc_Tbl(i).ATTRIBUTE7 := rsc.attribute7;
13010 l_TerrRsc_Tbl(i).ATTRIBUTE8 := rsc.attribute8;
13011 l_TerrRsc_Tbl(i).ATTRIBUTE9 := rsc.attribute9;
13012 l_TerrRsc_Tbl(i).ATTRIBUTE10 := rsc.attribute10;
13013 l_TerrRsc_Tbl(i).ATTRIBUTE11 := rsc.attribute11;
13014 l_TerrRsc_Tbl(i).ATTRIBUTE12 := rsc.attribute12;
13015 l_TerrRsc_Tbl(i).ATTRIBUTE13 := rsc.attribute13;
13016 l_TerrRsc_Tbl(i).ATTRIBUTE14 := rsc.attribute14;
13017 l_TerrRsc_Tbl(i).ATTRIBUTE15 := rsc.attribute15;
13018
13019
13020 FOR rsc_acc IN role_access(p_terr_group_id, role_type.role_code)
13021 LOOP
13022 --dbms_output.put_line('rsc_acc.access_type '||rsc_acc.access_type);
13023 a := a+1;
13024
13025 IF ( rsc_acc.access_type='OPPORTUNITY' ) THEN
13026 l_qual_type := 'OPPOR';
13027 ELSE
13028 l_qual_type := rsc_acc.access_type;
13029 END IF;
13030
13031 SELECT JTF_TERR_RSC_ACCESS_S.NEXTVAL
13032 INTO l_terr_rsc_access_id
13033 FROM DUAL;
13034
13035 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID := l_terr_rsc_access_id;
13036 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE := sysdate;
13037 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY := l_user_id;
13038 l_TerrRsc_Access_Tbl(a).CREATION_DATE := sysdate;
13039 l_TerrRsc_Access_Tbl(a).CREATED_BY := l_user_id;
13040 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN := l_login_id;
13041 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID := l_terr_rsc_id ;
13042 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE := l_qual_type;
13043 l_TerrRsc_Access_Tbl(a).ORG_ID := l_org_id;
13044 l_TerrRsc_Access_Tbl(a).TRANS_ACCESS_CODE := rsc_acc.trans_access_code;
13045 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index := i;
13046
13047 END LOOP; /* FOR rsc_acc in NON_OVLY_role_access */
13048
13049 END LOOP; /* FOR rsc in resource_grp */
13050
13051 END LOOP;/* FOR role_type in role_interest_nonpi */
13052
13053 l_init_msg_list :=FND_API.G_TRUE;
13054
13055 Jtf_Territory_Resource_Pvt.create_terrresource (
13056 p_api_version_number => l_Api_Version_Number,
13057 p_init_msg_list => l_Init_Msg_List,
13058 p_commit => l_Commit,
13059 p_validation_level => FND_API.g_valid_level_NONE,
13060 x_return_status => x_Return_Status,
13061 x_msg_count => x_Msg_Count,
13062 x_msg_data => x_msg_data,
13063 p_terrrsc_tbl => l_TerrRsc_tbl,
13064 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
13065 x_terrrsc_out_tbl => x_TerrRsc_out_Tbl,
13066 x_terrrsc_access_out_tbl => x_TerrRsc_Access_out_Tbl
13067 );
13068 END IF;
13069
13070 EXCEPTION
13071 WHEN OTHERS THEN
13072
13073 IF G_Debug THEN
13074 Write_Log(2, 'Error in procedure update_terr_rscs_for_na');
13075 END IF;
13076
13077 IF (role_access%ISOPEN) THEN
13078 CLOSE role_access;
13079 END IF;
13080
13081 IF (resource_grp%ISOPEN) THEN
13082 CLOSE resource_grp;
13083 END IF;
13084
13085 IF (roles_for_TG%ISOPEN) THEN
13086 CLOSE roles_for_TG;
13087 END IF;
13088
13089 RAISE;
13090 END update_terr_rscs_for_na;
13091
13092 /*----------------------------------------------------------
13093 This procedure will update the attribute and date for a
13094 named account in a territory group
13095 ----------------------------------------------------------*/
13096 PROCEDURE update_terr_for_na( p_terr_grp_acct_id IN NUMBER,
13097 p_terr_group_id IN NUMBER)
13098 IS
13099
13100 BEGIN
13101
13102 UPDATE jtf_terr_all jta
13103 set (jta.ATTRIBUTE1, jta.ATTRIBUTE2, jta.ATTRIBUTE3,
13104 jta.ATTRIBUTE4, jta.ATTRIBUTE5, jta.ATTRIBUTE6,
13105 jta.ATTRIBUTE7, jta.ATTRIBUTE8, jta.ATTRIBUTE9,
13106 jta.ATTRIBUTE10, jta.ATTRIBUTE11, jta.ATTRIBUTE12,
13107 jta.ATTRIBUTE13, jta.ATTRIBUTE14, jta.ATTRIBUTE15,
13108 jta.START_DATE_ACTIVE, jta.END_DATE_ACTIVE ) = (SELECT tty.ATTRIBUTE1, tty.ATTRIBUTE2, tty.ATTRIBUTE3,
13109 tty.ATTRIBUTE4, tty.ATTRIBUTE5, tty.ATTRIBUTE6,
13110 tty.ATTRIBUTE7, tty.ATTRIBUTE8, tty.ATTRIBUTE9,
13111 tty.ATTRIBUTE10, tty.ATTRIBUTE11, tty.ATTRIBUTE12,
13112 tty.ATTRIBUTE13, tty.ATTRIBUTE14, tty.ATTRIBUTE15,
13113 NVL( tty.START_DATE, TRUNC(jta.start_date_active) ),
13114 NVL( tty.END_DATE, TRUNC(jta.end_date_active) )
13115 FROM jtf_tty_terr_grp_accts tty
13116 WHERE tty.terr_group_account_id = jta.terr_group_account_id
13117 AND tty.terr_group_id = jta.terr_group_id)
13118 WHERE jta.terr_group_account_id = p_terr_grp_acct_id
13119 AND jta.terr_group_id = p_terr_group_id;
13120
13121 END update_terr_for_na;
13122
13123 END JTF_TTY_GEN_TERR_PVT;