DBA Data[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;