[Home] [Help]
PACKAGE BODY: APPS.JTF_TTY_NA_GEO_TERR_PVT
Source
1 PACKAGE BODY JTF_TTY_NA_GEO_TERR_PVT AS
2 /* $Header: jtfvnatb.pls 120.0 2005/06/02 18:22:11 appldev ship $ */
3 -- Start of Comments
4 -- ---------------------------------------------------
5 -- OLD PACKAGE NAME: JTF_TERR_ENGINE_GEN_PVT
6 -- PACKAGE NAME: JTF_TTY_NA_GEO_TERR_PVT
7 -- ---------------------------------------------------
8 -- PURPOSE
9 -- This Package will create the physical territories for the
10 -- self-service named accounts and geography territories
11 --
12 -- Procedures:
13 -- (see below for specification)
14 --
15 -- NOTES
16 -- This package is not publicly available for use
17 --
18 -- HISTORY
19 -- 08/09/03 JRADHAKR Created by Moving the named account
20 -- procedure from JTF_TERR_ENGINE_GEN_PVT
21 --
22 -- End of Comments
23 --
24 --------------------------------------------------
25 --- GLOBAL Declarations Starts here -----
26 --------------------------------------------------
27
28 -- Stores the org_id for use in package Names
29 g_cached_org_append VARCHAR2(15);
30 --
31 -- Identifies the Package associated a
32 -- a territory with child nodes
33 g_terr_pkgspec terr_pkgspec_tbl_type;
34
35 -- Stores the position with the table spec
36 g_stack_pointer NUMBER := 0;
37
38 -- Store the information passed as
39 -- Concurrent program parameters
40 -- Module that uses Territories
41 g_source_id NUMBER := 0;
42
43 g_abs_source_id NUMBER := 0;
44
45 -- Type of transaction for which the
46 -- the package is being generated
47 g_qualifier_type VARCHAR2(60);
48
49 -- Id of the corresponding transaction type
50 g_qual_type_id NUMBER := 0;
51
52 TYPE t_pkgname IS TABLE OF VARCHAR2(256)
53 INDEX BY BINARY_INTEGER;
54
55 g_pkgname_tbl t_pkgname;
56 g_Pointer NUMBER := 0;
57 G_Debug BOOLEAN := FALSE;
58 g_ProgramStatus NUMBER := 0;
59
60 /* Global System Variables */
61 G_APPL_ID NUMBER := FND_GLOBAL.Prog_Appl_Id;
62 G_LOGIN_ID NUMBER := FND_GLOBAL.Conc_Login_Id;
63 G_PROGRAM_ID NUMBER := FND_GLOBAL.Conc_Program_Id;
64 G_USER_ID NUMBER := FND_GLOBAL.User_Id;
65 G_REQUEST_ID NUMBER := FND_GLOBAL.Conc_Request_Id;
66 G_APP_SHORT_NAME VARCHAR2(15) := FND_GLOBAL.Application_Short_Name;
67 G_SYSDATE DATE := SYSDATE;
68
69 PROCEDURE create_geography_territory
70 ( p_terr_group_rec IN TERR_GRP_REC_TYPE
71 , p_org_id IN NUMBER
72 , x_return_status OUT NOCOPY VARCHAR2
73 , x_error_message OUT NOCOPY VARCHAR2
74 );
75
76
77 --------------------------------------------------------------------
78 -- Logging PROCEDURE
79 --
80 -- which = 1. write to log
81 -- which = 2, write to output
82 --------------------------------------------------------------------
83 --
84 PROCEDURE Write_Log(which number, mssg varchar2 ) IS
85
86 l_mssg VARCHAR2(4000);
87 l_sub_mssg VARCHAR2(255);
88 l_begin NUMBER := 1;
89 l_mssg_length NUMBER := 0;
90 l_time VARCHAR2(60) := TO_CHAR(SYSDATE, 'mm/dd/yyyy hh24:mi:ss');
91
92 BEGIN
93 --
94 l_mssg := mssg;
95
96 /* If the output message and if debug flag is set then also write
97 ** to the log file
98 */
99 If Which = 2 Then
100 FND_FILE.PUT(1, mssg);
101 FND_FILE.NEW_LINE(1, 1);
102 End IF;
103
104 l_sub_mssg := 'Time = ' || l_time;
105 --FND_FILE.PUT_LINE(FND_FILE.LOG, l_sub_mssg);
106 -- dbms_output.put_line('LOG: ' || l_sub_mssg);
107
108 l_mssg := l_sub_mssg || ' => ' || l_mssg;
109
110 /* get total message length */
111 l_mssg_length := LENGTH(l_mssg);
112
113 /* Output message in 250 maximum character lines */
114 WHILE ( l_mssg_length > 250 ) LOOP
115
116 /* get message substring */
117 l_sub_mssg := SUBSTR(l_mssg, l_begin, 250);
118
119 /* write message to log file */
120 FND_FILE.PUT_LINE(FND_FILE.LOG, l_sub_mssg);
121 --dbms_output.put_line('LOG: ' || l_mssg );
122
123 /* Increment message start position to output from */
124 l_begin := l_begin + 250;
125
126 /* Decrement message length to be output */
127 l_mssg_length := l_mssg_length - 250;
128
129 END LOOP;
130
131 /* get last remaining part of message, i.e, when
132 ** there is less than 250 characters left to be output */
133 l_sub_mssg := SUBSTR(l_mssg, l_begin);
134 FND_FILE.PUT_LINE(FND_FILE.LOG, l_sub_mssg);
135 --dbms_output.put_line('LOG: ' || l_mssg );
136 --
137 END Write_Log;
138
139
140 /* (1) START: ENABLE/DISABLE TERRITORY TRIGGERS */
141 PROCEDURE alter_triggers(p_status VARCHAR2)
142 IS
143 BEGIN
144
145 IF (p_status = 'DISABLE') THEN
146
147 BEGIN
148 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORIES_BIUD DISABLE';
149 EXCEPTION
150 WHEN OTHERS THEN
151 NULL;
152 END;
153
154 BEGIN
155 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORY_RSC_BIUD DISABLE';
156 EXCEPTION
157 WHEN OTHERS THEN
158 NULL;
159 END;
160
161 BEGIN
162 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORY_VALUES_BIUD DISABLE';
163 EXCEPTION
164 WHEN OTHERS THEN
165 NULL;
166 END;
167
168 BEGIN
169 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_QTYPE_USGS_BIUD DISABLE';
170 EXCEPTION
171 WHEN OTHERS THEN
172 NULL;
173 END;
174
175 BEGIN
176 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERR_RSC_ACCESS_BIUD DISABLE';
177 EXCEPTION
178 WHEN OTHERS THEN
179 NULL;
180 END;
181
182 ELSIF (p_status = 'ENABLE') THEN
183
184 BEGIN
185 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORIES_BIUD ENABLE';
186 EXCEPTION
187 WHEN OTHERS THEN
188 NULL;
189 END;
190
191 BEGIN
192 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORY_RSC_BIUD ENABLE';
193 EXCEPTION
194 WHEN OTHERS THEN
195 NULL;
196 END;
197
198 BEGIN
199 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERRITORY_VALUES_BIUD ENABLE';
200 EXCEPTION
201 WHEN OTHERS THEN
202 NULL;
203 END;
204
205 BEGIN
206 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_QTYPE_USGS_BIUD ENABLE';
207 EXCEPTION
208 WHEN OTHERS THEN
209 NULL;
210 END;
211
212 BEGIN
213 EXECUTE IMMEDIATE 'ALTER TRIGGER JTF_TERR_RSC_ACCESS_BIUD ENABLE';
214 EXCEPTION
215 WHEN OTHERS THEN
216 NULL;
217 END;
218
219 END IF;
220
221 END alter_triggers;
222
223
224 /* (1) START: DELETE ALL EXISTING NAMED ACCOUNT TERRITORIES */
225 PROCEDURE cleanup_na_territories ( p_mode VARCHAR2 )
226 IS
227
228 /* get all the Territories to DELETE */
229 CURSOR delterr IS
230 SELECT terr_id
231 from jtf_terr_all
232 where terr_group_flag = 'Y';
233
234 BEGIN
235
236 /* TOTAL mode => re-generate all NA territories */
237 IF (p_mode = 'TOTAL') THEN
238
239 --DELETE territory value records
240 DELETE FROM jtf_terr_values_all jtv
241 WHERE jtv.terr_qual_id IN
242 ( SELECT jtq.terr_qual_id
243 FROM jtf_terr_qual_all jtq, jtf_terr_all jt
244 WHERE jtq.terr_id = jt.terr_id
245 AND jt.terr_group_flag = 'Y' );
246
247 COMMIT;
248
249 --Delete Territory Qualifer records
250 DELETE from JTF_TERR_QUAL_ALL jtq
251 WHERE jtq.terr_id IN
252 ( SELECT jt.terr_id
253 FROM jtf_terr_all jt
254 WHERE jt.terr_group_flag = 'Y' );
255
256 COMMIT;
257
258 --Delete Territory qual type usgs
259 DELETE from JTF_TERR_QTYPE_USGS_ALL jtqu
260 WHERE jtqu.terr_id IN
261 ( SELECT jt.terr_id
262 FROM jtf_terr_all jt
263 WHERE jt.terr_group_flag = 'Y' );
264
265 COMMIT;
266
267 --Delete Territory usgs
268 DELETE from JTF_TERR_USGS_ALL jtu
269 WHERE jtu.terr_id IN
270 ( SELECT jt.terr_id
271 FROM jtf_terr_all jt
272 WHERE jt.terr_group_flag = 'Y' );
273
274 COMMIT;
275
276 --Delete Territory Resource Access
277 DELETE from JTF_TERR_RSC_ACCESS_ALL jtra
278 WHERE jtra.terr_rsc_id IN
279 ( SELECT jtr.terr_rsc_id
280 FROM jtf_terr_rsc_all jtr, jtf_terr_all jt
281 WHERE jtr.terr_id = jt.terr_id
282 AND jt.terr_group_flag = 'Y' );
283
284 COMMIT;
285
286 -- Delete the Territory Resource records
287 DELETE from JTF_TERR_RSC_ALL jtr
288 WHERE jtr.terr_id IN
289 ( SELECT jt.terr_id
290 FROM jtf_terr_all jt
291 WHERE jt.terr_group_flag = 'Y' );
292
293 COMMIT;
294
295 --Delete Territory record
296 DELETE from JTF_TERR_ALL jt
297 WHERE jt.terr_id IN
298 ( SELECT jt.terr_id
299 FROM jtf_terr_all jt
300 WHERE jt.terr_group_flag = 'Y' );
301
302 COMMIT;
303
304 END IF;
305 /* (1) END: DELETE ALL EXISTING NAMED ACCOUNT TERRITORIES */
306
307 EXCEPTION
308 WHEN NO_DATA_FOUND THEN
309 NULL;
310
311 END cleanup_na_territories;
312
313
314 /*----------------------------------------------------------
315 This procedure will create Named account and Overlay Territory
316 from the Named accounts.
317 ----------------------------------------------------------*/
318
319 PROCEDURE generate_named_overlay_terr(p_mode VARCHAR2)
320 IS
321
322
323 TYPE terrqual_type IS RECORD(
324 terr_qual_id NUMBER:=FND_API.G_MISS_NUM
325 );
326
327 TYPE terrqual_tbl_type IS TABLE OF terrqual_type
328 INDEX BY BINARY_INTEGER;
329
330
331 TYPE seeded_qual_type IS RECORD(
332 seeded_qualifier_id NUMBER:=FND_API.G_MISS_NUM
333 );
334
335 TYPE seeded_qual_tbl_type IS TABLE OF seeded_qual_type
336 INDEX BY BINARY_INTEGER;
337
338 TYPE role_typ IS RECORD(
339 grp_role_id NUMBER:=FND_API.G_MISS_NUM
340 );
341
342 TYPE grp_role_tbl_type IS TABLE OF role_typ
343 INDEX BY BINARY_INTEGER;
344
345 l_terrqual_tbl terrqual_tbl_type;
346 l_terrqual_empty_tbl terrqual_tbl_type;
347
348 l_terr_group_rec JTF_TTY_NA_GEO_TERR_PVT.TERR_GRP_REC_TYPE;
349
350 l_overnon_role_tbl grp_role_tbl_type;
351 l_overnon_role_empty_tbl grp_role_tbl_type;
352
353 l_terr_qual_id NUMBER;
354 l_id_used_flag VARCHAR2(1);
355 l_low_value_char_id NUMBER;
356 l_qual_usgs_id NUMBER;
357 l_terr_usg_id NUMBER;
358 l_qual_type_usg_id NUMBER;
359 l_terr_qtype_usg_id NUMBER;
360 l_terr_type_usg_id NUMBER;
361 l_type_qtype_usg_id NUMBER;
362 l_terr_rsc_id NUMBER;
363 l_terr_rsc_access_id NUMBER;
364 l_access_type VARCHAR2(30);
365
366 l_api_version_number CONSTANT NUMBER := 1.0;
367 l_init_msg_list varchar2(1);
368 l_commit varchar2(1);
369 x_return_status varchar2(1);
370 x_msg_count number;
371 x_msg_data varchar2(2000);
372
373 l_return_status varchar2(30);
374 l_error_message varchar2(255);
375
376 i NUMBER;
377 j NUMBER;
378 k NUMBER;
379 l NUMBER;
380 a NUMBER;
381
382 l_prev_seedqual number;
383 l_prev_terr_id number;
384
385 l_qualifier NUMBER;
386
387 x_terr_id NUMBER;
388
389 l_terr_all_rec JTF_TERRITORY_PVT.terr_all_rec_type;
390 l_terr_usgs_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
391 l_terr_qualtypeusgs_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
392 l_terr_qual_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
393 l_terr_values_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
394
395 /* Customer Name Range + Postal Code Qualifier Support */
396 l_terr_qual_tbl_mc1 JTF_TERRITORY_PVT.terr_qual_tbl_type;
397 l_terr_values_tbl_mc1 JTF_TERRITORY_PVT.terr_values_tbl_type;
398 /* DUNS# Qualifier Support */
399 l_terr_qual_tbl_mc2 JTF_TERRITORY_PVT.terr_qual_tbl_type;
400 l_terr_values_tbl_mc2 JTF_TERRITORY_PVT.terr_values_tbl_type;
401
402 l_terr_usgs_empty_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
403 l_terr_qualtypeusgs_empty_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
404 l_terr_qual_empty_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
405 l_terr_values_empty_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
406
407 x_terr_usgs_out_tbl JTF_TERRITORY_PVT.terr_usgs_out_tbl_type;
408 x_terr_qualtypeusgs_out_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_out_tbl_type;
409 x_terr_qual_out_tbl JTF_TERRITORY_PVT.terr_qual_out_tbl_type;
410 x_terr_values_out_tbl JTF_TERRITORY_PVT.terr_values_out_tbl_type;
411
412 l_TerrRsc_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrResource_tbl_type;
413 l_TerrRsc_Access_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrRsc_Access_tbl_type ;
414 l_TerrRsc_empty_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrResource_tbl_type;
415 l_TerrRsc_Access_empty_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrRsc_Access_tbl_type ;
416 x_TerrRsc_Out_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrResource_out_tbl_type;
417 x_TerrRsc_Access_Out_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrRsc_Access_out_tbl_type;
418
419 l_commitcount NUMBER := 1000;
420 l_row_inserted NUMBER := 0;
421 l_pi_count NUMBER := 0;
422 l_prev_qual_usg_id NUMBER;
423 l_na_catchall_flag VARCHAR2(1);
424 l_overlap_catchall_flag VARCHAR2(1);
425
426 l_role_counter NUMBER := 0;
427
428
429 /* Active Territory Groups with
430 ** Active Top-Level Territories */
431 /* bug#2933116: JDOCHERT: 05/27/03: support for DUNS# Qualifier */
432
433 CURSOR grp IS
434 SELECT A.TERR_GROUP_ID
435 , A.TERR_GROUP_NAME
436 , A.RANK
437 , A.ACTIVE_FROM_DATE
438 , A.ACTIVE_TO_DATE
439 , A.PARENT_TERR_ID
440 , A.MATCHING_RULE_CODE
441 , A.CREATED_BY
442 , A.CREATION_DATE
443 , A.LAST_UPDATED_BY
444 , A.LAST_UPDATE_DATE
445 , A.LAST_UPDATE_LOGIN
446 , A.Catch_all_resource_id
447 , A.catch_all_resource_type
448 , A.generate_catchall_flag
449 , A.NUM_WINNERS /* JDOCHERT: 07/29/03: BUG#3072230 */
450 , A.SELF_SERVICE_TYPE
451 , B.ORG_ID
452 FROM JTF_TTY_TERR_GROUPS A
453 , JTF_TERR_ALL B
454 WHERE A.parent_terr_id = b.terr_id
455 AND ( a.active_to_date >= SYSDATE OR a.active_to_date IS NULL )
456 AND a.active_from_date <= SYSDATE;
457
458 /* JDOCHERT: /05/29/03:
459 ** Transaction Types for a NON-OVERLAY territory are
460 ** determined by all salesteam members on this Named Account
461 ** having Roles without Product Interests defined
462 ** so there is no Overlay Territories to assign
463 ** Leads and Opportunities. If all Roles have Product Interests
464 ** then only ACCOUNT transaction type should
465 ** be used in Non-Overlay Named Account definition
466 */
467 CURSOR get_NON_OVLY_na_trans(LP_terr_group_account_id NUMBER) IS
468 SELECT ra.access_type
469 FROM
470 jtf_tty_named_acct_rsc nar
471 , jtf_tty_terr_grp_accts tga
472 , jtf_tty_terr_grp_roles tgr
473 , jtf_tty_role_access ra
474 WHERE tga.terr_group_account_id = nar.terr_group_account_id
475 AND nar.terr_group_account_id = LP_terr_group_account_id
476 AND nar.rsc_role_code = tgr.role_code
477 AND ra.terr_group_role_id = tgr.terr_group_role_id
478 AND ra.access_type IN ('ACCOUNT')
479 UNION
480 SELECT ra.access_type
481 FROM
482 jtf_tty_named_acct_rsc nar
483 , jtf_tty_terr_grp_accts tga
484 , jtf_tty_terr_grp_roles tgr
485 , jtf_tty_role_access ra
486 WHERE tga.terr_group_account_id = nar.terr_group_account_id
487 AND nar.terr_group_account_id = LP_terr_group_account_id
488 AND nar.rsc_role_code = tgr.role_code
489 AND ra.terr_group_role_id = tgr.terr_group_role_id
490 AND NOT EXISTS (
491 SELECT NULL
492 FROM jtf_tty_role_prod_int rpi
493 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id );
494
495
496 /* Access Types for a Territory Group */
497 CURSOR na_access(l_terr_group_id number) IS
498 SELECT distinct a.access_type
499 from jtf_tty_role_access a
500 , jtf_tty_terr_grp_roles b
501 where a.terr_group_role_id = b.terr_group_role_id
502 and b.terr_group_id = l_terr_group_id;
503
504 /* Access Types for a particular Role within a Territory Group */
505 CURSOR NON_OVLY_role_access( lp_terr_group_id number
506 , lp_role varchar2) IS
507 SELECT distinct a.access_type
508 from jtf_tty_role_access a
509 , jtf_tty_terr_grp_roles b
510 where a.terr_group_role_id = b.terr_group_role_id
511 and b.terr_group_id = lp_terr_group_id
512 and b.role_code = lp_role
513 AND NOT EXISTS (
514 /* Product Interest does not exist for this role */
515 SELECT NULL
516 FROM jtf_tty_role_prod_int rpi
517 WHERE rpi.terr_group_role_id = B.TERR_GROUP_ROLE_ID )
518 order by a.access_type ;
519
520
521 /* Access Types for a particular Role within a Territory Group */
522 CURSOR role_access(l_terr_group_id number,l_role varchar2) IS
523 SELECT distinct a.access_type
524 from jtf_tty_role_access a
525 , jtf_tty_terr_grp_roles b
526 where a.terr_group_role_id = b.terr_group_role_id
527 and b.terr_group_id = l_terr_group_id
528 and b.role_code = l_role
529 order by a.access_type ;
530
531 /* Roles WITHOUT a Product Iterest defined */
532 CURSOR role_interest_nonpi(l_terr_group_id number) IS
533 SELECT b.role_code role_code
534 --,a.interest_type_id
535 ,b.terr_group_id
536 from jtf_tty_role_prod_int a
537 , jtf_tty_terr_grp_roles b
538 where a.terr_group_role_id(+) = b.terr_group_role_id
539 and b.terr_group_id = l_terr_group_id
540 and a.terr_group_role_id is null
541 order by b.role_code;
542
543 /* Roles WITH a Product Iterest defined */
544 CURSOR role_pi( lp_terr_group_id NUMBER
545 , lp_terr_group_account_id NUMBER) IS
546 SELECT distinct
547 b.role_code role_code
548 , r.role_name role_name
549 from jtf_rs_roles_vl r
550 , jtf_tty_role_prod_int a
551 , jtf_tty_terr_grp_roles b
552 where r.role_code = b.role_code
553 and a.terr_group_role_id = b.terr_group_role_id
554 and b.terr_group_id = lp_terr_group_id
555 AND EXISTS (
556 /* Named Account exists with Salesperson with this role */
557 SELECT NULL
558 FROM jtf_tty_named_acct_rsc nar, jtf_tty_terr_grp_accts tga
559 WHERE tga.terr_group_account_id = nar.terr_group_account_id
560 AND nar.terr_group_account_id = lp_terr_group_account_id
561 AND tga.terr_group_id = b.terr_group_id
562 AND nar.rsc_role_code = b.role_code );
563
564 /* Product Interest for a Role */
565 CURSOR role_pi_interest(l_terr_group_id number,l_role varchar2) IS
566 SELECT a.interest_type_id
567 from jtf_tty_role_prod_int a
568 , jtf_tty_terr_grp_roles b
569 where a.terr_group_role_id = b.terr_group_role_id
570 and b.terr_group_id = l_terr_group_id
571 and b.role_code = l_role;
572
573 /* Named Account Catch-All Customer Keyname values */
574 CURSOR catchall_cust(l_terr_group_id number) IS
575 SELECT distinct b.comparison_operator
576 ,b.value1_char
577 from jtf_tty_terr_grp_accts a
578 , jtf_tty_acct_qual_maps b
579 where a.named_account_id = b.named_account_id
580 and a.terr_group_id = l_terr_group_id
581 and b.qual_usg_id = -1012
582 order by b.comparison_operator,b.value1_char;
583
584 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id
585 since the resource is specific for a terr_group_account */
586 CURSOR resource_grp(l_terr_group_acct_id number,l_role varchar2) IS
587 SELECT distinct b.resource_id
588 , b.rsc_group_id
589 , b.rsc_resource_type
590 from jtf_tty_terr_grp_accts a
591 , jtf_tty_named_acct_rsc b
592 where a.terr_group_account_id = l_terr_group_acct_id
593 and a.terr_group_account_id = b.terr_group_account_id
594 and b.rsc_role_code = l_role;
595
596 /* Should Unassigned NAs go to Sales Manager or NA Catch-All? */
597 -- WHERE c.dn_jnr_assigned_flag = 'Y';
598
599
600 /* get the DUNS# for the Named Account:
601 ** used for NAMED ACCOUNT territory creation */
602 CURSOR get_party_duns(LP_terr_group_id number) IS
603 SELECT substr(a.party_name, 1, 45) || ': ' || a.postal_code name
604 , b.named_account_id
605 , c.terr_group_account_id
606 , a.duns_number_c
607 from hz_parties a
608 , jtf_tty_named_accts b
609 , jtf_tty_terr_grp_accts c
610 where c.terr_group_id = LP_terr_group_id
611 and b.named_account_id = c.named_account_id
612 and a.party_id = b.party_id
613 and a.status = 'A'
614 AND a.DUNS_NUMBER_C IS NOT NULL
615 AND EXISTS (
616 /* Salesperson exists for this Named Account */
617 SELECT NULL
618 FROM jtf_tty_named_acct_rsc nar
619 WHERE nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
620
621
622 /* get the PARTY_NAME + POSTAL_CODE for the Named Account:
623 ** used for NAMED ACCOUNT territory creation */
624 CURSOR get_party_name(LP_terr_group_id number) IS
625 SELECT substr(a.party_name, 1, 45) || ': ' || a.postal_code name
626 , b.named_account_id
627 , c.terr_group_account_id
628 , a.duns_number_c
629 from hz_parties a
630 , jtf_tty_named_accts b
631 , jtf_tty_terr_grp_accts c
632 where c.terr_group_id = LP_terr_group_id
633 and b.named_account_id = c.named_account_id
634 and a.party_id = b.party_id
635 and a.status = 'A'
636 and exists (
637 /* Named Account has at least 1 Mapping Rule */
638 SELECT 1
639 from jtf_tty_acct_qual_maps d
640 where d.named_account_id = c.named_account_id )
641 AND EXISTS (
642 /* Salesperson exists for this Named Account */
643 SELECT NULL
644 FROM jtf_tty_named_acct_rsc nar
645 WHERE nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
646
647
648 /* get the DUNS# for the Named Account:
649 ** used for OVERLAY territory creation */
650 CURSOR get_OVLY_party_duns(LP_terr_group_id number) IS
651 SELECT substr(a.party_name, 1, 45) || ': ' || a.postal_code name
652 , b.named_account_id
653 , c.terr_group_account_id
654 , a.duns_number_c
655 from hz_parties a
656 , jtf_tty_named_accts b
657 , jtf_tty_terr_grp_accts c
658 where c.terr_group_id = LP_terr_group_id
659 and b.named_account_id = c.named_account_id
660 and a.party_id = b.party_id
661 and a.status = 'A'
662 AND a.DUNS_NUMBER_C IS NOT NULL
663 AND EXISTS (
664 /* Salesperson, with Role that has a Product
665 ** Interest defined, exists for this Named Account */
666 SELECT NULL
667 FROM jtf_tty_named_acct_rsc nar
668 , jtf_tty_role_prod_int rpi
669 , jtf_tty_terr_grp_roles tgr
670 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
671 AND tgr.terr_group_id = C.TERR_GROUP_ID
672 AND tgr.role_code = nar.rsc_role_code
673 AND nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
674
675
676 /* get the PARTY_NAME + POSTAL_CODE for the Named Account
677 ** used for OVERLAY territory creation */
678 CURSOR get_OVLY_party_name(LP_terr_group_id number) IS
679 SELECT substr(a.party_name, 1, 45) || ': ' || a.postal_code name
680 , b.named_account_id
681 , c.terr_group_account_id
682 , a.duns_number_c
683 from hz_parties a
684 , jtf_tty_named_accts b
685 , jtf_tty_terr_grp_accts c
686 where c.terr_group_id = LP_terr_group_id
687 and b.named_account_id = c.named_account_id
688 and a.party_id = b.party_id
689 and a.status = 'A'
690 and exists (
691 /* Named Account has at least 1 Mapping Rule */
692 SELECT 1
693 from jtf_tty_acct_qual_maps d
694 where d.named_account_id = c.named_account_id )
695 AND EXISTS (
696 /* Salesperson, with Role that has a Product
697 ** Interest defined, exists for this Named Account */
698 SELECT NULL
699 FROM jtf_tty_named_acct_rsc nar
700 , jtf_tty_role_prod_int rpi
701 , jtf_tty_terr_grp_roles tgr
702 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
703 AND tgr.terr_group_id = C.TERR_GROUP_ID
704 AND tgr.role_code = nar.rsc_role_code
705 AND nar.terr_group_account_id = C.TERR_GROUP_ACCOUNT_ID );
706
707
708 /* Should Unassigned NAs go to Sales Manager or NA Catch-All? */
709 -- WHERE c.dn_jnr_assigned_flag = 'Y';
710
711 /* get Customer Keynames and Postal Code mappings
712 ** for the Named Account */
713 /* bug#2925153: JRADHAKR: Added value2_char */
714 CURSOR match_rule1( l_na_id number) IS
715 SELECT b.qual_usg_id
716 , b.comparison_operator
717 , b.value1_char
718 , b.value2_char
719 FROM jtf_tty_acct_qual_maps b
720 WHERE b.qual_usg_id IN (-1007, -1012)
721 AND b.named_account_id = l_na_id
722 ORDER BY b.qual_usg_id;
723
724
725 /* get DUNS# for the Named Account */
726 /* bug#2933116: JDOCHERT: 05/27/03: support for DUNS# Qualifier */
727 CURSOR match_rule3(l_na_id number) IS
728 SELECT -1120 qual_usg_id
729 , '=' comparison_operator
730 , hzp.duns_number_c value1_char
731 FROM hz_parties hzp, jtf_tty_named_accts na
732 where hzp.status = 'A'
733 AND hzp.party_id = na.party_id
734 AND na.named_account_id = l_na_id;
735
736
737 /* Get Top-Level Parent Territory details */
738 CURSOR topterr(l_terr number) IS
739 SELECT name
740 , description
741 , rank
742 , parent_territory_id
743 , terr_id
744 from jtf_terr_all
745 where terr_id = l_terr;
746
747 /* get Qualifiers used in a territory */
748 CURSOR csr_get_qual( lp_terr_id NUMBER) IS
749 SELECT jtq.terr_qual_id
750 , jtq.qual_usg_id
751 FROM jtf_terr_qual_all jtq
752 WHERE jtq.terr_id = lp_terr_id;
753
754 /* get Values used in a territory qualifier */
755 CURSOR csr_get_qual_val ( lp_terr_qual_id NUMBER ) IS
756 SELECT jtv.TERR_VALUE_ID
757 , jtv.INCLUDE_FLAG
758 , jtv.COMPARISON_OPERATOR
759 , jtv.LOW_VALUE_CHAR
760 , jtv.HIGH_VALUE_CHAR
761 , jtv.LOW_VALUE_NUMBER
762 , jtv.HIGH_VALUE_NUMBER
763 , jtv.VALUE_SET
764 , jtv.INTEREST_TYPE_ID
765 , jtv.PRIMARY_INTEREST_CODE_ID
766 , jtv.SECONDARY_INTEREST_CODE_ID
767 , jtv.CURRENCY_CODE
768 , jtv.ORG_ID
769 , jtv.ID_USED_FLAG
770 , jtv.LOW_VALUE_CHAR_ID
771 FROM jtf_terr_values_all jtv
772 WHERE jtv.terr_qual_id = lp_terr_qual_id;
773
774
775 /* get those roles for a territory Group that
776 ** do not have Product Interest defined */
777 CURSOR role_no_pi(l_terr_group_id number) IS
778 SELECT distinct b.role_code
779 from jtf_tty_role_access a
780 , jtf_tty_terr_grp_roles b
781 , jtf_tty_role_prod_int c
782 where a.terr_group_role_id = b.terr_group_role_id
783 and b.terr_group_id = l_terr_group_id
784 and a.access_type = 'ACCOUNT'
785 and c.terr_group_role_id = b.terr_group_role_id
786 and not exists ( SELECT 1
787 from jtf_tty_role_prod_int e
788 , jtf_tty_terr_grp_roles d
789 where e.terr_group_role_id (+) = d.terr_group_role_id
790 and d.terr_group_id = b.terr_group_id
791 and d.role_code = b.role_code
792 and e.interest_type_id is null);
793
794
795
796 l_overlay_top number;
797 l_overlay number;
798 l_nacat number;
799 l_id number;
800 l_ovnon_flag varchar2(1):='N';
801
802 l_na_count number;
803
804 l_terr_exists NUMBER;
805
806 BEGIN
807
808 /* JDOCHERT: 07/09/03:
809 ** START: Disable triggers in
810 ** TOTAL mode */
811 IF (p_mode = 'TOTAL') THEN
812 alter_triggers(p_status => 'DISABLE');
813 END IF;
814
815 /* (1) JDOCHERT: 07/01/03:
816 ** START: DELETE ALL EXISTING NAMED ACCOUNT TERRITORIES
817 ** INCREMENTAL or TOTAL mode */
818 cleanup_na_territories(p_mode => p_mode);
819
820 /* Set Global Application Short Name */
821 IF G_APP_SHORT_NAME IS NULL THEN
822 G_APP_SHORT_NAME := 'JTF';
823 END IF;
824
825 /* (2) START: CREATE NAMED ACCOUNT TERRITORY CREATION
826 ** FOR EACH TERRITORY GROUP */
827 for terr_group in grp LOOP
828
829 write_log(2, '');
830 write_log(2, '----------------------------------------------------------');
831 write_log(2, 'BEGIN: Territory Creation for Territory Group: ' ||
832 terr_group.terr_group_id || ' : ' ||
833 terr_group.terr_group_name );
834
835 /* reset these processing values for the Territory Group */
836 l_na_catchall_flag := 'N';
837 l_overlap_catchall_flag := 'N';
838 l_ovnon_flag := 'N';
839 l_overnon_role_tbl := l_overnon_role_empty_tbl;
840
841
842 /** Roles with No Product Interest */
843 i:=0;
844 for overlayandnon in role_no_pi(terr_group.terr_group_id) loop
845
846 l_ovnon_flag:='Y';
847 i :=i +1;
848
849 SELECT JTF_TTY_TERR_GRP_ROLES_S.nextval
850 into l_id
851 FROM DUAL;
852
853 l_overnon_role_tbl(i).grp_role_id:= l_id;
854 --
855
856 INSERT into JTF_TTY_TERR_GRP_ROLES(
857 TERR_GROUP_ROLE_ID
858 , OBJECT_VERSION_NUMBER
859 , TERR_GROUP_ID
860 , ROLE_CODE
861 , CREATED_BY
862 , CREATION_DATE
863 , LAST_UPDATED_BY
864 , LAST_UPDATE_DATE
865 , LAST_UPDATE_LOGIN)
866 VALUES(
867 l_overnon_role_tbl(i).grp_role_id
868 , 1
869 , terr_group.terr_group_id
870 , overlayandnon.role_code
871 , G_USER_ID
872 , sysdate
873 , G_USER_ID
874 , sysdate
875 , G_LOGIN_ID);
876 INSERT into JTF_TTY_ROLE_ACCESS(
877 TERR_GROUP_ROLE_ACCESS_ID
878 , OBJECT_VERSION_NUMBER
879 , TERR_GROUP_ROLE_ID
880 , ACCESS_TYPE
881 , CREATED_BY
882 , CREATION_DATE
883 , LAST_UPDATED_BY
884 , LAST_UPDATE_DATE
885 , LAST_UPDATE_LOGIN)
886 VALUES(
887 JTF_TTY_ROLE_ACCESS_S.nextval
888 , 1
889 , l_overnon_role_tbl(i).grp_role_id
890 , 'ACCOUNT'
891 , G_USER_ID
892 , sysdate
893 , G_USER_ID
894 , sysdate
895 , G_LOGIN_ID);
896
897 end loop; /* for overlayandnon in role_no_pi */
898
899
900
901 if TERR_GROUP.self_service_type = 'NAMED_ACCOUNT' then
902 /* does Territory Group have at least 1 Named Account ? */
903 SELECT COUNT(*)
904 INTO l_na_count
905 from jtf_tty_terr_groups g
906 , jtf_tty_terr_grp_accts ga
907 , jtf_tty_named_accts a
908 where g.terr_group_id = ga.terr_group_id
909 AND ga.named_account_id = a.named_account_id
910 AND g.terr_group_id = TERR_GROUP.TERR_GROUP_ID
911 AND ROWNUM < 2;
912 else
913 /* Fix for the bug 3135657. Added jtf_tty_geo_grp_values */
914
915 /* does Territory Group have at least 1 Geo Territory ? */
916 SELECT COUNT(*)
917 INTO l_na_count
918 from jtf_tty_terr_groups tgrp
919 , jtf_tty_geo_grp_values gterr
920 where tgrp.terr_group_id = gterr.terr_group_id
921 AND ROWNUM < 2;
922
923 end if;
924
925 /*********************************************************************/
926 /*********************************************************************/
927 /************** NON-OVERLAY TERRITORY CREATION ***********************/
928 /*********************************************************************/
929 /*********************************************************************/
930
931 /* BEGIN: if Territory Group exists with Named Accounts
932 ** then auto-create territory definitions */
933
934 IF (l_na_count > 0) THEN
935
936 /***************************************************************/
937 /* (3) START: CREATE PLACEHOLDER TERRITORY FOR TERRITORY GROUP */
938 /***************************************************************/
939 L_TERR_USGS_TBL := L_TERR_USGS_EMPTY_TBL;
940 L_TERR_QUALTYPEUSGS_TBL := L_TERR_QUALTYPEUSGS_EMPTY_TBL;
941 L_TERR_QUAL_TBL := L_TERR_QUAL_EMPTY_TBL;
942 L_TERR_VALUES_TBL := L_TERR_VALUES_EMPTY_TBL;
943 L_TERRRSC_TBL := L_TERRRSC_EMPTY_TBL;
944 L_TERRRSC_ACCESS_TBL := L_TERRRSC_ACCESS_EMPTY_TBL;
945
946 /* TERRITORY HEADER */
947 L_TERR_ALL_REC.TERR_ID := terr_group.terr_group_id;
948 L_TERR_ALL_REC.LAST_UPDATE_DATE := TERR_GROUP.LAST_UPDATE_DATE;
949 L_TERR_ALL_REC.LAST_UPDATED_BY := G_USER_ID;
950 L_TERR_ALL_REC.CREATION_DATE := TERR_GROUP.CREATION_DATE;
951 L_TERR_ALL_REC.CREATED_BY := G_USER_ID ;
952 L_TERR_ALL_REC.LAST_UPDATE_LOGIN := G_LOGIN_ID;
953 L_TERR_ALL_REC.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
954 L_TERR_ALL_REC.NAME := TERR_GROUP.TERR_GROUP_NAME;
955 L_TERR_ALL_REC.START_DATE_ACTIVE := TERR_GROUP.ACTIVE_FROM_DATE ;
956 L_TERR_ALL_REC.END_DATE_ACTIVE := TERR_GROUP.ACTIVE_TO_DATE;
957 L_TERR_ALL_REC.PARENT_TERRITORY_ID := TERR_GROUP.PARENT_TERR_ID;
958 L_TERR_ALL_REC.RANK := TERR_GROUP.RANK;
959 L_TERR_ALL_REC.TEMPLATE_TERRITORY_ID := NULL;
960 L_TERR_ALL_REC.TEMPLATE_FLAG := 'N';
961 L_TERR_ALL_REC.ESCALATION_TERRITORY_ID := NULL;
962 L_TERR_ALL_REC.ESCALATION_TERRITORY_FLAG := 'N';
963 L_TERR_ALL_REC.OVERLAP_ALLOWED_FLAG := NULL;
964 L_TERR_ALL_REC.DESCRIPTION := TERR_GROUP.TERR_GROUP_NAME;
965 L_TERR_ALL_REC.UPDATE_FLAG := 'N';
966 L_TERR_ALL_REC.AUTO_ASSIGN_RESOURCES_FLAG:= NULL;
967 L_TERR_ALL_REC.NUM_WINNERS := NULL ;
968
969 /* ORG_ID IS SET TO SAME VALUE AS TERRITORY
970 ** GROUP's Top-Level Parent Territory */
971 l_terr_all_rec.ORG_ID := terr_group.ORG_ID;
972
973
974 /* ORACLE SALES AND TELESALES USAGE */
975 SELECT JTF_TERR_USGS_S.nextval
976 INTO l_terr_usg_id
977 FROM DUAL;
978
979 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
980 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
981 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := terr_group.LAST_UPDATE_DATE;
982 l_terr_usgs_tbl(1).LAST_UPDATED_BY := G_USER_ID;
983 l_terr_usgs_tbl(1).CREATION_DATE := terr_group.CREATION_DATE;
984 l_terr_usgs_tbl(1).CREATED_BY := G_USER_ID;
985 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:= G_LOGIN_ID;
986 l_terr_usgs_tbl(1).TERR_ID := null;
987 l_terr_usgs_tbl(1).ORG_ID := terr_group.ORG_ID;
988
989
990 /* ACCOUNT TRANSACTION TYPE */
991 SELECT JTF_TERR_QTYPE_USGS_S.nextval
992 into l_terr_qtype_usg_id
993 FROM DUAL;
994
995 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID := -1001;
996 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
997 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE := terr_group.LAST_UPDATE_DATE;
998 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY := G_USER_ID;
999 l_terr_qualtypeusgs_tbl(1).CREATION_DATE := terr_group.CREATION_DATE;
1000 l_terr_qualtypeusgs_tbl(1).CREATED_BY := G_USER_ID;
1001 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN := G_LOGIN_ID;
1002 l_terr_qualtypeusgs_tbl(1).TERR_ID := null;
1003 l_terr_qualtypeusgs_tbl(1).ORG_ID := terr_group.ORG_ID;
1004
1005 /* LEAD TRANSACTION TYPE */
1006 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1007 into l_terr_qtype_usg_id
1008 FROM DUAL;
1009
1010 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID := -1002;
1011 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
1012 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE := terr_group.LAST_UPDATE_DATE;
1013 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY := G_USER_ID;
1014 l_terr_qualtypeusgs_tbl(2).CREATION_DATE := terr_group.CREATION_DATE;
1015 l_terr_qualtypeusgs_tbl(2).CREATED_BY := G_USER_ID;
1016 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN := G_LOGIN_ID;
1017 l_terr_qualtypeusgs_tbl(2).TERR_ID := null;
1018 l_terr_qualtypeusgs_tbl(2).ORG_ID := terr_group.ORG_ID;
1019
1020 /* OPPORTUNITY TRANSACTION TYPE */
1021 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1022 into l_terr_qtype_usg_id
1023 FROM DUAL;
1024
1025 l_terr_qualtypeusgs_tbl(3).QUAL_TYPE_USG_ID := -1003;
1026 l_terr_qualtypeusgs_tbl(3).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
1027 l_terr_qualtypeusgs_tbl(3).LAST_UPDATE_DATE := terr_group.LAST_UPDATE_DATE;
1028 l_terr_qualtypeusgs_tbl(3).LAST_UPDATED_BY := G_USER_ID;
1029 l_terr_qualtypeusgs_tbl(3).CREATION_DATE := terr_group.CREATION_DATE;
1030 l_terr_qualtypeusgs_tbl(3).CREATED_BY := G_USER_ID;
1031 l_terr_qualtypeusgs_tbl(3).LAST_UPDATE_LOGIN := G_LOGIN_ID;
1032 l_terr_qualtypeusgs_tbl(3).TERR_ID := null;
1033 l_terr_qualtypeusgs_tbl(3).ORG_ID := terr_group.ORG_ID;
1034
1035 l_init_msg_list := FND_API.G_TRUE;
1036
1037
1038 /* set org context using ORG_ID of Territory
1039 ** Group'S TOP-LEVEL PARENT TERRITORY */
1040 -- 07/08/03: JDOCHERT: bug#3023653
1041 --
1042 --MO_GLOBAL.SET_ORG_CONTEXT(TERR_GROUP.ORG_ID, NULL);
1043 --
1044
1045 /* CALL CREATE TERRITORY API */
1046 jtf_territory_pvt.create_territory (
1047 p_api_version_number => l_api_version_number,
1048 p_init_msg_list => l_init_msg_list,
1049 p_commit => l_commit,
1050 p_validation_level => fnd_api.g_valid_level_NONE,
1051 x_return_status => x_return_status,
1052 x_msg_count => x_msg_count,
1053 x_msg_data => x_msg_data,
1054 p_terr_all_rec => l_terr_all_rec,
1055 p_terr_usgs_tbl => l_terr_usgs_tbl,
1056 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
1057 p_terr_qual_tbl => l_terr_qual_tbl,
1058 p_terr_values_tbl => l_terr_values_tbl,
1059 x_terr_id => x_terr_id,
1060 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
1061 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
1062 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
1063 x_terr_values_out_tbl => x_terr_values_out_tbl
1064 );
1065
1066
1067 /* BEGIN: SUCCESSFUL TERRITORY CREATION? */
1068 IF X_RETURN_STATUS = 'S' THEN
1069
1070 /* JDOCHERT: 01/08/03: ADDED TERR_GROUP_ID */
1071 UPDATE JTF_TERR_ALL
1072 SET TERR_GROUP_FLAG = 'Y'
1073 , CATCH_ALL_FLAG = 'N'
1074 , TERR_GROUP_ID = TERR_GROUP.TERR_GROUP_ID
1075 , NUM_WINNERS = TERR_GROUP.NUM_WINNERS
1076 WHERE TERR_ID = X_TERR_ID;
1077
1078 L_NACAT := X_TERR_ID;
1079
1080 WRITE_LOG(2,' Top level Named Account territory created: TERR_ID# '||X_TERR_ID);
1081
1082 ELSE
1083 WRITE_LOG(2,'ERROR: PLACEHOLDER TERRITORY CREATION FAILED ' ||
1084 'FOR TERRITORY_GROUP_ID# ' ||TERR_GROUP.TERR_GROUP_ID);
1085 X_MSG_DATA := FND_MSG_PUB.GET(1, FND_API.G_FALSE);
1086 WRITE_LOG(2,X_MSG_DATA);
1087
1088 END IF;
1089 /* END: SUCCESSFUL TERRITORY CREATION? */
1090 /*************************************************************/
1091 /* (3) END: CREATE PLACEHOLDER TERRITORY FOR TERRITORY GROUP */
1092 /*************************************************************/
1093
1094 if TERR_GROUP.self_service_type = 'NAMED_ACCOUNT' then
1095
1096 /****************************************************************/
1097 /* (4) START: CREATE NA CATCH-ALL TERRITORY FOR TERRITORY GROUP */
1098 /****************************************************************/
1099
1100 IF ( terr_group.matching_rule_code IN ('1', '2') AND
1101 terr_group.generate_catchall_flag = 'Y' ) THEN
1102
1103 /* RESET TABLES */
1104 L_TERR_USGS_TBL := L_TERR_USGS_EMPTY_TBL;
1105 L_TERR_QUALTYPEUSGS_TBL := L_TERR_QUALTYPEUSGS_EMPTY_TBL;
1106 L_TERR_QUAL_TBL := L_TERR_QUAL_EMPTY_TBL;
1107 L_TERR_VALUES_TBL := L_TERR_VALUES_EMPTY_TBL;
1108 L_TERRRSC_TBL := L_TERRRSC_EMPTY_TBL;
1109 L_TERRRSC_ACCESS_TBL := L_TERRRSC_ACCESS_EMPTY_TBL;
1110
1111
1112 /* TERRITORY HEADER */
1113 /* Ensure static TERR_ID to benefit TAP Performance */
1114 L_TERR_ALL_REC.TERR_ID := terr_group.terr_group_id * -1;
1115 L_TERR_ALL_REC.LAST_UPDATE_DATE := TERR_GROUP.LAST_UPDATE_DATE;
1116 L_TERR_ALL_REC.LAST_UPDATED_BY := G_USER_ID;
1117 L_TERR_ALL_REC.CREATION_DATE := TERR_GROUP.CREATION_DATE;
1118 L_TERR_ALL_REC.CREATED_BY := G_USER_ID;
1119 L_TERR_ALL_REC.LAST_UPDATE_LOGIN := G_LOGIN_ID;
1120 L_TERR_ALL_REC.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
1121 L_TERR_ALL_REC.NAME := TERR_GROUP.TERR_GROUP_NAME ||' (CATCH-ALL)';
1122 L_TERR_ALL_REC.START_DATE_ACTIVE := TERR_GROUP.ACTIVE_FROM_DATE ;
1123 L_TERR_ALL_REC.END_DATE_ACTIVE := TERR_GROUP.ACTIVE_TO_DATE;
1124 L_TERR_ALL_REC.PARENT_TERRITORY_ID := X_TERR_ID;
1125
1126 --
1127 -- 01/20/03: JDOCHERT: CHANGE RANK OF CATCH-ALL
1128 -- TO BE LESS THAT NAMED ACCOUNT TERRITORIES
1129 --
1130 L_TERR_ALL_REC.RANK := TERR_GROUP.RANK + 100;
1131 --
1132
1133 L_TERR_ALL_REC.TEMPLATE_TERRITORY_ID := NULL;
1134 L_TERR_ALL_REC.TEMPLATE_FLAG := 'N';
1135 L_TERR_ALL_REC.ESCALATION_TERRITORY_ID := NULL;
1136 L_TERR_ALL_REC.ESCALATION_TERRITORY_FLAG := 'N';
1137 L_TERR_ALL_REC.OVERLAP_ALLOWED_FLAG := NULL;
1138 L_TERR_ALL_REC.DESCRIPTION := TERR_GROUP.TERR_GROUP_NAME||' (CATCH-ALL)';
1139 L_TERR_ALL_REC.UPDATE_FLAG := 'N';
1140 L_TERR_ALL_REC.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
1141
1142 /* ORG_ID IS SET TO SAME VALUE AS TERRITORY
1143 ** GROUP's Top-Level Parent Territory */
1144 l_terr_all_rec.ORG_ID := terr_group.ORG_ID;
1145 l_terr_all_rec.NUM_WINNERS := null ;
1146
1147
1148 /* Oracle Sales and Telesales Usage */
1149 SELECT JTF_TERR_USGS_S.nextval
1150 into l_terr_usg_id
1151 FROM DUAL;
1152
1153 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
1154 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := terr_group.LAST_UPDATE_DATE;
1155 l_terr_usgs_tbl(1).LAST_UPDATED_BY := G_USER_ID;
1156 l_terr_usgs_tbl(1).CREATION_DATE := terr_group.CREATION_DATE;
1157 l_terr_usgs_tbl(1).CREATED_BY := G_USER_ID;
1158 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := G_LOGIN_ID;
1159 l_terr_usgs_tbl(1).TERR_ID := null;
1160 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
1161 l_terr_usgs_tbl(1).ORG_ID := terr_group.ORG_ID;
1162
1163
1164 i:=0;
1165 FOR actype in na_access(terr_group.terr_group_id) LOOP
1166
1167 i:=i+1;
1168 if actype.access_type='ACCOUNT' then
1169
1170 /* ACCOUNT TRANSACTION TYPE */
1171 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1172 into l_terr_qtype_usg_id
1173 FROM DUAL;
1174
1175 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
1176 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := terr_group.LAST_UPDATE_DATE;
1177 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := G_USER_ID;
1178 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := terr_group.CREATION_DATE;
1179 l_terr_qualtypeusgs_tbl(i).CREATED_BY := G_USER_ID;
1180 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := G_LOGIN_ID;
1181 l_terr_qualtypeusgs_tbl(i).TERR_ID := null;
1182 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1001;
1183 l_terr_qualtypeusgs_tbl(i).ORG_ID := terr_group.ORG_ID;
1184
1185 elsif actype.access_type='LEAD' then
1186
1187 /* LEAD TRANSACTION TYPE */
1188 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1189 INTO l_terr_qtype_usg_id
1190 FROM DUAL;
1191
1192 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
1193 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1194 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1195 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
1196 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
1197 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1198 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
1199 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1002;
1200 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
1201
1202 elsif actype.access_type='OPPORTUNITY' then
1203
1204 /* OPPORTUNITY TRANSACTION TYPE */
1205 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1206 into l_terr_qtype_usg_id
1207 FROM DUAL;
1208
1209 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
1210 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1211 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1212 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
1213 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
1214 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1215 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
1216 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1003;
1217 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
1218
1219 end if;
1220 end loop;
1221
1222
1223
1224 /*
1225 ** Customer Name Range Qualifier -1012 */
1226 SELECT JTF_TERR_QUAL_S.nextval
1227 into l_terr_qual_id
1228 FROM DUAL;
1229
1230 l_terr_qual_tbl(1).TERR_QUAL_ID :=l_terr_qual_id;
1231 l_terr_qual_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
1232 l_terr_qual_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1233 l_terr_qual_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
1234 l_terr_qual_tbl(1).CREATED_BY := terr_group.CREATED_BY;
1235 l_terr_qual_tbl(1).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1236 l_terr_qual_tbl(1).TERR_ID:=null;
1237 l_terr_qual_tbl(1).QUAL_USG_ID :=-1012;
1238 l_terr_qual_tbl(1).QUALIFIER_MODE:=NULL;
1239 l_terr_qual_tbl(1).OVERLAP_ALLOWED_FLAG:='N';
1240 l_terr_qual_tbl(1).USE_TO_NAME_FLAG:=NULL;
1241 l_terr_qual_tbl(1).GENERATE_FLAG:=NULL;
1242 l_terr_qual_tbl(1).ORG_ID:=terr_group.ORG_ID;
1243
1244 /*
1245 ** VARCHAR2 data value */
1246 l_id_used_flag :='N' ;
1247
1248 /*
1249 ** get all the Customer Name Range Values for all the Named Accounts
1250 ** that belong to this Territory Group */
1251 k:=0;
1252
1253 FOR cust_value in catchall_cust(terr_group.TERR_GROUP_ID) LOOP
1254
1255 k:=k+1;
1256
1257 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
1258
1259 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
1260 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
1261 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
1262 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
1263 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
1264 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
1265 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
1266 l_terr_values_tbl(k).COMPARISON_OPERATOR := cust_value.COMPARISON_OPERATOR;
1267 l_terr_values_tbl(k).LOW_VALUE_CHAR:= cust_value.value1_char;
1268
1269 l_terr_values_tbl(k).HIGH_VALUE_CHAR:=null;
1270 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
1271 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
1272 l_terr_values_tbl(k).VALUE_SET :=NULL;
1273 l_terr_values_tbl(k).INTEREST_TYPE_ID :=null;
1274 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
1275 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
1276 l_terr_values_tbl(k).CURRENCY_CODE :=null;
1277 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
1278 l_terr_values_tbl(k).ID_USED_FLAG :=l_id_used_flag;
1279 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
1280
1281 l_terr_values_tbl(k).qualifier_tbl_index := 1;
1282
1283 end loop;
1284
1285 l_init_msg_list := FND_API.G_TRUE;
1286
1287 -- 07/08/03: JDOCHERT: bug#3023653
1288 -- mo_global.set_org_context(terr_group.ORG_ID,null);
1289 --
1290 jtf_territory_pvt.create_territory (
1291 p_api_version_number => l_api_version_number,
1292 p_init_msg_list => l_init_msg_list,
1293 p_commit => l_commit,
1294 p_validation_level => fnd_api.g_valid_level_NONE,
1295 x_return_status => x_return_status,
1296 x_msg_count => x_msg_count,
1297 x_msg_data => x_msg_data,
1298 p_terr_all_rec => l_terr_all_rec,
1299 p_terr_usgs_tbl => l_terr_usgs_tbl,
1300 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
1301 p_terr_qual_tbl => l_terr_qual_tbl,
1302 p_terr_values_tbl => l_terr_values_tbl,
1303 x_terr_id => x_terr_id,
1304 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
1305 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
1306 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
1307 x_terr_values_out_tbl => x_terr_values_out_tbl
1308 );
1309
1310
1311 /* BEGIN: Successful Territory creation? */
1312 IF x_return_status = 'S' THEN
1313
1314 /* JDOCHERT: 01/08/03: Added TERR_GROUP_ID and CATCH_ALL_FLAG */
1315 UPDATE JTF_TERR_ALL
1316 set TERR_GROUP_FLAG = 'Y'
1317 , TERR_GROUP_ID = terr_group.TERR_GROUP_ID
1318 , CATCH_ALL_FLAG = 'Y'
1319 where terr_id = x_terr_id;
1320
1321 l_init_msg_list :=FND_API.G_TRUE;
1322
1323 SELECT JTF_TERR_RSC_S.nextval
1324 into l_terr_rsc_id
1325 FROM DUAL;
1326
1327 l_TerrRsc_Tbl(1).terr_id := x_terr_id;
1328 l_TerrRsc_Tbl(1).TERR_RSC_ID :=l_terr_rsc_id;
1329 l_TerrRsc_Tbl(1).LAST_UPDATE_DATE:=terr_group.LAST_UPDATE_DATE;
1330 l_TerrRsc_Tbl(1).LAST_UPDATED_BY:=terr_group.LAST_UPDATED_BY;
1331 l_TerrRsc_Tbl(1).CREATION_DATE:=terr_group.CREATION_DATE;
1332 l_TerrRsc_Tbl(1).CREATED_BY:=terr_group.CREATED_BY;
1333 l_TerrRsc_Tbl(1).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
1334 l_TerrRsc_Tbl(1).RESOURCE_ID:=terr_group.catch_all_resource_id;
1335 l_TerrRsc_Tbl(1).RESOURCE_TYPE:=terr_group.catch_all_resource_type;
1336
1337 --l_TerrRsc_Tbl(1).ROLE:=tran_type.role_code;
1338 l_TerrRsc_Tbl(1).ROLE:='SALES_ADMIN';
1339 l_TerrRsc_Tbl(1).PRIMARY_CONTACT_FLAG:='N';
1340 l_TerrRsc_Tbl(1).START_DATE_ACTIVE:=terr_group.active_from_date ;
1341 l_TerrRsc_Tbl(1).END_DATE_ACTIVE:=terr_group.active_to_date ;
1342 l_TerrRsc_Tbl(1).ORG_ID:=terr_group.ORG_ID;
1343 l_TerrRsc_Tbl(1).FULL_ACCESS_FLAG:='Y';
1344 l_TerrRsc_Tbl(1).GROUP_ID:=-999;
1345
1346 a:=0;
1347 --
1348 FOR rsc_acc in na_access(terr_group.terr_group_id) LOOP
1349
1350 a := a+1;
1351
1352 /* ACCOUNT ACCESS TYPE */
1353 IF rsc_acc.access_type= 'ACCOUNT' then
1354
1355 SELECT JTF_TERR_RSC_ACCESS_S.nextval
1356 INTO l_terr_rsc_access_id
1357 FROM DUAL;
1358
1359 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
1360 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
1361 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1362 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
1363 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
1364 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1365 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
1366 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'ACCOUNT';
1367 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
1368 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= 1;
1369
1370 /* OPPORTUNITY ACCESS TYPE */
1371 ELSIF rsc_acc.access_type= 'OPPORTUNITY' then
1372
1373 SELECT JTF_TERR_RSC_ACCESS_S.nextval
1374 into l_terr_rsc_access_id
1375 FROM DUAL;
1376
1377 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
1378 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
1379 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1380 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
1381 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
1382 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1383 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
1384 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'OPPOR';
1385 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
1386 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= 1;
1387
1388 /* LEAD ACCESS TYPE */
1389 elsif rsc_acc.access_type= 'LEAD' then
1390
1391 SELECT JTF_TERR_RSC_ACCESS_S.nextval
1392 into l_terr_rsc_access_id
1393 FROM DUAL;
1394
1395 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
1396 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
1397 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1398 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
1399 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
1400 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1401 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
1402 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'LEAD';
1403 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
1404 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:=1;
1405
1406 end if;
1407 end loop; /* End of rsc_acc */
1408
1409 l_init_msg_list := FND_API.G_TRUE;
1410
1411 -- 07/08/03: JDOCHERT: bug#3023653
1412 jtf_territory_resource_pvt.create_terrresource (
1413 p_api_version_number => l_Api_Version_Number,
1414 p_init_msg_list => l_Init_Msg_List,
1415 p_commit => l_Commit,
1416 p_validation_level => fnd_api.g_valid_level_NONE,
1417 x_return_status => x_Return_Status,
1418 x_msg_count => x_Msg_Count,
1419 x_msg_data => x_msg_data,
1420 p_terrrsc_tbl => l_TerrRsc_tbl,
1421 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
1422 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
1423 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
1424 );
1425
1426 if x_Return_Status='S' then
1427 write_log( 2,' RESOURCE CREATED FOR NAMED ACCOUNT CATCH ALL TERRITORY ' ||
1428 x_terr_id);
1429 else
1430 write_log( 2,' FAILED IN RESOURCE CREATION FOR NAMED ACCOUNT CATCH ALL TERRITORY' ||
1431 x_terr_id);
1432 x_msg_data := fnd_msg_pub.get(1, fnd_api.g_false);
1433 end if;
1434
1435 /* else of -if the catch all territory creation failed */
1436 else
1437 x_msg_data := fnd_msg_pub.get(1, fnd_api.g_false);
1438 write_log(2,x_msg_data);
1439 WRITE_LOG(2,'ERROR: NA CATCH-ALL TERRITORY CREATION FAILED ' ||
1440 'FOR TERRITORY_GROUP_ID# ' ||TERR_GROUP.TERR_GROUP_ID);
1441 end if;
1442
1443 END IF; /* ( terr_group.matching_rule_code IN ('1', '2') AND
1444 terr_group.generate_catchall_flag = 'Y' ) THEN */
1445
1446 /* END: Successful Territory creation? */
1447 /**************************************************************/
1448 /* (4) END: CREATE NA CATCH-ALL TERRITORY FOR TERRITORY GROUP */
1449 /**************************************************************/
1450
1451
1452 /***************************************************************/
1453 /* (5) START: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
1454 /* USING DUNS# QUALIFIER */
1455 /***************************************************************/
1456 IF ( terr_group.matching_rule_code IN ('2', '3') ) THEN
1457
1458 FOR naterr in get_party_duns(terr_group.terr_group_id) LOOP
1459
1460 --write_log(2,'na '||naterr.named_account_id);
1461
1462 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
1463
1464 l_terr_qual_tbl := l_terr_qual_empty_tbl;
1465 l_terr_values_tbl := l_terr_values_empty_tbl;
1466
1467 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
1468 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
1469
1470 /* TERRITORY HEADER */
1471 /* Ensure static TERR_ID to benefit TAP Performance */
1472 BEGIN
1473
1474 l_terr_exists := 0;
1475
1476 SELECT COUNT(*)
1477 INTO l_terr_exists
1478 FROM jtf_terr_all jt
1479 WHERE jt.terr_id = naterr.terr_group_account_id * -100;
1480
1481 IF (l_terr_exists = 0) THEN
1482 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -100;
1483 ELSE
1484 l_terr_all_rec.TERR_ID := NULL;
1485 END IF;
1486
1487 EXCEPTION
1488 WHEN NO_DATA_FOUND THEN
1489 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -100;
1490 END;
1491
1492
1493 l_terr_all_rec.LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1494 l_terr_all_rec.LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1495 l_terr_all_rec.CREATION_DATE:= terr_group.CREATION_DATE;
1496 l_terr_all_rec.CREATED_BY := terr_group.CREATED_BY ;
1497 l_terr_all_rec.LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1498
1499 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
1500 l_terr_all_rec.NAME:= naterr.name || ' (DUNS#)';
1501 l_terr_all_rec.start_date_active := terr_group.active_from_date ;
1502 l_terr_all_rec.end_date_active := terr_group.active_to_date;
1503 l_terr_all_rec.PARENT_TERRITORY_ID:= l_nacat;
1504 l_terr_all_rec.RANK := terr_group.RANK + 10;
1505 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
1506 l_terr_all_rec.TEMPLATE_FLAG := 'N';
1507 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
1508 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
1509 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
1510 l_terr_all_rec.DESCRIPTION:= naterr.name || ' (DUNS#)';
1511 l_terr_all_rec.UPDATE_FLAG :='N';
1512 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
1513
1514 l_terr_all_rec.ORG_ID :=terr_group.ORG_ID ;
1515 l_terr_all_rec.NUM_WINNERS :=null ;
1516
1517
1518 /* Oracle Sales and Telesales Usage */
1519 SELECT JTF_TERR_USGS_S.nextval
1520 into l_terr_usg_id
1521 FROM DUAL;
1522
1523 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
1524 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1525 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1526 l_terr_usgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
1527 l_terr_usgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
1528 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
1529 l_terr_usgs_tbl(1).TERR_ID:= null;
1530 l_terr_usgs_tbl(1).SOURCE_ID:=-1001;
1531 l_terr_usgs_tbl(1).ORG_ID:= terr_group.ORG_ID;
1532
1533 i:=0;
1534
1535 /* BEGIN: For each Access Type defined for the Territory Group */
1536
1537 for acctype in get_NON_OVLY_na_trans(naterr.terr_group_account_id) LOOP
1538
1539 i:=i+1;
1540
1541 /* ACCOUNT TRANSACTION TYPE */
1542 if acctype.access_type='ACCOUNT' then
1543
1544 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1545 into l_terr_qtype_usg_id
1546 FROM DUAL;
1547 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
1548 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1549 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1550 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
1551 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
1552 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1553 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
1554 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1001;
1555 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
1556
1557 /* LEAD TRANSACTION TYPE */
1558 elsif acctype.access_type='LEAD' then
1559
1560 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1561 into l_terr_qtype_usg_id
1562 FROM DUAL;
1563 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
1564 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1565 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1566 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
1567 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
1568 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1569 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
1570 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1002;
1571 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
1572
1573 /* OPPORTUNITY TRANSACTION TYPE */
1574 elsif acctype.access_type='OPPORTUNITY' then
1575
1576 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1577 into l_terr_qtype_usg_id
1578 FROM DUAL;
1579 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
1580 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1581 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1582 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
1583 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
1584 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1585 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
1586 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1003;
1587 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
1588
1589 end if;
1590
1591 end loop;
1592 /* END: For each Access Type defined for the Territory Group */
1593
1594
1595 /*
1596 ** get Named Account Customer Keyname and Postal Code Mapping
1597 ** rules, to use as territory definition qualifier values
1598 */
1599 j:=0;
1600 K:=0;
1601 l_prev_qual_usg_id:=1;
1602 FOR qval IN match_rule3( naterr.named_account_id ) LOOP
1603
1604 /* new qualifier, i.e., if there is a qualifier in
1605 ** Addition to DUNS# */
1606 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
1607
1608 j:=j+1;
1609
1610 SELECT JTF_TERR_QUAL_S.nextval
1611 into l_terr_qual_id
1612 FROM DUAL;
1613
1614 l_terr_qual_tbl(j).TERR_QUAL_ID :=l_terr_qual_id;
1615 l_terr_qual_tbl(j).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
1616 l_terr_qual_tbl(j).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1617 l_terr_qual_tbl(j).CREATION_DATE:= terr_group.CREATION_DATE;
1618 l_terr_qual_tbl(j).CREATED_BY := terr_group.CREATED_BY;
1619 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1620 l_terr_qual_tbl(j).TERR_ID:=null;
1621 l_terr_qual_tbl(j).QUAL_USG_ID :=qval.qual_usg_id;
1622 l_terr_qual_tbl(j).QUALIFIER_MODE:=NULL;
1623 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG:='N';
1624 l_terr_qual_tbl(j).USE_TO_NAME_FLAG:=NULL;
1625 l_terr_qual_tbl(j).GENERATE_FLAG:=NULL;
1626 l_terr_qual_tbl(j).ORG_ID:=terr_group.ORG_ID;
1627 l_prev_qual_usg_id:= qval.qual_usg_id;
1628
1629 END IF;
1630
1631 k:=k+1;
1632
1633 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
1634 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
1635 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
1636 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
1637 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
1638 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
1639 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
1640 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
1641 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
1642 l_terr_values_tbl(k).LOW_VALUE_CHAR:= qval.value1_char;
1643 l_terr_values_tbl(k).HIGH_VALUE_CHAR:= NULL;
1644 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
1645 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
1646 l_terr_values_tbl(k).VALUE_SET :=NULL;
1647 l_terr_values_tbl(k).INTEREST_TYPE_ID :=null;
1648 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
1649 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
1650 l_terr_values_tbl(k).CURRENCY_CODE :=null;
1651 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
1652 l_terr_values_tbl(k).ID_USED_FLAG :='N';
1653 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
1654
1655 l_terr_values_tbl(k).qualifier_tbl_index := j;
1656
1657 end loop; /* qval IN pqual */
1658
1659
1660 l_init_msg_list :=FND_API.G_TRUE;
1661
1662 -- 07/08/03: JDOCHERT: bug#3023653
1663 --mo_global.set_org_context(terr_group.ORG_ID,null);
1664 --
1665
1666 jtf_territory_pvt.create_territory (
1667 p_api_version_number => l_api_version_number,
1668 p_init_msg_list => l_init_msg_list,
1669 p_commit => l_commit,
1670 p_validation_level => fnd_api.g_valid_level_NONE,
1671 x_return_status => x_return_status,
1672 x_msg_count => x_msg_count,
1673 x_msg_data => x_msg_data,
1674 p_terr_all_rec => l_terr_all_rec,
1675 p_terr_usgs_tbl => l_terr_usgs_tbl,
1676 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
1677 p_terr_qual_tbl => l_terr_qual_tbl,
1678 p_terr_values_tbl => l_terr_values_tbl,
1679 x_terr_id => x_terr_id,
1680 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
1681 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
1682 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
1683 x_terr_values_out_tbl => x_terr_values_out_tbl
1684 );
1685
1686
1687
1688 /* BEGIN: Successful Territory creation? */
1689 if x_return_status = 'S' then
1690
1691 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID and CATCH_ALL_FLAG
1692 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
1693 UPDATE JTF_TERR_ALL
1694 set TERR_GROUP_FLAG = 'Y'
1695 , TERR_GROUP_ID = terr_group.TERR_GROUP_ID
1696 , CATCH_ALL_FLAG = 'N'
1697 , NAMED_ACCOUNT_FLAG = 'Y'
1698 , TERR_GROUP_ACCOUNT_ID = naterr.terr_group_account_id
1699 where terr_id = x_terr_id;
1700
1701 l_init_msg_list :=FND_API.G_TRUE;
1702 i := 0;
1703 a := 0;
1704
1705 FOR tran_type in role_interest_nonpi(terr_group.Terr_gROUP_ID)
1706 LOOP
1707 --dbms_output.put_line('tran_type.role_code '||tran_type.role_code);
1708
1709 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
1710 FOR rsc in resource_grp(naterr.terr_group_account_id,tran_type.role_code)
1711 loop
1712 i:=i+1;
1713
1714 SELECT JTF_TERR_RSC_S.nextval
1715 into l_terr_rsc_id
1716 FROM DUAL;
1717
1718 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
1719 l_TerrRsc_Tbl(i).TERR_RSC_ID :=l_terr_rsc_id;
1720 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE:=terr_group.LAST_UPDATE_DATE;
1721 l_TerrRsc_Tbl(i).LAST_UPDATED_BY:=terr_group.LAST_UPDATED_BY;
1722 l_TerrRsc_Tbl(i).CREATION_DATE:=terr_group.CREATION_DATE;
1723 l_TerrRsc_Tbl(i).CREATED_BY:=terr_group.CREATED_BY;
1724 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
1725 --l_TerrRsc_Tbl(i).TERR_ID:=terr_group.TERRITORY_ID;
1726 l_TerrRsc_Tbl(i).RESOURCE_ID:=rsc.resource_id;
1727 l_TerrRsc_Tbl(i).RESOURCE_TYPE:=rsc.rsc_resource_type;
1728 l_TerrRsc_Tbl(i).ROLE:=tran_type.role_code;
1729 --l_TerrRsc_Tbl(i).ROLE:=l_role;
1730 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG:='N';
1731 l_TerrRsc_Tbl(i).START_DATE_ACTIVE:=terr_group.active_from_date ;
1732 l_TerrRsc_Tbl(i).END_DATE_ACTIVE:=terr_group.active_to_date ;
1733 l_TerrRsc_Tbl(i).ORG_ID:=terr_group.ORG_ID;
1734 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG:='Y';
1735 l_TerrRsc_Tbl(i).GROUP_ID:=rsc.rsc_group_id;
1736 --dbms_output.put_line('rsc.resource_id '||rsc.resource_id);
1737
1738
1739 FOR rsc_acc in NON_OVLY_role_access(terr_group.terr_group_id,tran_type.role_code) LOOP
1740 --dbms_output.put_line('rsc_acc.access_type '||rsc_acc.access_type);
1741 a := a+1;
1742
1743 /* ACCOUNT ACCESS TYPE */
1744 IF (rsc_acc.access_type= 'ACCOUNT') THEN
1745
1746 SELECT JTF_TERR_RSC_ACCESS_S.nextval
1747 into l_terr_rsc_access_id
1748 FROM DUAL;
1749 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
1750 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
1751 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1752 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
1753 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
1754 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1755 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
1756 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'ACCOUNT';
1757 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
1758 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
1759
1760 /* OPPORTUNITY ACCESS TYPE */
1761 elsif rsc_acc.access_type= 'OPPORTUNITY' then
1762
1763 SELECT JTF_TERR_RSC_ACCESS_S.nextval
1764 into l_terr_rsc_access_id
1765 FROM DUAL;
1766 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
1767 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
1768 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1769 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
1770 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
1771 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1772 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
1773 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'OPPOR';
1774 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
1775 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
1776
1777
1778 /* LEAD ACCESS TYPE */
1779 elsif rsc_acc.access_type= 'LEAD' then
1780
1781 SELECT JTF_TERR_RSC_ACCESS_S.nextval
1782 into l_terr_rsc_access_id
1783 FROM DUAL;
1784 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
1785 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
1786 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1787 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
1788 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
1789 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1790 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
1791 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'LEAD';
1792 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
1793 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
1794 end if;
1795 end loop; /* FOR rsc_acc in NON_OVLY_role_access */
1796
1797 end loop; /* FOR rsc in resource_grp */
1798
1799 end loop;/* FOR tran_type in role_interest_nonpi */
1800
1801 l_init_msg_list :=FND_API.G_TRUE;
1802
1803 -- 07/08/03: JDOCHERT: bug#3023653
1804 jtf_territory_resource_pvt.create_terrresource (
1805 p_api_version_number => l_Api_Version_Number,
1806 p_init_msg_list => l_Init_Msg_List,
1807 p_commit => l_Commit,
1808 p_validation_level => fnd_api.g_valid_level_NONE,
1809 x_return_status => x_Return_Status,
1810 x_msg_count => x_Msg_Count,
1811 x_msg_data => x_msg_data,
1812 p_terrrsc_tbl => l_TerrRsc_tbl,
1813 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
1814 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
1815 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
1816 );
1817
1818 if x_Return_Status='S' then
1819 write_log(2,' Resource created for NA territory # ' ||x_terr_id);
1820 else
1821 x_msg_data := substr(fnd_msg_pub.get(1, fnd_api.g_false),1,254);
1822 write_log(2,x_msg_data);
1823 write_log(2, ' Failed in resource creation for NA territory # ' ||
1824 x_terr_id);
1825 end if;
1826
1827 else
1828 x_msg_data := substr(fnd_msg_pub.get(1, fnd_api.g_false),1,254);
1829 write_log(2,substr(x_msg_data,1,254));
1830 WRITE_LOG(2,'ERROR: NA TERRITORY CREATION FAILED ' ||
1831 'FOR NAMED_ACCOUNT_ID# ' || naterr.named_account_id );
1832 end if; /* END: Successful Territory creation? */
1833
1834 end loop; /* naterr in get_party_duns */
1835 END IF; /* ( terr_group.matching_rule_code IN ('3') THEN */
1836 /*************************************************************/
1837 /* (5) END: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
1838 /* USING DUNS# QUALIFIER */
1839 /*************************************************************/
1840
1841 /* dbms_output.put_line('terr_group.terr_group_name='||
1842 terr_group.terr_group_name);
1843 dbms_output.put_line('terr_group.matching_rule_code='||
1844 terr_group.matching_rule_code);*/
1845
1846 /***************************************************************/
1847 /* (6) START: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
1848 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
1849 /***************************************************************/
1850 IF ( terr_group.matching_rule_code IN ('1', '2') ) THEN
1851 FOR naterr in get_party_name(terr_group.terr_group_id) LOOP
1852
1853 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
1854 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
1855
1856 l_terr_qual_tbl := l_terr_qual_empty_tbl;
1857 l_terr_values_tbl := l_terr_values_empty_tbl;
1858
1859
1860 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
1861 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
1862
1863 /* TERRITORY HEADER */
1864 /* Ensure static TERR_ID to benefit TAP Performance */
1865 BEGIN
1866
1867 l_terr_exists := 0;
1868
1869 SELECT COUNT(*)
1870 INTO l_terr_exists
1871 FROM jtf_terr_all jt
1872 WHERE jt.terr_id = naterr.terr_group_account_id * -10000;
1873
1874 IF (l_terr_exists = 0) THEN
1875 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -10000;
1876 ELSE
1877 l_terr_all_rec.TERR_ID := NULL;
1878 END IF;
1879
1880 EXCEPTION
1881 WHEN NO_DATA_FOUND THEN
1882 l_terr_all_rec.TERR_ID := naterr.terr_group_account_id * -10000;
1883 END;
1884
1885 l_terr_all_rec.LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1886 l_terr_all_rec.LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1887 l_terr_all_rec.CREATION_DATE:= terr_group.CREATION_DATE;
1888 l_terr_all_rec.CREATED_BY := terr_group.CREATED_BY ;
1889 l_terr_all_rec.LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1890
1891 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
1892 l_terr_all_rec.NAME:= naterr.name;
1893 l_terr_all_rec.start_date_active := terr_group.active_from_date ;
1894 l_terr_all_rec.end_date_active := terr_group.active_to_date;
1895 l_terr_all_rec.PARENT_TERRITORY_ID:= l_nacat;
1896 l_terr_all_rec.RANK := terr_group.RANK + 20;
1897 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
1898 l_terr_all_rec.TEMPLATE_FLAG := 'N';
1899 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
1900 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
1901 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
1902 l_terr_all_rec.DESCRIPTION:= naterr.name;
1903 l_terr_all_rec.UPDATE_FLAG :='N';
1904 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
1905
1906 l_terr_all_rec.ORG_ID :=terr_group.ORG_ID ;
1907 l_terr_all_rec.NUM_WINNERS :=null ;
1908
1909
1910 /* Oracle Sales and Telesales Usage */
1911 SELECT JTF_TERR_USGS_S.nextval
1912 into l_terr_usg_id
1913 FROM DUAL;
1914
1915 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
1916 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1917 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1918 l_terr_usgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
1919 l_terr_usgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
1920 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
1921 l_terr_usgs_tbl(1).TERR_ID:= null;
1922 l_terr_usgs_tbl(1).SOURCE_ID:=-1001;
1923 l_terr_usgs_tbl(1).ORG_ID:= terr_group.ORG_ID;
1924 i:=0;
1925
1926 /* BEGIN: For each Access Type defined for the Territory Group */
1927 for acctype in get_NON_OVLY_na_trans(naterr.terr_group_account_id) LOOP
1928
1929 i:=i+1;
1930
1931 /* ACCOUNT TRANSACTION TYPE */
1932 if acctype.access_type='ACCOUNT' then
1933
1934 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1935 into l_terr_qtype_usg_id
1936 FROM DUAL;
1937 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
1938 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1939 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1940 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
1941 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
1942 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1943 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
1944 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1001;
1945 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
1946
1947 /* LEAD TRANSACTION TYPE */
1948 elsif acctype.access_type='LEAD' then
1949
1950 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1951 into l_terr_qtype_usg_id
1952 FROM DUAL;
1953 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
1954 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1955 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1956 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
1957 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
1958 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1959 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
1960 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1002;
1961 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
1962
1963 /* OPPORTUNITY TRANSACTION TYPE */
1964 elsif acctype.access_type='OPPORTUNITY' then
1965
1966 SELECT JTF_TERR_QTYPE_USGS_S.nextval
1967 into l_terr_qtype_usg_id
1968 FROM DUAL;
1969 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
1970 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
1971 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
1972 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
1973 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
1974 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
1975 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
1976 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1003;
1977 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
1978
1979 end if;
1980
1981 end loop;
1982 /* END: For each Access Type defined for the Territory Group */
1983
1984
1985 /*
1986 ** get Named Account Customer Keyname and Postal Code Mapping
1987 ** rules, to use as territory definition qualifier values
1988 */
1989 j:=0;
1990 K:=0;
1991 l_prev_qual_usg_id:=1;
1992 FOR qval IN match_rule1( naterr.named_account_id ) LOOP
1993
1994 /* new qualifier, i.e., Customer Name Range or Postal Code:
1995 ** driven by ORDER BY on p_qual */
1996 IF l_prev_qual_usg_id <> qval.qual_usg_id THEN
1997
1998 j:=j+1;
1999
2000 SELECT JTF_TERR_QUAL_S.nextval
2001 into l_terr_qual_id
2002 FROM DUAL;
2003
2004 l_terr_qual_tbl(j).TERR_QUAL_ID :=l_terr_qual_id;
2005 l_terr_qual_tbl(j).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2006 l_terr_qual_tbl(j).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2007 l_terr_qual_tbl(j).CREATION_DATE:= terr_group.CREATION_DATE;
2008 l_terr_qual_tbl(j).CREATED_BY := terr_group.CREATED_BY;
2009 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2010 l_terr_qual_tbl(j).TERR_ID:=null;
2011 l_terr_qual_tbl(j).QUAL_USG_ID :=qval.qual_usg_id;
2012 l_terr_qual_tbl(j).QUALIFIER_MODE:=NULL;
2013 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG:='N';
2014 l_terr_qual_tbl(j).USE_TO_NAME_FLAG:=NULL;
2015 l_terr_qual_tbl(j).GENERATE_FLAG:=NULL;
2016 l_terr_qual_tbl(j).ORG_ID:=terr_group.ORG_ID;
2017 l_prev_qual_usg_id:= qval.qual_usg_id;
2018
2019 END IF;
2020
2021 k:=k+1;
2022
2023 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
2024 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
2025 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
2026 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
2027 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
2028 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
2029 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
2030 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
2031 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
2032 l_terr_values_tbl(k).LOW_VALUE_CHAR:= qval.value1_char;
2033 l_terr_values_tbl(k).HIGH_VALUE_CHAR:=qval.value2_char;
2034 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
2035 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
2036 l_terr_values_tbl(k).VALUE_SET :=NULL;
2037 l_terr_values_tbl(k).INTEREST_TYPE_ID :=null;
2038 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
2039 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
2040 l_terr_values_tbl(k).CURRENCY_CODE :=null;
2041 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
2042 l_terr_values_tbl(k).ID_USED_FLAG :='N';
2043 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
2044
2045 l_terr_values_tbl(k).qualifier_tbl_index := j;
2046
2047 end loop; /* qval IN pqual */
2048
2049
2050 l_init_msg_list :=FND_API.G_TRUE;
2051
2052 -- 07/08/03: JDOCHERT: bug#3023653
2053 --mo_global.set_org_context(terr_group.ORG_ID,null);
2054 --
2055
2056 jtf_territory_pvt.create_territory (
2057 p_api_version_number => l_api_version_number,
2058 p_init_msg_list => l_init_msg_list,
2059 p_commit => l_commit,
2060 p_validation_level => fnd_api.g_valid_level_NONE,
2061 x_return_status => x_return_status,
2062 x_msg_count => x_msg_count,
2063 x_msg_data => x_msg_data,
2064 p_terr_all_rec => l_terr_all_rec,
2065 p_terr_usgs_tbl => l_terr_usgs_tbl,
2066 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
2067 p_terr_qual_tbl => l_terr_qual_tbl,
2068 p_terr_values_tbl => l_terr_values_tbl,
2069 x_terr_id => x_terr_id,
2070 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
2071 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
2072 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
2073 x_terr_values_out_tbl => x_terr_values_out_tbl
2074 );
2075
2076
2077
2078 /* BEGIN: Successful Territory creation? */
2079 if x_return_status = 'S' then
2080
2081 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID and CATCH_ALL_FLAG
2082 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
2083 UPDATE JTF_TERR_ALL
2084 set TERR_GROUP_FLAG = 'Y'
2085 , TERR_GROUP_ID = terr_group.TERR_GROUP_ID
2086 , CATCH_ALL_FLAG = 'N'
2087 , NAMED_ACCOUNT_FLAG = 'Y'
2088 , TERR_GROUP_ACCOUNT_ID = naterr.terr_group_account_id
2089 where terr_id = x_terr_id;
2090
2091 --write_log(2,terr_group.terr_group_id);
2092 --write_log(2,tran_type.role_code);
2093 l_init_msg_list :=FND_API.G_TRUE;
2094 i := 0;
2095 a := 0;
2096
2097 FOR tran_type in role_interest_nonpi(terr_group.Terr_gROUP_ID)
2098 LOOP
2099 --dbms_output.put_line('tran_type.role_code '||tran_type.role_code);
2100
2101 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
2102 FOR rsc in resource_grp(naterr.terr_group_account_id,tran_type.role_code)
2103 loop
2104 i:=i+1;
2105
2106 SELECT JTF_TERR_RSC_S.nextval
2107 into l_terr_rsc_id
2108 FROM DUAL;
2109
2110 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
2111 l_TerrRsc_Tbl(i).TERR_RSC_ID :=l_terr_rsc_id;
2112 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE:=terr_group.LAST_UPDATE_DATE;
2113 l_TerrRsc_Tbl(i).LAST_UPDATED_BY:=terr_group.LAST_UPDATED_BY;
2114 l_TerrRsc_Tbl(i).CREATION_DATE:=terr_group.CREATION_DATE;
2115 l_TerrRsc_Tbl(i).CREATED_BY:=terr_group.CREATED_BY;
2116 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
2117 --l_TerrRsc_Tbl(i).TERR_ID:=terr_group.TERRITORY_ID;
2118 l_TerrRsc_Tbl(i).RESOURCE_ID:=rsc.resource_id;
2119 l_TerrRsc_Tbl(i).RESOURCE_TYPE:=rsc.rsc_resource_type;
2120 l_TerrRsc_Tbl(i).ROLE:=tran_type.role_code;
2121 --l_TerrRsc_Tbl(i).ROLE:=l_role;
2122 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG:='N';
2123 l_TerrRsc_Tbl(i).START_DATE_ACTIVE:=terr_group.active_from_date ;
2124 l_TerrRsc_Tbl(i).END_DATE_ACTIVE:=terr_group.active_to_date ;
2125 l_TerrRsc_Tbl(i).ORG_ID:=terr_group.ORG_ID;
2126 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG:='Y';
2127 l_TerrRsc_Tbl(i).GROUP_ID:=rsc.rsc_group_id;
2128 --dbms_output.put_line('rsc.resource_id '||rsc.resource_id);
2129
2130
2131 FOR rsc_acc in NON_OVLY_role_access(terr_group.terr_group_id,tran_type.role_code) LOOP
2132 --dbms_output.put_line('rsc_acc.access_type '||rsc_acc.access_type);
2133 a := a+1;
2134
2135 /* ACCOUNT ACCESS TYPE */
2136 IF (rsc_acc.access_type= 'ACCOUNT') THEN
2137
2138 SELECT JTF_TERR_RSC_ACCESS_S.nextval
2139 into l_terr_rsc_access_id
2140 FROM DUAL;
2141 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
2142 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2143 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2144 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
2145 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
2146 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2147 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
2148 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'ACCOUNT';
2149 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
2150 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
2151
2152 /* OPPORTUNITY ACCESS TYPE */
2153 elsif rsc_acc.access_type= 'OPPORTUNITY' then
2154
2155 SELECT JTF_TERR_RSC_ACCESS_S.nextval
2156 into l_terr_rsc_access_id
2157 FROM DUAL;
2158 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
2159 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2160 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2161 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
2162 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
2163 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2164 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
2165 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'OPPOR';
2166 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
2167 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
2168
2169
2170 /* LEAD ACCESS TYPE */
2171 elsif rsc_acc.access_type= 'LEAD' then
2172
2173 SELECT JTF_TERR_RSC_ACCESS_S.nextval
2174 into l_terr_rsc_access_id
2175 FROM DUAL;
2176 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
2177 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2178 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2179 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
2180 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
2181 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2182 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
2183 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'LEAD';
2184 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
2185 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
2186 end if;
2187 end loop; /* FOR rsc_acc in NON_OVLY_role_access */
2188
2189 end loop; /* FOR rsc in resource_grp */
2190
2191 end loop;/* FOR tran_type in role_interest_nonpi */
2192
2193 l_init_msg_list :=FND_API.G_TRUE;
2194
2195 -- 07/08/03: JDOCHERT: bug#3023653
2196 jtf_territory_resource_pvt.create_terrresource (
2197 p_api_version_number => l_Api_Version_Number,
2198 p_init_msg_list => l_Init_Msg_List,
2199 p_commit => l_Commit,
2200 p_validation_level => fnd_api.g_valid_level_NONE,
2201 x_return_status => x_Return_Status,
2202 x_msg_count => x_Msg_Count,
2203 x_msg_data => x_msg_data,
2204 p_terrrsc_tbl => l_TerrRsc_tbl,
2205 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
2206 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
2207 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
2208 );
2209
2210 if x_Return_Status='S' then
2211 write_log(2,' Resource created for NA territory # ' ||x_terr_id);
2212 else
2213 x_msg_data := substr(fnd_msg_pub.get(1, fnd_api.g_false),1,254);
2214 write_log(2,x_msg_data);
2215 write_log(2, ' Failed in resource creation for NA territory # ' ||
2216 x_terr_id);
2217 end if;
2218
2219 else
2220 x_msg_data := substr(fnd_msg_pub.get(1, fnd_api.g_false),1,254);
2221 write_log(2,substr(x_msg_data,1,254));
2222 WRITE_LOG(2,'ERROR: NA TERRITORY CREATION FAILED ' ||
2223 'FOR NAMED_ACCOUNT_ID# ' || naterr.named_account_id );
2224 end if; /* END: Successful Territory creation? */
2225
2226 end loop; /* naterr in get_party_name */
2227 END IF; /* terr_group.matching_rule_code IN ('1', '2') THEN */
2228 /*************************************************************/
2229 /* (6) END: CREATE NA TERRITORIES FOR NAs IN TERRITORY GROUP */
2230 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
2231 /*************************************************************/
2232
2233 /********************************************************/
2234 /* delete the role and access */
2235 /********************************************************/
2236 if l_ovnon_flag = 'Y' then
2237
2238 for i in l_overnon_role_tbl.first.. l_overnon_role_tbl.last
2239 loop
2240 delete from jtf_tty_terr_grp_roles
2241 where TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
2242 --dbms_output.put_line('deleted');
2243 delete from jtf_tty_role_access
2244 where TERR_GROUP_ROLE_ID=l_overnon_role_tbl(i).grp_role_id;
2245 end loop;
2246 end if;
2247
2248
2249 -- end if;
2250 /* END: if Territory Group exists with Named Accounts
2251 ** then auto-create territory definitions */
2252
2253
2254
2255 /*********************************************************************/
2256 /*********************************************************************/
2257 /************** OVERLAY TERRITORY CREATION ***************************/
2258 /*********************************************************************/
2259 /*********************************************************************/
2260
2261 /* if any role with PI and Account access and no non pi role exist */
2262 /* we need to create a new branch with Named Account */
2263 /* OVERLAY BRANCH */
2264
2265 BEGIN
2266
2267 SELECT COUNT( DISTINCT b.role_code )
2268 into l_pi_count
2269 from jtf_rs_roles_vl r
2270 , jtf_tty_role_prod_int a
2271 , jtf_tty_terr_grp_roles b
2272 where r.role_code = b.role_code
2273 and a.terr_group_role_id = b.terr_group_role_id
2274 and b.terr_group_id = TERR_GROUP.TERR_GROUP_ID
2275 AND EXISTS (
2276 /* Named Account exists with Salesperson with this role */
2277 SELECT NULL
2278 FROM jtf_tty_named_acct_rsc nar, jtf_tty_terr_grp_accts tga
2279 WHERE tga.terr_group_account_id = nar.terr_group_account_id
2280 AND tga.terr_group_id = b.terr_group_id
2281 AND nar.rsc_role_code = b.role_code )
2282 AND ROWNUM < 2;
2283
2284 EXCEPTION
2285 WHEN OTHERS THEN
2286 NUll;
2287 END;
2288
2289
2290 /* are there overlay roles, i.e., are there roles with Product
2291 ** Interests defined for this Territory Group */
2292 if l_pi_count > 0 then
2293
2294 /***************************************************************/
2295 /* (7) START: CREATE TOP-LEVEL TERRITORY FOR OVERLAY BRANCH OF */
2296 /* TERRITORY GROUP */
2297 /***************************************************************/
2298 FOR topt in topterr(terr_group.PARENT_TERR_ID) LOOP
2299
2300 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
2301 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
2302 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
2303 l_terr_values_tbl:=l_terr_values_empty_tbl;
2304 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
2305 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
2306
2307 l_terr_all_rec.TERR_ID := null;
2308 l_terr_all_rec.LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2309 l_terr_all_rec.LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2310 l_terr_all_rec.CREATION_DATE:= terr_group.CREATION_DATE;
2311 l_terr_all_rec.CREATED_BY := terr_group.CREATED_BY ;
2312 l_terr_all_rec.LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2313
2314 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
2315 l_terr_all_rec.NAME:= terr_group.terr_group_name || ' (OVERLAY)';
2316 l_terr_all_rec.start_date_active := terr_group.active_from_date ;
2317 l_terr_all_rec.end_date_active := terr_group.active_to_date;
2318 l_terr_all_rec.PARENT_TERRITORY_ID:= topt.PARENT_TERRITORY_ID;
2319 l_terr_all_rec.RANK := topt.RANK;
2320 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
2321 l_terr_all_rec.TEMPLATE_FLAG := 'N';
2322 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
2323 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
2324 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
2325 l_terr_all_rec.DESCRIPTION:= topt.DESCRIPTION;
2326 l_terr_all_rec.UPDATE_FLAG :='N';
2327 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
2328
2329 l_terr_all_rec.ORG_ID :=terr_group.ORG_ID ;
2330 l_terr_all_rec.NUM_WINNERS :=l_pi_count ;
2331
2332 /* ORACLE SALES AND TELESALES USAGE */
2333 SELECT JTF_TERR_USGS_S.nextval
2334 into l_terr_usg_id
2335 FROM DUAL;
2336
2337 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
2338 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2339 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2340 l_terr_usgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
2341 l_terr_usgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
2342 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
2343 l_terr_usgs_tbl(1).TERR_ID:= null;
2344 l_terr_usgs_tbl(1).SOURCE_ID:=-1001;
2345 l_terr_usgs_tbl(1).ORG_ID:= terr_group.ORG_ID;
2346
2347
2348 /* LEAD TRANSACTION TYPE */
2349 SELECT JTF_TERR_QTYPE_USGS_S.nextval
2350 into l_terr_qtype_usg_id
2351 FROM DUAL;
2352
2353 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
2354 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2355 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2356 l_terr_qualtypeusgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
2357 l_terr_qualtypeusgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
2358 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2359 l_terr_qualtypeusgs_tbl(1).TERR_ID:= null;
2360 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID:=-1002;
2361 l_terr_qualtypeusgs_tbl(1).ORG_ID:=terr_group.ORG_ID;
2362
2363 /* OPPORTUNITY TRANSACTION TYPE */
2364 SELECT JTF_TERR_QTYPE_USGS_S.nextval
2365 into l_terr_qtype_usg_id
2366 FROM DUAL;
2367
2368 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
2369 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2370 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2371 l_terr_qualtypeusgs_tbl(2).CREATION_DATE:= terr_group.CREATION_DATE;
2372 l_terr_qualtypeusgs_tbl(2).CREATED_BY := terr_group.CREATED_BY;
2373 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2374 l_terr_qualtypeusgs_tbl(2).TERR_ID:= null;
2375 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID:=-1003;
2376 l_terr_qualtypeusgs_tbl(2).ORG_ID:=terr_group.ORG_ID;
2377
2378
2379 /*
2380 ** get Top-Level Parent's Qualifier and values and
2381 ** aad them to Overlay branch top-level territory
2382 */
2383 j:=0;
2384 k:=0;
2385 l_prev_qual_usg_id:=1;
2386 FOR csr_qual IN csr_get_qual ( topt.terr_id ) LOOP
2387
2388 j:=j+1;
2389
2390 SELECT JTF_TERR_QUAL_S.nextval
2391 INTO l_terr_qual_id
2392 FROM DUAL;
2393
2394 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
2395 l_terr_qual_tbl(j).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2396 l_terr_qual_tbl(j).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2397 l_terr_qual_tbl(j).CREATION_DATE:= terr_group.CREATION_DATE;
2398 l_terr_qual_tbl(j).CREATED_BY := terr_group.CREATED_BY;
2399 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2400 l_terr_qual_tbl(j).TERR_ID:= null;
2401
2402 /* Top_level Parent's Qualifier */
2403 l_terr_qual_tbl(j).QUAL_USG_ID := csr_qual.qual_usg_id;
2404
2405 l_terr_qual_tbl(j).QUALIFIER_MODE:= NULL;
2406 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG:='Y';
2407 l_terr_qual_tbl(j).USE_TO_NAME_FLAG:=NULL;
2408 l_terr_qual_tbl(j).GENERATE_FLAG:=NULL;
2409 l_terr_qual_tbl(j).ORG_ID:=terr_group.ORG_ID;
2410
2411
2412 FOR csr_qual_val IN csr_get_qual_val (csr_qual.terr_qual_id) LOOP
2413
2414 k:=k+1;
2415
2416 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
2417 l_terr_values_tbl(k).LAST_UPDATED_BY := G_USER_ID;
2418 l_terr_values_tbl(k).LAST_UPDATE_DATE:= G_SYSDATE;
2419 l_terr_values_tbl(k).CREATED_BY := G_USER_ID;
2420 l_terr_values_tbl(k).CREATION_DATE:= G_SYSDATE;
2421 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= G_LOGIN_ID;
2422
2423 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
2424
2425 l_terr_values_tbl(k).INCLUDE_FLAG := csr_qual_val.INCLUDE_FLAG;
2426 l_terr_values_tbl(k).COMPARISON_OPERATOR := csr_qual_val.COMPARISON_OPERATOR;
2427 l_terr_values_tbl(k).LOW_VALUE_CHAR := csr_qual_val.LOW_VALUE_CHAR;
2428 l_terr_values_tbl(k).HIGH_VALUE_CHAR := csr_qual_val.HIGH_VALUE_CHAR;
2429 l_terr_values_tbl(k).LOW_VALUE_NUMBER := csr_qual_val.LOW_VALUE_NUMBER;
2430 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := csr_qual_val.HIGH_VALUE_NUMBER;
2431 l_terr_values_tbl(k).VALUE_SET := csr_qual_val.VALUE_SET;
2432 l_terr_values_tbl(k).INTEREST_TYPE_ID := csr_qual_val.INTEREST_TYPE_ID;
2433 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := csr_qual_val.PRIMARY_INTEREST_CODE_ID;
2434 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := csr_qual_val.SECONDARY_INTEREST_CODE_ID;
2435 l_terr_values_tbl(k).CURRENCY_CODE := csr_qual_val.CURRENCY_CODE;
2436 l_terr_values_tbl(k).ID_USED_FLAG := csr_qual_val.ID_USED_FLAG;
2437 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := csr_qual_val.LOW_VALUE_CHAR_ID;
2438
2439 l_terr_values_tbl(k).ORG_ID := terr_group.org_id;
2440
2441 /* What Qualifier Values relate to Qualifier */
2442 l_terr_values_tbl(k).qualifier_tbl_index := j;
2443
2444
2445 END LOOP; /* csr_qual_val IN csr_get_qual_val */
2446 end loop; /* csr_qual IN csr_get_qual */
2447
2448
2449 l_init_msg_list :=FND_API.G_TRUE;
2450
2451 -- 07/08/03: JDOCHERT: bug#3023653
2452 --mo_global.set_org_context(terr_group.ORG_ID,null);
2453 --
2454 jtf_territory_pvt.create_territory (
2455 p_api_version_number => l_api_version_number,
2456 p_init_msg_list => l_init_msg_list,
2457 p_commit => l_commit,
2458 p_validation_level => fnd_api.g_valid_level_NONE,
2459 x_return_status => x_return_status,
2460 x_msg_count => x_msg_count,
2461 x_msg_data => x_msg_data,
2462 p_terr_all_rec => l_terr_all_rec,
2463 p_terr_usgs_tbl => l_terr_usgs_tbl,
2464 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
2465 p_terr_qual_tbl => l_terr_qual_tbl,
2466 p_terr_values_tbl => l_terr_values_tbl,
2467 x_terr_id => x_terr_id,
2468 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
2469 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
2470 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
2471 x_terr_values_out_tbl => x_terr_values_out_tbl
2472 );
2473
2474
2475 if x_return_status = 'S' then
2476
2477 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
2478 UPDATE JTF_TERR_ALL
2479 set TERR_GROUP_FLAG = 'Y'
2480 , TERR_GROUP_ID = terr_group.TERR_GROUP_ID
2481 where terr_id = x_terr_id;
2482
2483 end if;
2484
2485 l_overlay_top :=x_terr_id;
2486
2487 end loop;/* top level territory */
2488 /***************************************************************/
2489 /* (7) END: CREATE TOP-LEVEL TERRITORY FOR OVERLAY BRANCH OF */
2490 /* TERRITORY GROUP */
2491 /***************************************************************/
2492
2493
2494 /***************************************************************/
2495 /* (8) START: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
2496 /* USING DUNS# QUALIFIER */
2497 /***************************************************************/
2498 IF ( terr_group.matching_rule_code IN ('2', '3') ) THEN
2499
2500 FOR overlayterr in get_OVLY_party_duns(terr_group.terr_group_id) LOOP
2501
2502 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
2503 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
2504 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
2505 l_terr_values_tbl:=l_terr_values_empty_tbl;
2506 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
2507 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
2508
2509 l_terr_all_rec.TERR_ID := null;
2510 l_terr_all_rec.LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2511 l_terr_all_rec.LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2512 l_terr_all_rec.CREATION_DATE:= terr_group.CREATION_DATE;
2513 l_terr_all_rec.CREATED_BY := terr_group.CREATED_BY ;
2514 l_terr_all_rec.LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2515
2516 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
2517 l_terr_all_rec.NAME:= overlayterr.name || ' (OVERLAY DUNS#)';
2518 l_terr_all_rec.start_date_active := terr_group.active_from_date ;
2519 l_terr_all_rec.end_date_active := terr_group.active_to_date;
2520 l_terr_all_rec.PARENT_TERRITORY_ID:= l_overlay_top;
2521 l_terr_all_rec.RANK := terr_group.RANK + 10;
2522 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
2523 l_terr_all_rec.TEMPLATE_FLAG := 'N';
2524 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
2525 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
2526 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
2527 l_terr_all_rec.DESCRIPTION:= overlayterr.name || ' (OVERLAY_DUNS#)';
2528 l_terr_all_rec.UPDATE_FLAG :='N';
2529 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
2530
2531 l_terr_all_rec.ORG_ID :=terr_group.ORG_ID ;
2532 l_terr_all_rec.NUM_WINNERS :=null ;
2533
2534
2535 SELECT JTF_TERR_USGS_S.nextval
2536 into l_terr_usg_id
2537 FROM DUAL;
2538
2539 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
2540 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2541 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2542 l_terr_usgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
2543 l_terr_usgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
2544 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
2545 l_terr_usgs_tbl(1).TERR_ID:= null;
2546 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
2547 l_terr_usgs_tbl(1).ORG_ID:= terr_group.ORG_ID;
2548
2549 SELECT JTF_TERR_QTYPE_USGS_S.nextval
2550 into l_terr_qtype_usg_id
2551 FROM DUAL;
2552
2553 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
2554 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2555 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2556 l_terr_qualtypeusgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
2557 l_terr_qualtypeusgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
2558 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2559 l_terr_qualtypeusgs_tbl(1).TERR_ID:= null;
2560 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID:=-1002;
2561 l_terr_qualtypeusgs_tbl(1).ORG_ID:=terr_group.ORG_ID;
2562
2563 SELECT JTF_TERR_QTYPE_USGS_S.nextval
2564 into l_terr_qtype_usg_id
2565 FROM DUAL;
2566
2567 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
2568 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2569 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2570 l_terr_qualtypeusgs_tbl(2).CREATION_DATE:= terr_group.CREATION_DATE;
2571 l_terr_qualtypeusgs_tbl(2).CREATED_BY := terr_group.CREATED_BY;
2572 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2573 l_terr_qualtypeusgs_tbl(2).TERR_ID:= null;
2574 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID:=-1003;
2575 l_terr_qualtypeusgs_tbl(2).ORG_ID:=terr_group.ORG_ID;
2576
2577 SELECT JTF_TERR_QUAL_S.nextval
2578 into l_terr_qual_id
2579 FROM DUAL;
2580
2581 j:=0;
2582 K:=0;
2583 l_prev_qual_usg_id:=1;
2584
2585 for qval in match_rule3(overlayterr.named_account_id)
2586 loop
2587
2588 if l_prev_qual_usg_id <> qval.qual_usg_id then
2589
2590 j:=j+1;
2591 SELECT JTF_TERR_QUAL_S.nextval
2592 into l_terr_qual_id
2593 FROM DUAL;
2594
2595 l_terr_qual_tbl(j).TERR_QUAL_ID :=l_terr_qual_id;
2596 l_terr_qual_tbl(j).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2597 l_terr_qual_tbl(j).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2598 l_terr_qual_tbl(j).CREATION_DATE:= terr_group.CREATION_DATE;
2599 l_terr_qual_tbl(j).CREATED_BY := terr_group.CREATED_BY;
2600 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2601 l_terr_qual_tbl(j).TERR_ID:=null;
2602 l_terr_qual_tbl(j).QUAL_USG_ID :=qval.qual_usg_id;
2603 l_terr_qual_tbl(j).QUALIFIER_MODE:=NULL;
2604 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG:='N';
2605 l_terr_qual_tbl(j).USE_TO_NAME_FLAG:=NULL;
2606 l_terr_qual_tbl(j).GENERATE_FLAG:=NULL;
2607 l_terr_qual_tbl(j).ORG_ID:=terr_group.ORG_ID;
2608 l_prev_qual_usg_id:= qval.qual_usg_id;
2609 end if;
2610
2611 k:=k+1;
2612
2613 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
2614
2615 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
2616 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
2617 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
2618 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
2619 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
2620 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
2621 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
2622 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
2623 l_terr_values_tbl(k).LOW_VALUE_CHAR:= qval.value1_char;
2624 l_terr_values_tbl(k).HIGH_VALUE_CHAR:= NULL;
2625 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
2626 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
2627 l_terr_values_tbl(k).VALUE_SET :=NULL;
2628 l_terr_values_tbl(k).INTEREST_TYPE_ID :=null;
2629 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
2630 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
2631 l_terr_values_tbl(k).CURRENCY_CODE :=null;
2632 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
2633 l_terr_values_tbl(k).ID_USED_FLAG :='N';
2634 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
2635
2636
2637 l_terr_values_tbl(k).qualifier_tbl_index := j;
2638
2639 end loop;
2640
2641 l_init_msg_list :=FND_API.G_TRUE;
2642
2643 -- 07/08/03: JDOCHERT: bug#3023653
2644 --mo_global.set_org_context(terr_group.ORG_ID,null);
2645 --
2646
2647 jtf_territory_pvt.create_territory (
2648 p_api_version_number => l_api_version_number,
2649 p_init_msg_list => l_init_msg_list,
2650 p_commit => l_commit,
2651 p_validation_level => fnd_api.g_valid_level_NONE,
2652 x_return_status => x_return_status,
2653 x_msg_count => x_msg_count,
2654 x_msg_data => x_msg_data,
2655 p_terr_all_rec => l_terr_all_rec,
2656 p_terr_usgs_tbl => l_terr_usgs_tbl,
2657 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
2658 p_terr_qual_tbl => l_terr_qual_tbl,
2659 p_terr_values_tbl => l_terr_values_tbl,
2660 x_terr_id => x_terr_id,
2661 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
2662 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
2663 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
2664 x_terr_values_out_tbl => x_terr_values_out_tbl
2665 );
2666
2667
2668 if x_return_status = 'S' then
2669
2670 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
2671 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
2672 UPDATE JTF_TERR_ALL
2673 set TERR_GROUP_FLAG = 'Y'
2674 , TERR_GROUP_ID = terr_group.TERR_GROUP_ID
2675 , NAMED_ACCOUNT_FLAG = 'Y'
2676 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
2677 where terr_id = x_terr_id;
2678
2679 l_overlay:=x_terr_id;
2680
2681 for pit in role_pi(terr_group.terr_group_id, overlayterr.terr_group_account_id) loop
2682
2683
2684 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
2685 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
2686 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
2687 l_terr_values_tbl:=l_terr_values_empty_tbl;
2688 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
2689 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
2690
2691 l_role_counter := l_role_counter + 1;
2692
2693 l_terr_all_rec.TERR_ID := overlayterr.terr_group_account_id * -30 * l_role_counter;
2694 l_terr_all_rec.LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2695 l_terr_all_rec.LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2696 l_terr_all_rec.CREATION_DATE:= terr_group.CREATION_DATE;
2697 l_terr_all_rec.CREATED_BY := terr_group.CREATED_BY ;
2698 l_terr_all_rec.LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2699
2700 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
2701
2702 l_terr_all_rec.NAME:= overlayterr.name || ': ' ||
2703 pit.role_name || ' (OVERLAY DUNS#)';
2704
2705 l_terr_all_rec.start_date_active := terr_group.active_from_date ;
2706 l_terr_all_rec.end_date_active := terr_group.active_to_date;
2707 l_terr_all_rec.PARENT_TERRITORY_ID:= l_overlay;
2708 l_terr_all_rec.RANK := terr_group.RANK+10;
2709 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
2710 l_terr_all_rec.TEMPLATE_FLAG := 'N';
2711 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
2712 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
2713 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
2714
2715 l_terr_all_rec.DESCRIPTION:= overlayterr.name || ': ' ||
2716 pit.role_name || ' (OVERLAY DUNS#)';
2717
2718 l_terr_all_rec.UPDATE_FLAG :='N';
2719 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
2720
2721 l_terr_all_rec.ORG_ID :=terr_group.ORG_ID ;
2722 l_terr_all_rec.NUM_WINNERS :=null ;
2723
2724 SELECT JTF_TERR_USGS_S.nextval
2725 into l_terr_usg_id
2726 FROM DUAL;
2727
2728 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
2729 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2730 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2731 l_terr_usgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
2732 l_terr_usgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
2733 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
2734 l_terr_usgs_tbl(1).TERR_ID:= null;
2735 l_terr_usgs_tbl(1).SOURCE_ID:=-1001;
2736 l_terr_usgs_tbl(1).ORG_ID:= terr_group.ORG_ID;
2737
2738 i := 0;
2739 K:= 0;
2740 for acc_type in role_access(terr_group.terr_group_id,pit.role_code) loop
2741 --i:=i+1;
2742 --dbms_output.put_line('acc type '||acc_type.access_type);
2743 if acc_type.access_type= 'OPPORTUNITY' then
2744 i:=i+1;
2745 SELECT JTF_TERR_QTYPE_USGS_S.nextval
2746 into l_terr_qtype_usg_id
2747 FROM DUAL;
2748
2749 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
2750 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2751 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2752 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
2753 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
2754 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2755 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
2756 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1003;
2757 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
2758
2759 SELECT JTF_TERR_QUAL_S.nextval
2760 into l_terr_qual_id
2761 FROM DUAL;
2762 /* opp expected purchase */
2763
2764 l_terr_qual_tbl(i).TERR_QUAL_ID :=l_terr_qual_id;
2765 l_terr_qual_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2766 l_terr_qual_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2767 l_terr_qual_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
2768 l_terr_qual_tbl(i).CREATED_BY := terr_group.CREATED_BY;
2769 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2770 l_terr_qual_tbl(i).TERR_ID:=null;
2771 l_terr_qual_tbl(i).QUAL_USG_ID :=-1023;
2772 l_terr_qual_tbl(i).QUALIFIER_MODE:=NULL;
2773 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG:='N';
2774 l_terr_qual_tbl(i).USE_TO_NAME_FLAG:=NULL;
2775 l_terr_qual_tbl(i).GENERATE_FLAG:=NULL;
2776 l_terr_qual_tbl(i).ORG_ID:=terr_group.ORG_ID;
2777
2778 for qval in role_pi_interest(terr_group.terr_group_id,pit.role_code) loop
2779 k:=k+1;
2780
2781 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
2782
2783 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
2784 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
2785 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
2786 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
2787 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
2788 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
2789 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
2790 l_terr_values_tbl(k).COMPARISON_OPERATOR :='=';
2791 l_terr_values_tbl(k).LOW_VALUE_CHAR:= null;
2792 l_terr_values_tbl(k).HIGH_VALUE_CHAR:=null;
2793 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
2794 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
2795 l_terr_values_tbl(k).VALUE_SET :=NULL;
2796 l_terr_values_tbl(k).INTEREST_TYPE_ID :=qval.interest_type_id;
2797 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
2798 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
2799 l_terr_values_tbl(k).CURRENCY_CODE :=null;
2800 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
2801 l_terr_values_tbl(k).ID_USED_FLAG :='N';
2802 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
2803
2804 l_terr_values_tbl(k).qualifier_tbl_index := i;
2805
2806 end loop;
2807
2808 elsif acc_type.access_type= 'LEAD' then
2809
2810 i:=i+1;
2811 SELECT JTF_TERR_QTYPE_USGS_S.nextval
2812 into l_terr_qtype_usg_id
2813 FROM DUAL;
2814
2815 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
2816 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
2817 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2818 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
2819 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
2820 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2821 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
2822 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1002;
2823 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
2824
2825 SELECT JTF_TERR_QUAL_S.nextval
2826 into l_terr_qual_id
2827 FROM DUAL;
2828
2829 /* lead expected purchase */
2830 l_terr_qual_tbl(i).TERR_QUAL_ID :=l_terr_qual_id;
2831 l_terr_qual_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2832 l_terr_qual_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2833 l_terr_qual_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
2834 l_terr_qual_tbl(i).CREATED_BY := terr_group.CREATED_BY;
2835 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2836 l_terr_qual_tbl(i).TERR_ID:=null;
2837 l_terr_qual_tbl(i).QUAL_USG_ID :=-1018;
2838 l_terr_qual_tbl(i).QUALIFIER_MODE:=NULL;
2839 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG:='N';
2840 l_terr_qual_tbl(i).USE_TO_NAME_FLAG:=NULL;
2841 l_terr_qual_tbl(i).GENERATE_FLAG:=NULL;
2842 l_terr_qual_tbl(i).ORG_ID:=terr_group.ORG_ID;
2843
2844 for qval in role_pi_interest(terr_group.terr_group_id,pit.role_code) loop
2845
2846 k:=k+1;
2847
2848 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
2849
2850 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
2851 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
2852 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
2853 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
2854 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
2855 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
2856 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
2857 l_terr_values_tbl(k).COMPARISON_OPERATOR :='=';
2858 l_terr_values_tbl(k).LOW_VALUE_CHAR:= null;
2859 l_terr_values_tbl(k).HIGH_VALUE_CHAR:=null;
2860 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
2861 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
2862 l_terr_values_tbl(k).VALUE_SET :=NULL;
2863 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
2864 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
2865 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
2866 l_terr_values_tbl(k).CURRENCY_CODE :=null;
2867 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
2868 l_terr_values_tbl(k).ID_USED_FLAG :='N';
2869 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
2870
2871
2872 l_terr_values_tbl(k).qualifier_tbl_index := i;
2873
2874 end loop;
2875
2876 else
2877 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||terr_group.terr_group_id);
2878 --l_terr_qualtypeusgs_tbl(1).ORG_ID:=terr_group.ORG_ID;
2879 end if;
2880
2881 end loop;
2882
2883 l_init_msg_list :=FND_API.G_TRUE;
2884
2885 -- 07/08/03: JDOCHERT: bug#3023653
2886 --mo_global.set_org_context(terr_group.ORG_ID,null);
2887 --
2888
2889 jtf_territory_pvt.create_territory (
2890 p_api_version_number => l_api_version_number,
2891 p_init_msg_list => l_init_msg_list,
2892 p_commit => l_commit,
2893 p_validation_level => fnd_api.g_valid_level_NONE,
2894 x_return_status => x_return_status,
2895 x_msg_count => x_msg_count,
2896 x_msg_data => x_msg_data,
2897 p_terr_all_rec => l_terr_all_rec,
2898 p_terr_usgs_tbl => l_terr_usgs_tbl,
2899 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
2900 p_terr_qual_tbl => l_terr_qual_tbl,
2901 p_terr_values_tbl => l_terr_values_tbl,
2902 x_terr_id => x_terr_id,
2903 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
2904 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
2905 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
2906 x_terr_values_out_tbl => x_terr_values_out_tbl
2907 );
2908
2909 if (x_return_status = 'S') then
2910
2911 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
2912 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
2913 UPDATE JTF_TERR_ALL
2914 set TERR_GROUP_FLAG = 'Y'
2915 , TERR_GROUP_ID = terr_group.TERR_GROUP_ID
2916 , NAMED_ACCOUNT_FLAG = 'Y'
2917 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
2918 where terr_id = x_terr_id;
2919
2920
2921 write_log(2,' OVERLAY PI Territory Created = '||l_terr_all_rec.NAME);
2922
2923 else
2924 x_msg_data := fnd_msg_pub.get(1, fnd_api.g_false);
2925 write_log(2,x_msg_data);
2926 write_log(2, 'Failed in OVERLAY PI Territory Creation for TERR_GROUP_ACCOUNT_ID#'||
2927 overlayterr.terr_group_account_id);
2928
2929 end if;
2930
2931
2932 --dbms_output.put_line('pit.role '||pit.role_code);
2933 i:=0;
2934
2935 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
2936 for rsc in resource_grp(overlayterr.terr_group_account_id,pit.role_code) loop
2937
2938 i:=i+1;
2939
2940 SELECT JTF_TERR_RSC_S.nextval
2941 into l_terr_rsc_id
2942 FROM DUAL;
2943
2944 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
2945 l_TerrRsc_Tbl(i).TERR_RSC_ID :=l_terr_rsc_id;
2946 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE:=terr_group.LAST_UPDATE_DATE;
2947 l_TerrRsc_Tbl(i).LAST_UPDATED_BY:=terr_group.LAST_UPDATED_BY;
2948 l_TerrRsc_Tbl(i).CREATION_DATE:=terr_group.CREATION_DATE;
2949 l_TerrRsc_Tbl(i).CREATED_BY:=terr_group.CREATED_BY;
2950 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
2951 --l_TerrRsc_Tbl(i).TERR_ID:=terr_group.TERRITORY_ID;
2952 l_TerrRsc_Tbl(i).RESOURCE_ID:=rsc.resource_id;
2953 l_TerrRsc_Tbl(i).RESOURCE_TYPE:=rsc.rsc_resource_type;
2954 l_TerrRsc_Tbl(i).ROLE:=pit.role_code;
2955 --l_TerrRsc_Tbl(i).ROLE:=l_role;
2956 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG:='N';
2957 l_TerrRsc_Tbl(i).START_DATE_ACTIVE:=terr_group.active_from_date ;
2958 l_TerrRsc_Tbl(i).END_DATE_ACTIVE:=terr_group.active_to_date ;
2959 l_TerrRsc_Tbl(i).ORG_ID:=terr_group.ORG_ID;
2960 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG:='Y';
2961 l_TerrRsc_Tbl(i).GROUP_ID:=rsc.rsc_group_id;
2962
2963
2964 a := 0;
2965
2966 for rsc_acc in role_access(terr_group.terr_group_id,pit.role_code) loop
2967
2968 /**
2969 a := a+1; -- JDOCHERT: 05/28/03: put a := a+1; inside 2*IF statements
2970 -- that follow: ACCOUNT access should not be given for
2971 -- Product Overlay territories
2972 --
2973 if rsc_acc.access_type= 'ACCOUNT' then
2974
2975 SELECT JTF_TERR_RSC_ACCESS_S.nextval
2976 into l_terr_rsc_access_id
2977 FROM DUAL;
2978 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
2979 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
2980 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
2981 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
2982 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
2983 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
2984 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
2985 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'ACCOUNT';
2986 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
2987 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
2988
2989 els
2990 **/
2991
2992 if rsc_acc.access_type= 'OPPORTUNITY' then
2993
2994 a := a+1;
2995
2996 SELECT JTF_TERR_RSC_ACCESS_S.nextval
2997 into l_terr_rsc_access_id
2998 FROM DUAL;
2999
3000 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
3001 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
3002 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3003 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
3004 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
3005 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3006 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
3007 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'OPPOR';
3008 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
3009 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
3010
3011 elsif rsc_acc.access_type= 'LEAD' then
3012
3013 a := a+1;
3014
3015 SELECT JTF_TERR_RSC_ACCESS_S.nextval
3016 into l_terr_rsc_access_id
3017 FROM DUAL;
3018
3019 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
3020 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
3021 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3022 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
3023 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
3024 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3025 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
3026 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'LEAD';
3027 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
3028 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
3029 end if;
3030 end loop; /* rsc_acc in role_access */
3031
3032 l_init_msg_list :=FND_API.G_TRUE;
3033
3034 -- 07/08/03: JDOCHERT: bug#3023653
3035 jtf_territory_resource_pvt.create_terrresource (
3036 p_api_version_number => l_Api_Version_Number,
3037 p_init_msg_list => l_Init_Msg_List,
3038 p_commit => l_Commit,
3039 p_validation_level => fnd_api.g_valid_level_NONE,
3040 x_return_status => x_Return_Status,
3041 x_msg_count => x_Msg_Count,
3042 x_msg_data => x_msg_data,
3043 p_terrrsc_tbl => l_TerrRsc_tbl,
3044 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
3045 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
3046 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
3047 );
3048
3049 if x_Return_Status='S' then
3050 write_log(2,'Resource created for Product Interest OVERLAY Territory '||l_terr_all_rec.NAME);
3051 else
3052 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '||
3053 x_terr_id);
3054 end if;
3055
3056 end loop; /* rsc in resource_grp */
3057
3058 end loop;
3059
3060 else
3061 x_msg_data := fnd_msg_pub.get(1, fnd_api.g_false);
3062 write_log(2,x_msg_data);
3063 write_log(2,'Failed in OVERLAY Territory Creation for Territory Group: ' ||
3064 terr_group.terr_group_id || ' : ' ||
3065 terr_group.terr_group_name );
3066 end if; /* if (x_return_status = 'S' */
3067 end loop; /* overlayterr in get_OVLY_party_duns */
3068 END IF; /* ( terr_group.matching_rule_code IN ('2','3') THEN */
3069 /***************************************************************/
3070 /* (8) END: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
3071 /* USING DUNS# QUALIFIER */
3072 /***************************************************************/
3073
3074
3075 /***************************************************************/
3076 /* (9) START: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
3077 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
3078 /***************************************************************/
3079 IF ( terr_group.matching_rule_code IN ('1', '2') ) THEN
3080
3081 for overlayterr in get_OVLY_party_name(terr_group.terr_group_id) loop
3082
3083 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
3084 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
3085 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
3086 l_terr_values_tbl:=l_terr_values_empty_tbl;
3087 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
3088 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
3089
3090 l_terr_all_rec.TERR_ID := null;
3091 l_terr_all_rec.LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
3092 l_terr_all_rec.LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3093 l_terr_all_rec.CREATION_DATE:= terr_group.CREATION_DATE;
3094 l_terr_all_rec.CREATED_BY := terr_group.CREATED_BY ;
3095 l_terr_all_rec.LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3096
3097 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
3098 l_terr_all_rec.NAME:= overlayterr.name || ' (OVERLAY)';
3099 l_terr_all_rec.start_date_active := terr_group.active_from_date ;
3100 l_terr_all_rec.end_date_active := terr_group.active_to_date;
3101 l_terr_all_rec.PARENT_TERRITORY_ID:= l_overlay_top;
3102 l_terr_all_rec.RANK := terr_group.RANK + 20;
3103 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
3104 l_terr_all_rec.TEMPLATE_FLAG := 'N';
3105 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
3106 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
3107 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
3108 l_terr_all_rec.DESCRIPTION:= overlayterr.name || ' (OVERLAY)';
3109 l_terr_all_rec.UPDATE_FLAG :='N';
3110 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
3111
3112 l_terr_all_rec.ORG_ID :=terr_group.ORG_ID ;
3113 l_terr_all_rec.NUM_WINNERS :=null ;
3114
3115
3116 SELECT JTF_TERR_USGS_S.nextval
3117 into l_terr_usg_id
3118 FROM DUAL;
3119
3120 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
3121 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
3122 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3123 l_terr_usgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
3124 l_terr_usgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
3125 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
3126 l_terr_usgs_tbl(1).TERR_ID:= null;
3127 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
3128 l_terr_usgs_tbl(1).ORG_ID:= terr_group.ORG_ID;
3129
3130 SELECT JTF_TERR_QTYPE_USGS_S.nextval
3131 into l_terr_qtype_usg_id
3132 FROM DUAL;
3133
3134 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
3135 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
3136 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3137 l_terr_qualtypeusgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
3138 l_terr_qualtypeusgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
3139 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3140 l_terr_qualtypeusgs_tbl(1).TERR_ID:= null;
3141 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID:=-1002;
3142 l_terr_qualtypeusgs_tbl(1).ORG_ID:=terr_group.ORG_ID;
3143
3144 SELECT JTF_TERR_QTYPE_USGS_S.nextval
3145 into l_terr_qtype_usg_id
3146 FROM DUAL;
3147
3148 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
3149 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
3150 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3151 l_terr_qualtypeusgs_tbl(2).CREATION_DATE:= terr_group.CREATION_DATE;
3152 l_terr_qualtypeusgs_tbl(2).CREATED_BY := terr_group.CREATED_BY;
3153 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3154 l_terr_qualtypeusgs_tbl(2).TERR_ID:= null;
3155 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID:=-1003;
3156 l_terr_qualtypeusgs_tbl(2).ORG_ID:=terr_group.ORG_ID;
3157
3158 SELECT JTF_TERR_QUAL_S.nextval
3159 into l_terr_qual_id
3160 FROM DUAL;
3161
3162 j:=0;
3163 K:=0;
3164 l_prev_qual_usg_id:=1;
3165
3166 for qval in match_rule1(overlayterr.named_account_id)
3167 loop
3168
3169 if l_prev_qual_usg_id <> qval.qual_usg_id then
3170
3171 j:=j+1;
3172 SELECT JTF_TERR_QUAL_S.nextval
3173 into l_terr_qual_id
3174 FROM DUAL;
3175
3176 l_terr_qual_tbl(j).TERR_QUAL_ID :=l_terr_qual_id;
3177 l_terr_qual_tbl(j).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
3178 l_terr_qual_tbl(j).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3179 l_terr_qual_tbl(j).CREATION_DATE:= terr_group.CREATION_DATE;
3180 l_terr_qual_tbl(j).CREATED_BY := terr_group.CREATED_BY;
3181 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3182 l_terr_qual_tbl(j).TERR_ID:=null;
3183 l_terr_qual_tbl(j).QUAL_USG_ID :=qval.qual_usg_id;
3184 l_terr_qual_tbl(j).QUALIFIER_MODE:=NULL;
3185 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG:='N';
3186 l_terr_qual_tbl(j).USE_TO_NAME_FLAG:=NULL;
3187 l_terr_qual_tbl(j).GENERATE_FLAG:=NULL;
3188 l_terr_qual_tbl(j).ORG_ID:=terr_group.ORG_ID;
3189 l_prev_qual_usg_id:= qval.qual_usg_id;
3190 end if;
3191
3192 k:=k+1;
3193
3194 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
3195
3196 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
3197 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
3198 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
3199 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
3200 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
3201 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
3202 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
3203 l_terr_values_tbl(k).COMPARISON_OPERATOR := qval.COMPARISON_OPERATOR;
3204 l_terr_values_tbl(k).LOW_VALUE_CHAR:= qval.value1_char;
3205 l_terr_values_tbl(k).HIGH_VALUE_CHAR:= qval.value2_char;
3206 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
3207 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
3208 l_terr_values_tbl(k).VALUE_SET :=NULL;
3209 l_terr_values_tbl(k).INTEREST_TYPE_ID :=null;
3210 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
3211 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
3212 l_terr_values_tbl(k).CURRENCY_CODE :=null;
3213 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
3214 l_terr_values_tbl(k).ID_USED_FLAG :='N';
3215 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
3216
3217
3218 l_terr_values_tbl(k).qualifier_tbl_index := j;
3219
3220 end loop;
3221
3222 l_init_msg_list :=FND_API.G_TRUE;
3223
3224 -- 07/08/03: JDOCHERT: bug#3023653
3225 --mo_global.set_org_context(terr_group.ORG_ID,null);
3226 --
3227
3228 jtf_territory_pvt.create_territory (
3229 p_api_version_number => l_api_version_number,
3230 p_init_msg_list => l_init_msg_list,
3231 p_commit => l_commit,
3232 p_validation_level => fnd_api.g_valid_level_NONE,
3233 x_return_status => x_return_status,
3234 x_msg_count => x_msg_count,
3235 x_msg_data => x_msg_data,
3236 p_terr_all_rec => l_terr_all_rec,
3237 p_terr_usgs_tbl => l_terr_usgs_tbl,
3238 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
3239 p_terr_qual_tbl => l_terr_qual_tbl,
3240 p_terr_values_tbl => l_terr_values_tbl,
3241 x_terr_id => x_terr_id,
3242 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
3243 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
3244 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
3245 x_terr_values_out_tbl => x_terr_values_out_tbl
3246 );
3247
3248 write_log(2,' OVERLAY Territory Created,territory_id# '||x_terr_id);
3249
3250
3251 if x_return_status = 'S' then
3252
3253 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
3254 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
3255 UPDATE JTF_TERR_ALL
3256 set TERR_GROUP_FLAG = 'Y'
3257 , TERR_GROUP_ID = terr_group.TERR_GROUP_ID
3258 , NAMED_ACCOUNT_FLAG = 'Y'
3259 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
3260 where terr_id = x_terr_id;
3261
3262 l_overlay:=x_terr_id;
3263
3264 for pit in role_pi( terr_group.terr_group_id
3265 , overlayterr.terr_group_account_id) LOOP
3266
3267 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
3268 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
3269 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
3270 l_terr_values_tbl:=l_terr_values_empty_tbl;
3271 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
3272 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
3273
3274 l_role_counter := l_role_counter + 1;
3275
3276 l_terr_all_rec.TERR_ID := overlayterr.terr_group_account_id * -40 * l_role_counter;
3277 l_terr_all_rec.LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
3278 l_terr_all_rec.LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3279 l_terr_all_rec.CREATION_DATE:= terr_group.CREATION_DATE;
3280 l_terr_all_rec.CREATED_BY := terr_group.CREATED_BY ;
3281 l_terr_all_rec.LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3282
3283 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
3284
3285 l_terr_all_rec.NAME:= overlayterr.name || ' ' || pit.role_name || ' (OVERLAY)';
3286
3287 l_terr_all_rec.start_date_active := terr_group.active_from_date ;
3288 l_terr_all_rec.end_date_active := terr_group.active_to_date;
3289 l_terr_all_rec.PARENT_TERRITORY_ID:= l_overlay;
3290 l_terr_all_rec.RANK := terr_group.RANK+10;
3291 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
3292 l_terr_all_rec.TEMPLATE_FLAG := 'N';
3293 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
3294 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
3295 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
3296 l_terr_all_rec.DESCRIPTION:= pit.role_code||' '||overlayterr.name||' (OVERLAY)';
3297 l_terr_all_rec.UPDATE_FLAG :='N';
3298 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
3299
3300 l_terr_all_rec.ORG_ID :=terr_group.ORG_ID ;
3301 l_terr_all_rec.NUM_WINNERS :=null ;
3302
3303 SELECT JTF_TERR_USGS_S.nextval
3304 into l_terr_usg_id
3305 FROM DUAL;
3306
3307 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
3308 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
3309 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3310 l_terr_usgs_tbl(1).CREATION_DATE:= terr_group.CREATION_DATE;
3311 l_terr_usgs_tbl(1).CREATED_BY := terr_group.CREATED_BY;
3312 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
3313 l_terr_usgs_tbl(1).TERR_ID:= null;
3314 l_terr_usgs_tbl(1).SOURCE_ID:=-1001;
3315 l_terr_usgs_tbl(1).ORG_ID:= terr_group.ORG_ID;
3316
3317 i := 0;
3318 K:= 0;
3319 for acc_type in role_access(terr_group.terr_group_id,pit.role_code) loop
3320 --i:=i+1;
3321 --dbms_output.put_line('acc type '||acc_type.access_type);
3322 if acc_type.access_type= 'OPPORTUNITY' then
3323 i:=i+1;
3324 SELECT JTF_TERR_QTYPE_USGS_S.nextval
3325 into l_terr_qtype_usg_id
3326 FROM DUAL;
3327
3328 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
3329 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
3330 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3331 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
3332 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
3333 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3334 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
3335 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1003;
3336 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
3337
3338 SELECT JTF_TERR_QUAL_S.nextval
3339 into l_terr_qual_id
3340 FROM DUAL;
3341 /* opp expected purchase */
3342
3343 l_terr_qual_tbl(i).TERR_QUAL_ID :=l_terr_qual_id;
3344 l_terr_qual_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
3345 l_terr_qual_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3346 l_terr_qual_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
3347 l_terr_qual_tbl(i).CREATED_BY := terr_group.CREATED_BY;
3348 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3349 l_terr_qual_tbl(i).TERR_ID:=null;
3350 l_terr_qual_tbl(i).QUAL_USG_ID :=-1023;
3351 l_terr_qual_tbl(i).QUALIFIER_MODE:=NULL;
3352 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG:='N';
3353 l_terr_qual_tbl(i).USE_TO_NAME_FLAG:=NULL;
3354 l_terr_qual_tbl(i).GENERATE_FLAG:=NULL;
3355 l_terr_qual_tbl(i).ORG_ID:=terr_group.ORG_ID;
3356
3357 for qval in role_pi_interest(terr_group.terr_group_id,pit.role_code) loop
3358 k:=k+1;
3359
3360 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
3361
3362 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
3363 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
3364 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
3365 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
3366 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
3367 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
3368 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
3369 l_terr_values_tbl(k).COMPARISON_OPERATOR :='=';
3370 l_terr_values_tbl(k).LOW_VALUE_CHAR:= null;
3371 l_terr_values_tbl(k).HIGH_VALUE_CHAR:=null;
3372 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
3373 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
3374 l_terr_values_tbl(k).VALUE_SET :=NULL;
3375 l_terr_values_tbl(k).INTEREST_TYPE_ID :=qval.interest_type_id;
3376 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
3377 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
3378 l_terr_values_tbl(k).CURRENCY_CODE :=null;
3379 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
3380 l_terr_values_tbl(k).ID_USED_FLAG :='N';
3381 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
3382
3383 l_terr_values_tbl(k).qualifier_tbl_index := i;
3384
3385 end loop;
3386
3387 elsif acc_type.access_type= 'LEAD' then
3388
3389 i:=i+1;
3390 SELECT JTF_TERR_QTYPE_USGS_S.nextval
3391 into l_terr_qtype_usg_id
3392 FROM DUAL;
3393
3394 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
3395 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE;
3396 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3397 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
3398 l_terr_qualtypeusgs_tbl(i).CREATED_BY := terr_group.CREATED_BY;
3399 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3400 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
3401 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1002;
3402 l_terr_qualtypeusgs_tbl(i).ORG_ID:=terr_group.ORG_ID;
3403
3404 SELECT JTF_TERR_QUAL_S.nextval
3405 into l_terr_qual_id
3406 FROM DUAL;
3407
3408 /* lead expected purchase */
3409 l_terr_qual_tbl(i).TERR_QUAL_ID :=l_terr_qual_id;
3410 l_terr_qual_tbl(i).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
3411 l_terr_qual_tbl(i).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3412 l_terr_qual_tbl(i).CREATION_DATE:= terr_group.CREATION_DATE;
3413 l_terr_qual_tbl(i).CREATED_BY := terr_group.CREATED_BY;
3414 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3415 l_terr_qual_tbl(i).TERR_ID:=null;
3416 l_terr_qual_tbl(i).QUAL_USG_ID :=-1018;
3417 l_terr_qual_tbl(i).QUALIFIER_MODE:=NULL;
3418 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG:='N';
3419 l_terr_qual_tbl(i).USE_TO_NAME_FLAG:=NULL;
3420 l_terr_qual_tbl(i).GENERATE_FLAG:=NULL;
3421 l_terr_qual_tbl(i).ORG_ID:=terr_group.ORG_ID;
3422
3423 for qval in role_pi_interest(terr_group.terr_group_id,pit.role_code) loop
3424
3425 k:=k+1;
3426
3427 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
3428
3429 l_terr_values_tbl(k).LAST_UPDATED_BY := terr_group.last_UPDATED_BY;
3430 l_terr_values_tbl(k).LAST_UPDATE_DATE:= terr_group.last_UPDATE_DATE;
3431 l_terr_values_tbl(k).CREATED_BY := terr_group.CREATED_BY;
3432 l_terr_values_tbl(k).CREATION_DATE:= terr_group.CREATION_DATE;
3433 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= terr_group.last_UPDATE_LOGIN;
3434 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
3435 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
3436 l_terr_values_tbl(k).COMPARISON_OPERATOR :='=';
3437 l_terr_values_tbl(k).LOW_VALUE_CHAR:= null;
3438 l_terr_values_tbl(k).HIGH_VALUE_CHAR:=null;
3439 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
3440 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
3441 l_terr_values_tbl(k).VALUE_SET :=NULL;
3442 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
3443 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
3444 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
3445 l_terr_values_tbl(k).CURRENCY_CODE :=null;
3446 l_terr_values_tbl(k).ORG_ID :=terr_group.ORG_ID;
3447 l_terr_values_tbl(k).ID_USED_FLAG :='N';
3448 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
3449
3450
3451 l_terr_values_tbl(k).qualifier_tbl_index := i;
3452
3453 end loop;
3454
3455 else
3456 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||terr_group.terr_group_id);
3457 --l_terr_qualtypeusgs_tbl(1).ORG_ID:=terr_group.ORG_ID;
3458 end if;
3459
3460 end loop;
3461
3462 l_init_msg_list :=FND_API.G_TRUE;
3463
3464 -- 07/08/03: JDOCHERT: bug#3023653
3465 --mo_global.set_org_context(terr_group.ORG_ID,null);
3466 --
3467
3468 --mo_global.set_org_context(204,null);
3469 --AS_UTILITY_PVT.file_debug(' winners # '||terr_group.NUM_WINNERS);
3470 --AS_UTILITY_PVT.file_debug(' migration of territory_group # '||terr_group.TERRITORY_GROUP_ID);
3471 jtf_territory_pvt.create_territory (
3472 p_api_version_number => l_api_version_number,
3473 p_init_msg_list => l_init_msg_list,
3474 p_commit => l_commit,
3475 p_validation_level => fnd_api.g_valid_level_NONE,
3476 x_return_status => x_return_status,
3477 x_msg_count => x_msg_count,
3478 x_msg_data => x_msg_data,
3479 p_terr_all_rec => l_terr_all_rec,
3480 p_terr_usgs_tbl => l_terr_usgs_tbl,
3481 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
3482 p_terr_qual_tbl => l_terr_qual_tbl,
3483 p_terr_values_tbl => l_terr_values_tbl,
3484 x_terr_id => x_terr_id,
3485 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
3486 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
3487 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
3488 x_terr_values_out_tbl => x_terr_values_out_tbl
3489 );
3490
3491 IF (x_return_status = 'S') THEN
3492
3493 -- JDOCHERT: 01/08/03: Added TERR_GROUP_ID
3494 -- and NAMED_ACCOUNT_FLAG and TERR_GROUP_ACCOUNT_ID
3495 UPDATE JTF_TERR_ALL
3496 set TERR_GROUP_FLAG = 'Y'
3497 , TERR_GROUP_ID = terr_group.TERR_GROUP_ID
3498 , NAMED_ACCOUNT_FLAG = 'Y'
3499 , TERR_GROUP_ACCOUNT_ID = overlayterr.terr_group_account_id
3500 where terr_id = x_terr_id;
3501
3502
3503 write_log(2,' OVERLAY CNR territory created:' || l_terr_all_rec.NAME);
3504
3505 else
3506 x_msg_data := fnd_msg_pub.get(1, fnd_api.g_false);
3507 write_log(2,x_msg_data);
3508 write_log(2,'Failed in OVERLAY CNR territory treation for ' ||
3509 'TERR_GROUP_ACCOUNT_ID = ' ||
3510 overlayterr.terr_group_account_id );
3511
3512 end if; /* IF (x_return_status = 'S') */
3513
3514
3515 --dbms_output.put_line('pit.role '||pit.role_code);
3516 i:=0;
3517
3518 /* JRADHAKR changed the parameter from l_terr_group_id to l_terr_group_acct_id */
3519 for rsc in resource_grp( overlayterr.terr_group_account_id
3520 , pit.role_code) loop
3521
3522 i:=i+1;
3523
3524 SELECT JTF_TERR_RSC_S.nextval
3525 into l_terr_rsc_id
3526 FROM DUAL;
3527
3528 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
3529 l_TerrRsc_Tbl(i).TERR_RSC_ID :=l_terr_rsc_id;
3530 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE:=terr_group.LAST_UPDATE_DATE;
3531 l_TerrRsc_Tbl(i).LAST_UPDATED_BY:=terr_group.LAST_UPDATED_BY;
3532 l_TerrRsc_Tbl(i).CREATION_DATE:=terr_group.CREATION_DATE;
3533 l_TerrRsc_Tbl(i).CREATED_BY:=terr_group.CREATED_BY;
3534 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN:=terr_group.LAST_UPDATE_LOGIN;
3535 --l_TerrRsc_Tbl(i).TERR_ID:=terr_group.TERRITORY_ID;
3536 l_TerrRsc_Tbl(i).RESOURCE_ID:=rsc.resource_id;
3537 l_TerrRsc_Tbl(i).RESOURCE_TYPE:=rsc.rsc_resource_type;
3538 l_TerrRsc_Tbl(i).ROLE:=pit.role_code;
3539 --l_TerrRsc_Tbl(i).ROLE:=l_role;
3540 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG:='N';
3541 l_TerrRsc_Tbl(i).START_DATE_ACTIVE:=terr_group.active_from_date ;
3542 l_TerrRsc_Tbl(i).END_DATE_ACTIVE:=terr_group.active_to_date ;
3543 l_TerrRsc_Tbl(i).ORG_ID:=terr_group.ORG_ID;
3544 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG:='Y';
3545 l_TerrRsc_Tbl(i).GROUP_ID:=rsc.rsc_group_id;
3546
3547
3548 a := 0;
3549
3550 for rsc_acc in role_access(terr_group.terr_group_id,pit.role_code) loop
3551
3552 /**
3553 a := a+1; -- JDOCHERT: 05/28/03: put a := a+1; inside 2*IF statements
3554 -- that follow: ACCOUNT access should not be given for
3555 -- Product Overlay territories
3556 --
3557 if rsc_acc.access_type= 'ACCOUNT' then
3558
3559 SELECT JTF_TERR_RSC_ACCESS_S.nextval
3560 into l_terr_rsc_access_id
3561 FROM DUAL;
3562 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
3563 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
3564 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3565 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
3566 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
3567 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3568 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
3569 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'ACCOUNT';
3570 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
3571 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
3572
3573 els
3574 **/
3575
3576 if rsc_acc.access_type= 'OPPORTUNITY' then
3577
3578 a := a+1;
3579
3580 SELECT JTF_TERR_RSC_ACCESS_S.nextval
3581 into l_terr_rsc_access_id
3582 FROM DUAL;
3583
3584 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
3585 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
3586 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3587 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
3588 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
3589 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3590 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
3591 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'OPPOR';
3592 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
3593 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
3594
3595 elsif rsc_acc.access_type= 'LEAD' then
3596
3597 a := a+1;
3598
3599 SELECT JTF_TERR_RSC_ACCESS_S.nextval
3600 into l_terr_rsc_access_id
3601 FROM DUAL;
3602
3603 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
3604 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= terr_group.LAST_UPDATE_DATE ;
3605 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= terr_group.LAST_UPDATED_BY;
3606 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= terr_group.CREATION_DATE;
3607 l_TerrRsc_Access_Tbl(a).CREATED_BY := terr_group.CREATED_BY;
3608 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= terr_group.LAST_UPDATE_LOGIN;
3609 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
3610 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'LEAD';
3611 l_TerrRsc_Access_Tbl(a).ORG_ID:= terr_group.ORG_ID;
3612 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
3613 end if;
3614 end loop; /* rsc_acc in role_access */
3615
3616 l_init_msg_list :=FND_API.G_TRUE;
3617
3618 -- 07/08/03: JDOCHERT: bug#3023653
3619 jtf_territory_resource_pvt.create_terrresource (
3620 p_api_version_number => l_Api_Version_Number,
3621 p_init_msg_list => l_Init_Msg_List,
3622 p_commit => l_Commit,
3623 p_validation_level => fnd_api.g_valid_level_NONE,
3624 x_return_status => x_Return_Status,
3625 x_msg_count => x_Msg_Count,
3626 x_msg_data => x_msg_data,
3627 p_terrrsc_tbl => l_TerrRsc_tbl,
3628 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
3629 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
3630 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
3631 );
3632
3633 if x_Return_Status='S' then
3634 write_log(2,'Resource created for Product Interest OVERLAY Territory# '||
3635 x_terr_id);
3636 else
3637 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '||
3638 x_terr_id);
3639 end if;
3640
3641 end loop; /* rsc in resource_grp */
3642
3643 end loop;
3644
3645 else
3646 x_msg_data := fnd_msg_pub.get(1, fnd_api.g_false);
3647 write_log(2,x_msg_data);
3648 write_log(2,'Failed in OVERLAY Territory Creation for Territory Group: ' ||
3649 terr_group.terr_group_id || ' : ' ||
3650 terr_group.terr_group_name );
3651 end if;
3652
3653 end loop; /* for overlayterr in get_OVLY_party_name */
3654 END IF; /* IF ( terr_group.matching_rule_code IN ('1', '2') ) THEN */
3655 /***************************************************************/
3656 /* (9) END: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
3657 /* USING CUSTOMER NAME RANGE AND POSTAL CODE QUALIFIERS */
3658 /***************************************************************/
3659
3660
3661
3662
3663 end if; /* l_pi_count*/
3664
3665 else ---if TERR_GROUP.self_service_type = 'GEOGRAPHY' then
3666
3667 l_terr_group_rec.TERR_GROUP_ID := terr_group.TERR_GROUP_ID;
3668 l_terr_group_rec.TERR_GROUP_NAME := terr_group.TERR_GROUP_NAME;
3669 l_terr_group_rec.RANK := terr_group.RANK;
3670 l_terr_group_rec.ACTIVE_FROM_DATE := terr_group.ACTIVE_FROM_DATE;
3671 l_terr_group_rec.ACTIVE_TO_DATE := terr_group.ACTIVE_TO_DATE;
3672 l_terr_group_rec.PARENT_TERR_ID := L_NACAT;
3673 l_terr_group_rec.MATCHING_RULE_CODE := terr_group.MATCHING_RULE_CODE;
3674 l_terr_group_rec.CREATED_BY := terr_group.CREATED_BY;
3675 l_terr_group_rec.CREATION_DATE := terr_group.CREATION_DATE;
3676 l_terr_group_rec.LAST_UPDATED_BY := terr_group.LAST_UPDATED_BY;
3677 l_terr_group_rec.LAST_UPDATE_DATE := terr_group.LAST_UPDATE_DATE;
3678 l_terr_group_rec.LAST_UPDATE_LOGIN := terr_group.LAST_UPDATE_LOGIN;
3679 -- l_terr_group_rec.Catch_all_resource_id := terr_group.Catch_all_resource_id;
3680 -- l_terr_group_rec.catch_all_resource_type := terr_group.catch_all_resource_type;
3681 l_terr_group_rec.generate_catchall_flag := terr_group.generate_catchall_flag;
3682 l_terr_group_rec.NUM_WINNERS := terr_group.NUM_WINNERS;
3683
3684 create_geography_territory
3685 ( p_terr_group_rec => l_terr_group_rec
3686 , p_org_id => terr_group.org_id
3687 , x_return_status => l_return_status
3688 , x_error_message => l_error_message
3689 );
3690
3691 end if; /* self_service_type */
3692 end if;
3693
3694 commit;
3695
3696 write_log(2, '');
3697 write_log(2,'END: Territory Creation for Territory Group: ' ||
3698 terr_group.terr_group_id || ' : ' ||
3699 terr_group.terr_group_name );
3700 write_log(2, '');
3701 write_log(2, '----------------------------------------------------------');
3702
3703 END LOOP;
3704 /****************************************************
3705 ** (2) END: CREATE NAMED ACCOUNT TERRITORY CREATION
3706 ** FOR EACH TERRITORY GROUP
3707 *****************************************************/
3708
3709 /* JDOCHERT: 07/09/03:
3710 ** START: Disable triggers in
3711 ** TOTAL mode */
3712 IF (p_mode = 'TOTAL') THEN
3713 alter_triggers(p_status => 'ENABLE');
3714 END IF;
3715
3716 END generate_named_overlay_terr;
3717
3718
3719 PROCEDURE create_geography_territory
3720 ( p_terr_group_rec IN TERR_GRP_REC_TYPE
3721 , p_org_id IN NUMBER
3722 , x_return_status OUT NOCOPY VARCHAR2
3723 , x_error_message OUT NOCOPY VARCHAR2
3724 ) IS
3725
3726 l_terr_all_rec JTF_TERRITORY_PVT.terr_all_rec_type;
3727 l_terr_usgs_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
3728 l_terr_qualtypeusgs_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
3729 l_terr_qual_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
3730 l_terr_values_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
3731
3732 l_TerrRsc_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrResource_tbl_type;
3733 l_TerrRsc_Access_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrRsc_Access_tbl_type ;
3734 l_TerrRsc_empty_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrResource_tbl_type;
3735 l_TerrRsc_Access_empty_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrRsc_Access_tbl_type ;
3736
3737 l_terr_usgs_empty_tbl JTF_TERRITORY_PVT.terr_usgs_tbl_type;
3738 l_terr_qualtypeusgs_empty_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_tbl_type;
3739 l_terr_qual_empty_tbl JTF_TERRITORY_PVT.terr_qual_tbl_type;
3740 l_terr_values_empty_tbl JTF_TERRITORY_PVT.terr_values_tbl_type;
3741
3742
3743 i NUMBER;
3744 j NUMBER;
3745 k NUMBER;
3746 a NUMBER;
3747
3748 l_terr_qual_id NUMBER;
3749 l_id_used_flag VARCHAR2(1);
3750 l_low_value_char_id NUMBER;
3751 l_qual_usgs_id NUMBER;
3752 l_terr_usg_id NUMBER;
3753 l_qual_type_usg_id NUMBER;
3754 l_terr_qtype_usg_id NUMBER;
3755 l_terr_type_usg_id NUMBER;
3756 l_type_qtype_usg_id NUMBER;
3757 l_terr_rsc_id NUMBER;
3758 l_terr_rsc_access_id NUMBER;
3759 l_access_type VARCHAR2(30);
3760 l_api_version_number CONSTANT NUMBER := 1.0;
3761 l_init_msg_list varchar2(1);
3762 l_commit varchar2(1);
3763
3764 l_overlay_top number;
3765 l_overlay number;
3766 l_role_counter NUMBER := 0;
3767
3768 l_pi_count NUMBER := 0;
3769 l_prev_qual_usg_id NUMBER;
3770
3771 x_terr_usgs_out_tbl JTF_TERRITORY_PVT.terr_usgs_out_tbl_type;
3772 x_terr_qualtypeusgs_out_tbl JTF_TERRITORY_PVT.terr_qualtypeusgs_out_tbl_type;
3773 x_terr_qual_out_tbl JTF_TERRITORY_PVT.terr_qual_out_tbl_type;
3774 x_terr_values_out_tbl JTF_TERRITORY_PVT.terr_values_out_tbl_type;
3775 x_TerrRsc_Out_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrResource_out_tbl_type;
3776 x_TerrRsc_Access_Out_Tbl JTF_TERRITORY_RESOURCE_PVT.TerrRsc_Access_out_tbl_type;
3777
3778 x_terr_id NUMBER;
3779 x_msg_count number;
3780 x_msg_data varchar2(2000);
3781
3782
3783 /* get all the geographies for a given territory group id
3784 */
3785
3786 CURSOR geo_territories( l_terr_group_id number) IS
3787 SELECT gterr.geo_territory_id
3788 , gterr.geo_terr_name
3789 FROM jtf_tty_geo_terr gterr
3790 WHERE gterr.terr_group_id = l_terr_group_id;
3791
3792 /** Transaction Types for a NON-OVERLAY territory are
3793 ** determined by all salesteam members on this geography territories
3794 ** having Roles without Product Interests defined
3795 ** so there is no Overlay Territories to assign
3796 ** Leads and Opportunities. If all Roles have Product Interests
3797 ** then only ACCOUNT transaction type should
3798 ** be used in Non-Overlay Named Account definition
3799 */
3800 CURSOR get_NON_OVLY_geo_trans(l_geo_territory_id NUMBER) IS
3801 SELECT ra.access_type
3802 FROM
3803 JTF_TTY_GEO_TERR_RSC grsc
3804 , jtf_tty_terr_grp_roles tgr
3805 , jtf_tty_role_access ra
3806 WHERE grsc.GEO_TERRITORY_ID = l_geo_territory_id
3807 AND grsc.rsc_role_code = tgr.role_code
3808 AND ra.terr_group_role_id = tgr.terr_group_role_id
3809 AND ra.access_type IN ('ACCOUNT')
3810 UNION
3811 SELECT ra.access_type
3812 FROM
3813 JTF_TTY_GEO_TERR_RSC grsc
3814 , jtf_tty_terr_grp_roles tgr
3815 , jtf_tty_role_access ra
3816 WHERE grsc.GEO_TERRITORY_ID = l_geo_territory_id
3817 AND grsc.rsc_role_code = tgr.role_code
3818 AND ra.terr_group_role_id = tgr.terr_group_role_id
3819 AND NOT EXISTS (
3820 SELECT NULL
3821 FROM jtf_tty_role_prod_int rpi
3822 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id );
3823
3824 /* same sql used in geography download to Excel
3825 This query will find out all the postal codes
3826 for a given geography territoy.
3827 Also if the geography territory is for a territory
3828 group it will find out the postal codes
3829 looking at country, state, city or posta code
3830 associated with the territory group */
3831
3832 CURSOR geo_values(l_geo_territory_id number) IS
3833 SELECT -1007 qual_usg_id
3834 , '=' comparison_operator
3835 , main.postal_code value1_char
3836 , main.geo_territory_id
3837 from(
3838 /* postal code */
3839 select g.postal_code postal_code,
3840 g.geo_id geo_id
3841 , terr.geo_territory_id
3842 from jtf_tty_geo_grp_values grpv,
3843 jtf_tty_terr_groups tg,
3844 jtf_tty_geo_terr terr,
3845 jtf_tty_geographies g --postal_code level
3846 where terr.terr_group_id = tg.terr_group_id
3847 and terr.terr_group_id = grpv.terr_group_id
3848 and terr.owner_resource_id < 0
3849 and terr.parent_geo_terr_id < 0 -- default terr
3850 and ( (
3851 grpv.geo_type = 'POSTAL_CODE'
3852 and grpv.comparison_operator = '='
3853 and g.geo_id = grpv.geo_id_from
3854 and g.geo_type = 'POSTAL_CODE'
3855 )
3856 or
3857 (
3858 grpv.geo_type = 'POSTAL_CODE'
3859 and grpv.comparison_operator = 'BETWEEN'
3860 and g.geo_type = 'POSTAL_CODE'
3861 and g.geo_id between grpv.geo_id_from and grpv.geo_id_to
3862 )
3863 )
3864 union
3865 select g.postal_code postal_code,
3866 g.geo_id geo_id
3867 , terr.geo_territory_id
3868 from jtf_tty_geo_grp_values grpv,
3869 jtf_tty_terr_groups tg,
3870 jtf_tty_geo_terr terr,
3871 jtf_tty_geographies g,
3872 jtf_tty_geographies g1
3873 where terr.terr_group_id = tg.terr_group_id
3874 and terr.terr_group_id = grpv.terr_group_id
3875 and terr.owner_resource_id < 0
3876 and terr.parent_geo_terr_id < 0 -- default terr
3877 and (
3878 (
3879 grpv.geo_type = 'STATE'
3880 and g1.geo_id = grpv.geo_id_from
3881 and g.STATE_CODE = g1.state_Code
3882 and g.country_code = g1.country_Code
3883 and g.geo_type = 'POSTAL_CODE'
3884 )
3885 or
3886 ( grpv.geo_type = 'CITY'
3887 AND g.geo_type = 'POSTAL_CODE'
3888 AND g.country_code = g1.country_code
3889 AND (
3890 (g.state_code = g1.state_code AND g1.province_code is null)
3891 or
3892 (g1.province_code = g.province_code AND g1.state_code is null)
3893 )
3894 AND (g1.county_code is null or g.county_code = g1.county_code)
3895 AND g.city_code = g1.city_code
3896 AND grpv.geo_id_from = g1.geo_id
3897 )
3898 or
3899 (
3900 grpv.geo_type = 'COUNTRY'
3901 AND grpv.geo_id_from = g1.geo_id
3902 AND g.geo_type = 'POSTAL_CODE'
3903 AND g.country_code = g1.country_code
3904 )
3905 or
3906 (
3907 grpv.geo_type = 'PROVINCE'
3908 AND grpv.geo_id_from = g1.geo_id
3909 AND g.geo_type = 'POSTAL_CODE'
3910 AND g.country_code = g1.country_code
3911 AND g.province_code = g1.province_code
3912 )
3913 )
3914 union
3915 select g.postal_code postal_code,
3916 g.geo_id geo_id
3917 , terr.geo_territory_id
3918 from jtf_tty_terr_groups tg,
3919 jtf_tty_geo_terr terr,
3920 jtf_tty_geographies g,
3921 jtf_tty_geo_terr_values tv
3922 where terr.terr_group_id = tg.terr_group_id
3923 and terr.owner_resource_id >= 0
3924 and terr.parent_geo_terr_id >= 0 -- not default terr
3925 and tv.geo_territory_id = terr.geo_territory_id
3926 and g.geo_id = tv.geo_id
3927 ) main
3928 where main.geo_id not in -- the terr the user owners
3929 (
3930 select tv.geo_id geo_id
3931 from jtf_tty_geo_terr terr,
3932 jtf_tty_geo_terr_values tv
3933 where
3934 tv.geo_territory_id = terr.geo_territory_id
3935 and main.geo_territory_id = terr.parent_geo_terr_id
3936 )
3937 and geo_territory_id = l_geo_territory_id;
3938
3939 /* Access Types for a particular Role within a Territory Group */
3940 CURSOR NON_OVLY_role_access( lp_terr_group_id number
3941 , lp_role varchar2) IS
3942 SELECT distinct a.access_type
3943 from jtf_tty_role_access a
3944 , jtf_tty_terr_grp_roles b
3945 where a.terr_group_role_id = b.terr_group_role_id
3946 and b.terr_group_id = lp_terr_group_id
3947 and b.role_code = lp_role
3948 AND NOT EXISTS (
3949 /* Product Interest does not exist for this role */
3950 SELECT NULL
3951 FROM jtf_tty_role_prod_int rpi
3952 WHERE rpi.terr_group_role_id = B.TERR_GROUP_ROLE_ID )
3953 order by a.access_type ;
3954
3955 /* Roles WITHOUT a Product Iterest defined */
3956 CURSOR role_interest_nonpi(l_terr_group_id number) IS
3957 SELECT b.role_code role_code
3958 --,a.interest_type_id
3959 ,b.terr_group_id
3960 from jtf_tty_role_prod_int a
3961 , jtf_tty_terr_grp_roles b
3962 where a.terr_group_role_id(+) = b.terr_group_role_id
3963 and b.terr_group_id = l_terr_group_id
3964 and a.terr_group_role_id is null
3965 order by b.role_code;
3966
3967 CURSOR terr_resource (l_geo_territory_id number,l_role varchar2) IS
3968 SELECT distinct a.resource_id
3969 , a.rsc_group_id
3970 , nvl(a.rsc_resource_type,'RS_EMPLOYEE') rsc_resource_type
3971 from jtf_tty_geo_terr_rsc a
3972 , jtf_tty_geo_terr b
3973 where a.geo_territory_id = b.geo_territory_id
3974 and b.geo_territory_id = l_geo_territory_id
3975 and a.rsc_role_code = l_role;
3976
3977 /* Get Top-Level Parent Territory details */
3978 CURSOR topterr(l_terr number) IS
3979 SELECT name
3980 , description
3981 , rank
3982 , parent_territory_id
3983 , terr_id
3984 from jtf_terr_all
3985 where terr_id = l_terr;
3986
3987 /* get Qualifiers used in a territory */
3988 CURSOR csr_get_qual( lp_terr_id NUMBER) IS
3989 SELECT jtq.terr_qual_id
3990 , jtq.qual_usg_id
3991 FROM jtf_terr_qual_all jtq
3992 WHERE jtq.terr_id = lp_terr_id;
3993
3994 /* get Values used in a territory qualifier */
3995 CURSOR csr_get_qual_val ( lp_terr_qual_id NUMBER ) IS
3996 SELECT jtv.TERR_VALUE_ID
3997 , jtv.INCLUDE_FLAG
3998 , jtv.COMPARISON_OPERATOR
3999 , jtv.LOW_VALUE_CHAR
4000 , jtv.HIGH_VALUE_CHAR
4001 , jtv.LOW_VALUE_NUMBER
4002 , jtv.HIGH_VALUE_NUMBER
4003 , jtv.VALUE_SET
4004 , jtv.INTEREST_TYPE_ID
4005 , jtv.PRIMARY_INTEREST_CODE_ID
4006 , jtv.SECONDARY_INTEREST_CODE_ID
4007 , jtv.CURRENCY_CODE
4008 , jtv.ORG_ID
4009 , jtv.ID_USED_FLAG
4010 , jtv.LOW_VALUE_CHAR_ID
4011 FROM jtf_terr_values_all jtv
4012 WHERE jtv.terr_qual_id = lp_terr_qual_id;
4013
4014 /* get the geographies
4015 ** used for OVERLAY territory creation */
4016
4017 CURSOR get_OVLY_geographies(LP_terr_group_id number) IS
4018 SELECT gterr.geo_territory_id
4019 , gterr.geo_terr_name
4020 FROM jtf_tty_geo_terr gterr
4021 WHERE gterr.terr_group_id = lp_terr_group_id
4022 AND EXISTS (
4023 /* Salesperson, with Role that has a Product
4024 ** Interest defined, exists for this Named Account */
4025 SELECT NULL
4026 FROM jtf_tty_geo_terr_rsc grsc
4027 , jtf_tty_role_prod_int rpi
4028 , jtf_tty_terr_grp_roles tgr
4029 WHERE rpi.terr_group_role_id = tgr.terr_group_role_id
4030 AND tgr.terr_group_id = gterr.TERR_GROUP_ID
4031 AND tgr.role_code = grsc.rsc_role_code
4032 AND grsc.geo_territory_id = gterr.geo_territory_id );
4033
4034
4035 /* Roles WITH a Product Iterest defined */
4036 CURSOR role_pi( lp_terr_group_id NUMBER
4037 , lp_geo_territory_id NUMBER) IS
4038 SELECT distinct
4039 b.role_code role_code
4040 , r.role_name role_name
4041 from jtf_rs_roles_vl r
4042 , jtf_tty_role_prod_int a
4043 , jtf_tty_terr_grp_roles b
4044 where r.role_code = b.role_code
4045 and a.terr_group_role_id = b.terr_group_role_id
4046 and b.terr_group_id = lp_terr_group_id
4047 AND EXISTS (
4048 /* Named Account exists with Salesperson with this role */
4049 SELECT NULL
4050 FROM jtf_tty_geo_terr_rsc grsc, jtf_tty_geo_terr gterr
4051 WHERE gterr.geo_territory_id = grsc.geo_territory_id
4052 AND grsc.geo_territory_id = lp_geo_territory_id
4053 AND gterr.terr_group_id = b.terr_group_id
4054 AND grsc.rsc_role_code = b.role_code );
4055
4056
4057 /* Access Types for a particular Role within a Territory Group */
4058 CURSOR role_access(l_terr_group_id number,l_role varchar2) IS
4059 SELECT distinct a.access_type
4060 from jtf_tty_role_access a
4061 , jtf_tty_terr_grp_roles b
4062 where a.terr_group_role_id = b.terr_group_role_id
4063 and b.terr_group_id = l_terr_group_id
4064 and b.role_code = l_role
4065 order by a.access_type ;
4066
4067 /* Product Interest for a Role */
4068 CURSOR role_pi_interest(l_terr_group_id number,l_role varchar2) IS
4069 SELECT a.interest_type_id
4070 from jtf_tty_role_prod_int a
4071 , jtf_tty_terr_grp_roles b
4072 where a.terr_group_role_id = b.terr_group_role_id
4073 and b.terr_group_id = l_terr_group_id
4074 and b.role_code = l_role;
4075
4076
4077 Begin
4078
4079 for geo_terr in geo_territories(p_terr_group_rec.terr_group_id) loop
4080
4081
4082 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
4083 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
4084 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
4085 l_terr_values_tbl:=l_terr_values_empty_tbl;
4086 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
4087 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
4088
4089
4090 l_terr_all_rec.LAST_UPDATE_DATE := p_terr_group_rec.LAST_UPDATE_DATE;
4091 l_terr_all_rec.LAST_UPDATED_BY := p_terr_group_rec.LAST_UPDATED_BY;
4092 l_terr_all_rec.CREATION_DATE := p_terr_group_rec.CREATION_DATE;
4093 l_terr_all_rec.CREATED_BY := p_terr_group_rec.CREATED_BY ;
4094 l_terr_all_rec.LAST_UPDATE_LOGIN := p_terr_group_rec.LAST_UPDATE_LOGIN;
4095
4096 l_terr_all_rec.APPLICATION_SHORT_NAME := G_APP_SHORT_NAME;
4097
4098 l_terr_all_rec.NAME := geo_terr.geo_terr_name || ' ' || geo_terr.geo_territory_id;
4099 l_terr_all_rec.start_date_active := p_terr_group_rec.active_from_date ;
4100 l_terr_all_rec.end_date_active := p_terr_group_rec.active_to_date;
4101 l_terr_all_rec.PARENT_TERRITORY_ID := p_terr_group_rec.parent_terr_id;
4102 l_terr_all_rec.RANK := p_terr_group_rec.RANK + 10;
4103 l_terr_all_rec.TEMPLATE_TERRITORY_ID := NULL;
4104 l_terr_all_rec.TEMPLATE_FLAG := 'N';
4105 l_terr_all_rec.ESCALATION_TERRITORY_ID:= NULL;
4106 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
4107 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
4108 l_terr_all_rec.DESCRIPTION := geo_terr.geo_terr_name;
4109 l_terr_all_rec.UPDATE_FLAG := 'N';
4110 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG := NULL;
4111
4112 l_terr_all_rec.ORG_ID := p_org_id;
4113 l_terr_all_rec.NUM_WINNERS := null ;
4114
4115 /* Oracle Sales and Telesales Usage */
4116
4117 SELECT JTF_TERR_USGS_S.nextval
4118 into l_terr_usg_id
4119 FROM DUAL;
4120
4121 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
4122 l_terr_usgs_tbl(1).LAST_UPDATE_DATE := p_terr_group_rec.LAST_UPDATE_DATE;
4123 l_terr_usgs_tbl(1).LAST_UPDATED_BY := p_terr_group_rec.LAST_UPDATED_BY;
4124 l_terr_usgs_tbl(1).CREATION_DATE := p_terr_group_rec.CREATION_DATE;
4125 l_terr_usgs_tbl(1).CREATED_BY := p_terr_group_rec.CREATED_BY;
4126 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN := p_terr_group_rec.LAST_UPDATE_LOGIN;
4127 l_terr_usgs_tbl(1).TERR_ID := null;
4128 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
4129 l_terr_usgs_tbl(1).ORG_ID := p_org_id;
4130
4131 i:=0;
4132
4133 /* BEGIN: For each Access Type defined for the Territory Group */
4134
4135 for acctype in get_NON_OVLY_geo_trans( geo_terr.geo_territory_id ) LOOP
4136
4137 i:=i+1;
4138
4139 /* ACCOUNT TRANSACTION TYPE */
4140
4141 if acctype.access_type='ACCOUNT' then
4142
4143 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4144 into l_terr_qtype_usg_id
4145 FROM DUAL;
4146
4147 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
4148 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_terr_group_rec.LAST_UPDATE_DATE;
4149 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_terr_group_rec.LAST_UPDATED_BY;
4150 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_terr_group_rec.CREATION_DATE;
4151 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_terr_group_rec.CREATED_BY;
4152 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_terr_group_rec.LAST_UPDATE_LOGIN;
4153 l_terr_qualtypeusgs_tbl(i).TERR_ID := null;
4154 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1001;
4155 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id;
4156
4157 /* LEAD TRANSACTION TYPE */
4158 elsif acctype.access_type='LEAD' then
4159
4160 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4161 into l_terr_qtype_usg_id
4162 FROM DUAL;
4163 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID := l_terr_qtype_usg_id;
4164 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE := p_terr_group_rec.LAST_UPDATE_DATE;
4165 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY := p_terr_group_rec.LAST_UPDATED_BY;
4166 l_terr_qualtypeusgs_tbl(i).CREATION_DATE := p_terr_group_rec.CREATION_DATE;
4167 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_terr_group_rec.CREATED_BY;
4168 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN := p_terr_group_rec.LAST_UPDATE_LOGIN;
4169 l_terr_qualtypeusgs_tbl(i).TERR_ID := null;
4170 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID := -1002;
4171 l_terr_qualtypeusgs_tbl(i).ORG_ID := p_org_id;
4172
4173 /* OPPORTUNITY TRANSACTION TYPE */
4174 elsif acctype.access_type='OPPORTUNITY' then
4175
4176 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4177 into l_terr_qtype_usg_id
4178 FROM DUAL;
4179 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
4180 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4181 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4182 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4183 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_terr_group_rec.CREATED_BY;
4184 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4185 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
4186 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1003;
4187 l_terr_qualtypeusgs_tbl(i).ORG_ID:=p_org_id;
4188
4189 end if;
4190
4191 end loop;
4192
4193
4194 /*
4195 ** get Named Account Customer Keyname and Postal Code Mapping
4196 ** rules, to use as territory definition qualifier values
4197 */
4198
4199 j := 0;
4200 K := 0;
4201
4202 l_prev_qual_usg_id:=1;
4203
4204
4205 FOR gval IN geo_values( geo_terr.geo_territory_id ) LOOP
4206
4207 /* new qualifier, i.e., if there is a qualifier in
4208 ** Addition to DUNS# */
4209
4210 IF l_prev_qual_usg_id <> gval.qual_usg_id THEN
4211
4212 j:=j+1;
4213
4214 SELECT JTF_TERR_QUAL_S.nextval
4215 into l_terr_qual_id
4216 FROM DUAL;
4217
4218 l_terr_qual_tbl(j).TERR_QUAL_ID :=l_terr_qual_id;
4219 l_terr_qual_tbl(j).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
4220 l_terr_qual_tbl(j).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4221 l_terr_qual_tbl(j).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4222 l_terr_qual_tbl(j).CREATED_BY := p_terr_group_rec.CREATED_BY;
4223 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4224 l_terr_qual_tbl(j).TERR_ID:=null;
4225 l_terr_qual_tbl(j).QUAL_USG_ID :=gval.qual_usg_id;
4226 l_terr_qual_tbl(j).QUALIFIER_MODE:=NULL;
4227 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG:='N';
4228 l_terr_qual_tbl(j).USE_TO_NAME_FLAG:=NULL;
4229 l_terr_qual_tbl(j).GENERATE_FLAG:=NULL;
4230 l_terr_qual_tbl(j).ORG_ID:=p_org_id;
4231 l_prev_qual_usg_id:= gval.qual_usg_id;
4232
4233 END IF;
4234
4235 k:=k+1;
4236
4237 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
4238 l_terr_values_tbl(k).LAST_UPDATED_BY := p_terr_group_rec.last_UPDATED_BY;
4239 l_terr_values_tbl(k).LAST_UPDATE_DATE:= p_terr_group_rec.last_UPDATE_DATE;
4240 l_terr_values_tbl(k).CREATED_BY := p_terr_group_rec.CREATED_BY;
4241 l_terr_values_tbl(k).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4242 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= p_terr_group_rec.last_UPDATE_LOGIN;
4243 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
4244 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
4245 l_terr_values_tbl(k).COMPARISON_OPERATOR := gval.COMPARISON_OPERATOR;
4246 l_terr_values_tbl(k).LOW_VALUE_CHAR:= gval.value1_char;
4247 l_terr_values_tbl(k).HIGH_VALUE_CHAR:= NULL;
4248 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
4249 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
4250 l_terr_values_tbl(k).VALUE_SET :=NULL;
4251 l_terr_values_tbl(k).INTEREST_TYPE_ID :=null;
4252 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
4253 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
4254 l_terr_values_tbl(k).CURRENCY_CODE :=null;
4255 l_terr_values_tbl(k).ORG_ID :=p_org_id;
4256 l_terr_values_tbl(k).ID_USED_FLAG :='N';
4257 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
4258 l_terr_values_tbl(k).qualifier_tbl_index := j;
4259
4260 end loop; /* qval IN pqual */
4261
4262 l_init_msg_list :=FND_API.G_TRUE;
4263
4264 if l_prev_qual_usg_id <> 1 then -- geography territory values are there if this condition is true
4265 jtf_territory_pvt.create_territory (
4266 p_api_version_number => l_api_version_number,
4267 p_init_msg_list => l_init_msg_list,
4268 p_commit=> l_commit,
4269 p_validation_level => fnd_api.g_valid_level_NONE,
4270 x_return_status => x_return_status,
4271 x_msg_count => x_msg_count,
4272 x_msg_data => x_msg_data,
4273 p_terr_all_rec => l_terr_all_rec,
4274 p_terr_usgs_tbl => l_terr_usgs_tbl,
4275 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
4276 p_terr_qual_tbl => l_terr_qual_tbl,
4277 p_terr_values_tbl => l_terr_values_tbl,
4278 x_terr_id => x_terr_id,
4279 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
4280 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
4281 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
4282 x_terr_values_out_tbl => x_terr_values_out_tbl
4283 );
4284
4285
4286 /* BEGIN: Successful Territory creation? */
4287
4288 if x_return_status = 'S' then
4289
4290 -- JDOCHERT: 01/08/03: Added p_terr_group_rec_ID and CATCH_ALL_FLAG
4291 -- and NAMED_ACCOUNT_FLAG and p_terr_group_rec_ACCOUNT_ID
4292
4293 UPDATE JTF_TERR_ALL
4294 set TERR_GROUP_FLAG = 'Y'
4295 , TERR_GROUP_ID = p_terr_group_rec.TERR_GROUP_ID
4296 where terr_id = x_terr_id;
4297
4298 --write_log(2,p_terr_group_rec.terr_group_id);
4299 --write_log(2,tran_type.role_code);
4300
4301 l_init_msg_list :=FND_API.G_TRUE;
4302 i := 0;
4303 a := 0;
4304
4305 FOR tran_type in role_interest_nonpi(p_terr_group_rec.Terr_gROUP_ID)
4306 LOOP
4307
4308
4309 FOR rsc in terr_resource(geo_terr.geo_territory_id,tran_type.role_code)
4310 loop
4311
4312 i := i+1;
4313
4314 SELECT JTF_TERR_RSC_S.nextval
4315 into l_terr_rsc_id
4316 FROM DUAL;
4317
4318 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
4319 l_TerrRsc_Tbl(i).TERR_RSC_ID :=l_terr_rsc_id;
4320 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE:=p_terr_group_rec.LAST_UPDATE_DATE;
4321 l_TerrRsc_Tbl(i).LAST_UPDATED_BY:=p_terr_group_rec.LAST_UPDATED_BY;
4322 l_TerrRsc_Tbl(i).CREATION_DATE:=p_terr_group_rec.CREATION_DATE;
4323 l_TerrRsc_Tbl(i).CREATED_BY:=p_terr_group_rec.CREATED_BY;
4324 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN:=p_terr_group_rec.LAST_UPDATE_LOGIN;
4325 l_TerrRsc_Tbl(i).RESOURCE_ID:=rsc.resource_id;
4326 l_TerrRsc_Tbl(i).RESOURCE_TYPE:=rsc.rsc_resource_type;
4327 l_TerrRsc_Tbl(i).ROLE:=tran_type.role_code;
4328 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG:='N';
4329 l_TerrRsc_Tbl(i).START_DATE_ACTIVE:=p_terr_group_rec.active_from_date ;
4330 l_TerrRsc_Tbl(i).END_DATE_ACTIVE:=p_terr_group_rec.active_to_date ;
4331 l_TerrRsc_Tbl(i).ORG_ID:=p_org_id;
4332 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG:='Y';
4333 l_TerrRsc_Tbl(i).GROUP_ID:=rsc.rsc_group_id;
4334
4335 FOR rsc_acc in NON_OVLY_role_access(p_terr_group_rec.terr_group_id,tran_type.role_code) LOOP
4336 --dbms_output.put_line('rsc_acc.access_type '||rsc_acc.access_type);
4337 a := a+1;
4338
4339 /* ACCOUNT ACCESS TYPE */
4340 IF (rsc_acc.access_type= 'ACCOUNT') THEN
4341
4342 SELECT JTF_TERR_RSC_ACCESS_S.nextval
4343 into l_terr_rsc_access_id
4344 FROM DUAL;
4345 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
4346 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
4347 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4348 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4349 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_terr_group_rec.CREATED_BY;
4350 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4351 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
4352 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'ACCOUNT';
4353 l_TerrRsc_Access_Tbl(a).ORG_ID:= p_org_id;
4354 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
4355
4356 /* OPPORTUNITY ACCESS TYPE */
4357 elsif rsc_acc.access_type= 'OPPORTUNITY' then
4358
4359 SELECT JTF_TERR_RSC_ACCESS_S.nextval
4360 into l_terr_rsc_access_id
4361 FROM DUAL;
4362
4363 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
4364 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
4365 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4366 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4367 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_terr_group_rec.CREATED_BY;
4368 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4369 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
4370 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'OPPOR';
4371 l_TerrRsc_Access_Tbl(a).ORG_ID:= p_org_id;
4372 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
4373
4374 /* LEAD ACCESS TYPE */
4375 elsif rsc_acc.access_type= 'LEAD' then
4376
4377 SELECT JTF_TERR_RSC_ACCESS_S.nextval
4378 into l_terr_rsc_access_id
4379 FROM DUAL;
4380 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
4381 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
4382 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4383 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4384 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_terr_group_rec.CREATED_BY;
4385 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4386 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
4387 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'LEAD';
4388 l_TerrRsc_Access_Tbl(a).ORG_ID:= p_org_id;
4389 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
4390 end if;
4391 end loop; /* FOR rsc_acc in NON_OVLY_role_access */
4392
4393 end loop; /* FOR rsc in resource_grp */
4394
4395 end loop;/* FOR tran_type in role_interest_nonpi */
4396
4397 l_init_msg_list :=FND_API.G_TRUE;
4398
4399 jtf_territory_resource_pvt.create_terrresource (
4400 p_api_version_number => l_Api_Version_Number,
4401 p_init_msg_list => l_Init_Msg_List,
4402 p_commit => l_Commit,
4403 p_validation_level => fnd_api.g_valid_level_NONE,
4404 x_return_status => x_Return_Status,
4405 x_msg_count => x_Msg_Count,
4406 x_msg_data => x_msg_data,
4407 p_terrrsc_tbl => l_TerrRsc_tbl,
4408 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
4409 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
4410 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
4411 );
4412
4413 if x_Return_Status='S' then
4414 write_log(2,'Resource created for Geo territory # ' ||x_terr_id);
4415 else
4416 x_msg_data := substr(fnd_msg_pub.get(1, fnd_api.g_false),1,254);
4417 write_log(2,x_msg_data);
4418 write_log(2, ' Failed in resource creation for Geo territory # ' ||
4419 x_terr_id);
4420 end if;
4421
4422 else
4423 x_msg_data := substr(fnd_msg_pub.get(1, fnd_api.g_false),1,254);
4424 write_log(2,substr(x_msg_data,1,254));
4425 WRITE_LOG(2,'ERROR: NA TERRITORY CREATION FAILED ' ||
4426 'FOR NAMED_ACCOUNT_ID# ' );
4427 end if; /* END: Successful Territory creation? */
4428 end if;
4429 end loop;
4430 /*********************************************************************/
4431 /*********************************************************************/
4432 /************** OVERLAY TERRITORY CREATION ***************************/
4433 /*********************************************************************/
4434 /*********************************************************************/
4435
4436 /* if any role with PI and Account access and no non pi role exist */
4437 /* we need to create a new branch with Named Account */
4438 /* OVERLAY BRANCH */
4439
4440 BEGIN
4441
4442 SELECT COUNT( DISTINCT b.role_code )
4443 into l_pi_count
4444 from jtf_rs_roles_vl r
4445 , jtf_tty_role_prod_int a
4446 , jtf_tty_terr_grp_roles b
4447 where r.role_code = b.role_code
4448 and a.terr_group_role_id = b.terr_group_role_id
4449 and b.terr_group_id = p_terr_group_rec.TERR_GROUP_ID
4450 AND EXISTS (
4451 /* Named Account exists with Salesperson with this role */
4452 SELECT NULL
4453 FROM jtf_tty_geo_terr_rsc grsc, jtf_tty_geo_terr gterr
4454 WHERE grsc.geo_territory_id = gterr.geo_territory_id
4455 AND gterr.terr_group_id = b.terr_group_id
4456 AND grsc.rsc_role_code = b.role_code )
4457 AND ROWNUM < 2;
4458
4459 EXCEPTION
4460 WHEN OTHERS THEN
4461 NUll;
4462 END;
4463
4464
4465 /* are there overlay roles, i.e., are there roles with Product
4466 ** Interests defined for this Territory Group */
4467
4468 if l_pi_count > 0 then
4469
4470 /***************************************************************/
4471 /* (7) START: CREATE TOP-LEVEL TERRITORY FOR OVERLAY BRANCH OF */
4472 /* TERRITORY GROUP */
4473 /***************************************************************/
4474 FOR topt in topterr(p_terr_group_rec.PARENT_TERR_ID) LOOP
4475
4476 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
4477 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
4478 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
4479 l_terr_values_tbl:=l_terr_values_empty_tbl;
4480 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
4481 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
4482
4483 l_terr_all_rec.TERR_ID := null;
4484 l_terr_all_rec.LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4485 l_terr_all_rec.LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4486 l_terr_all_rec.CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4487 l_terr_all_rec.CREATED_BY := p_terr_group_rec.CREATED_BY ;
4488 l_terr_all_rec.LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4489
4490 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
4491 l_terr_all_rec.NAME:= p_terr_group_rec.terr_group_name || ' (OVERLAY)';
4492 l_terr_all_rec.start_date_active := p_terr_group_rec.active_from_date ;
4493 l_terr_all_rec.end_date_active := p_terr_group_rec.active_to_date;
4494 l_terr_all_rec.PARENT_TERRITORY_ID:= topt.PARENT_TERRITORY_ID;
4495 l_terr_all_rec.RANK := topt.RANK;
4496 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
4497 l_terr_all_rec.TEMPLATE_FLAG := 'N';
4498 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
4499 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
4500 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
4501 l_terr_all_rec.DESCRIPTION:= topt.DESCRIPTION;
4502 l_terr_all_rec.UPDATE_FLAG :='N';
4503 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
4504
4505 l_terr_all_rec.ORG_ID :=p_ORG_ID ;
4506 l_terr_all_rec.NUM_WINNERS :=l_pi_count ;
4507
4508 /* ORACLE SALES AND TELESALES USAGE */
4509
4510 SELECT JTF_TERR_USGS_S.nextval
4511 into l_terr_usg_id
4512 FROM DUAL;
4513
4514 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
4515 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4516 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4517 l_terr_usgs_tbl(1).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4518 l_terr_usgs_tbl(1).CREATED_BY := p_terr_group_rec.CREATED_BY;
4519 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=p_terr_group_rec.LAST_UPDATE_LOGIN;
4520 l_terr_usgs_tbl(1).TERR_ID:= null;
4521 l_terr_usgs_tbl(1).SOURCE_ID:=-1001;
4522 l_terr_usgs_tbl(1).ORG_ID:= p_ORG_ID;
4523
4524
4525 /* LEAD TRANSACTION TYPE */
4526 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4527 into l_terr_qtype_usg_id
4528 FROM DUAL;
4529
4530 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
4531 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4532 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4533 l_terr_qualtypeusgs_tbl(1).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4534 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_terr_group_rec.CREATED_BY;
4535 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4536 l_terr_qualtypeusgs_tbl(1).TERR_ID:= null;
4537 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID:=-1002;
4538 l_terr_qualtypeusgs_tbl(1).ORG_ID:=p_ORG_ID;
4539
4540 /* OPPORTUNITY TRANSACTION TYPE */
4541 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4542 into l_terr_qtype_usg_id
4543 FROM DUAL;
4544
4545 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
4546 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4547 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4548 l_terr_qualtypeusgs_tbl(2).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4549 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_terr_group_rec.CREATED_BY;
4550 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4551 l_terr_qualtypeusgs_tbl(2).TERR_ID:= null;
4552 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID:=-1003;
4553 l_terr_qualtypeusgs_tbl(2).ORG_ID:=p_ORG_ID;
4554
4555
4556 /*
4557 ** get Top-Level Parent's Qualifier and values and
4558 ** aad them to Overlay branch top-level territory
4559 */
4560
4561 j:=0;
4562 k:=0;
4563
4564 l_prev_qual_usg_id:=1;
4565
4566 FOR csr_qual IN csr_get_qual ( topt.terr_id ) LOOP
4567
4568 j:=j+1;
4569
4570 SELECT JTF_TERR_QUAL_S.nextval
4571 INTO l_terr_qual_id
4572 FROM DUAL;
4573
4574 l_terr_qual_tbl(j).TERR_QUAL_ID := l_terr_qual_id;
4575 l_terr_qual_tbl(j).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
4576 l_terr_qual_tbl(j).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4577 l_terr_qual_tbl(j).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4578 l_terr_qual_tbl(j).CREATED_BY := p_terr_group_rec.CREATED_BY;
4579 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4580 l_terr_qual_tbl(j).TERR_ID:= null;
4581
4582 /* Top_level Parent's Qualifier */
4583
4584 l_terr_qual_tbl(j).QUAL_USG_ID := csr_qual.qual_usg_id;
4585
4586 l_terr_qual_tbl(j).QUALIFIER_MODE:= NULL;
4587 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG:='Y';
4588 l_terr_qual_tbl(j).USE_TO_NAME_FLAG:=NULL;
4589 l_terr_qual_tbl(j).GENERATE_FLAG:=NULL;
4590 l_terr_qual_tbl(j).ORG_ID:=p_ORG_ID;
4591
4592
4593 FOR csr_qual_val IN csr_get_qual_val (csr_qual.terr_qual_id) LOOP
4594
4595 k:=k+1;
4596
4597 l_terr_values_tbl(k).TERR_VALUE_ID := NULL;
4598 l_terr_values_tbl(k).LAST_UPDATED_BY := G_USER_ID;
4599 l_terr_values_tbl(k).LAST_UPDATE_DATE:= G_SYSDATE;
4600 l_terr_values_tbl(k).CREATED_BY := G_USER_ID;
4601 l_terr_values_tbl(k).CREATION_DATE:= G_SYSDATE;
4602 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= G_LOGIN_ID;
4603
4604 l_terr_values_tbl(k).TERR_QUAL_ID := l_terr_qual_id ;
4605
4606 l_terr_values_tbl(k).INCLUDE_FLAG := csr_qual_val.INCLUDE_FLAG;
4607 l_terr_values_tbl(k).COMPARISON_OPERATOR := csr_qual_val.COMPARISON_OPERATOR;
4608 l_terr_values_tbl(k).LOW_VALUE_CHAR := csr_qual_val.LOW_VALUE_CHAR;
4609 l_terr_values_tbl(k).HIGH_VALUE_CHAR := csr_qual_val.HIGH_VALUE_CHAR;
4610 l_terr_values_tbl(k).LOW_VALUE_NUMBER := csr_qual_val.LOW_VALUE_NUMBER;
4611 l_terr_values_tbl(k).HIGH_VALUE_NUMBER := csr_qual_val.HIGH_VALUE_NUMBER;
4612 l_terr_values_tbl(k).VALUE_SET := csr_qual_val.VALUE_SET;
4613 l_terr_values_tbl(k).INTEREST_TYPE_ID := csr_qual_val.INTEREST_TYPE_ID;
4614 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID := csr_qual_val.PRIMARY_INTEREST_CODE_ID;
4615 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID := csr_qual_val.SECONDARY_INTEREST_CODE_ID;
4616 l_terr_values_tbl(k).CURRENCY_CODE := csr_qual_val.CURRENCY_CODE;
4617 l_terr_values_tbl(k).ID_USED_FLAG := csr_qual_val.ID_USED_FLAG;
4618 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID := csr_qual_val.LOW_VALUE_CHAR_ID;
4619
4620 l_terr_values_tbl(k).ORG_ID := p_org_id;
4621
4622 /* What Qualifier Values relate to Qualifier */
4623 l_terr_values_tbl(k).qualifier_tbl_index := j;
4624
4625
4626 END LOOP; /* csr_qual_val IN csr_get_qual_val */
4627
4628 end loop; /* csr_qual IN csr_get_qual */
4629
4630
4631 l_init_msg_list :=FND_API.G_TRUE;
4632
4633 -- 07/08/03: JDOCHERT: bug#3023653
4634 --mo_global.set_org_context(p_terr_group_rec.ORG_ID,null);
4635 --
4636
4637 jtf_territory_pvt.create_territory (
4638 p_api_version_number => l_api_version_number,
4639 p_init_msg_list => l_init_msg_list,
4640 p_commit => l_commit,
4641 p_validation_level => fnd_api.g_valid_level_NONE,
4642 x_return_status => x_return_status,
4643 x_msg_count => x_msg_count,
4644 x_msg_data => x_msg_data,
4645 p_terr_all_rec => l_terr_all_rec,
4646 p_terr_usgs_tbl => l_terr_usgs_tbl,
4647 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
4648 p_terr_qual_tbl => l_terr_qual_tbl,
4649 p_terr_values_tbl => l_terr_values_tbl,
4650 x_terr_id => x_terr_id,
4651 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
4652 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
4653 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
4654 x_terr_values_out_tbl => x_terr_values_out_tbl
4655 );
4656
4657
4658 if x_return_status = 'S' then
4659
4660 -- JDOCHERT: 01/08/03: Added p_terr_group_rec.ID
4661 UPDATE JTF_TERR_ALL
4662 set terr_group_FLAG = 'Y'
4663 , terr_group_ID = p_terr_group_rec.TERR_GROUP_ID
4664 where terr_id = x_terr_id;
4665
4666 end if;
4667
4668 l_overlay_top :=x_terr_id;
4669
4670 end loop;/* topt top level territory */
4671
4672 /***************************************************************/
4673 /* (7) END: CREATE TOP-LEVEL TERRITORY FOR OVERLAY BRANCH OF */
4674 /* TERRITORY GROUP */
4675 /***************************************************************/
4676
4677
4678 /***************************************************************/
4679 /* (8) START: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
4680 /* USING DUNS# QUALIFIER */
4681 /***************************************************************/
4682
4683 FOR overlayterr in get_OVLY_geographies(p_terr_group_rec.terr_group_id) LOOP
4684
4685 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
4686 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
4687 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
4688 l_terr_values_tbl:=l_terr_values_empty_tbl;
4689 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
4690 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
4691
4692 l_terr_all_rec.TERR_ID := null;
4693 l_terr_all_rec.LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4694 l_terr_all_rec.LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4695 l_terr_all_rec.CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4696 l_terr_all_rec.CREATED_BY := p_terr_group_rec.CREATED_BY ;
4697 l_terr_all_rec.LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4698
4699 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
4700 l_terr_all_rec.NAME:= overlayterr.geo_terr_name || ' (OVERLAY)';
4701 l_terr_all_rec.start_date_active := p_terr_group_rec.active_from_date ;
4702 l_terr_all_rec.end_date_active := p_terr_group_rec.active_to_date;
4703 l_terr_all_rec.PARENT_TERRITORY_ID:= l_overlay_top;
4704 l_terr_all_rec.RANK := p_terr_group_rec.RANK + 10;
4705 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
4706 l_terr_all_rec.TEMPLATE_FLAG := 'N';
4707 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
4708 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
4709 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
4710 l_terr_all_rec.DESCRIPTION:= overlayterr.geo_terr_name || ' (OVERLAY_DUNS#)';
4711 l_terr_all_rec.UPDATE_FLAG :='N';
4712 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
4713
4714 l_terr_all_rec.ORG_ID :=p_ORG_ID ;
4715 l_terr_all_rec.NUM_WINNERS :=null ;
4716
4717
4718 SELECT JTF_TERR_USGS_S.nextval
4719 into l_terr_usg_id
4720 FROM DUAL;
4721
4722 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
4723 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4724 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4725 l_terr_usgs_tbl(1).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4726 l_terr_usgs_tbl(1).CREATED_BY := p_terr_group_rec.CREATED_BY;
4727 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=p_terr_group_rec.LAST_UPDATE_LOGIN;
4728 l_terr_usgs_tbl(1).TERR_ID:= null;
4729 l_terr_usgs_tbl(1).SOURCE_ID := -1001;
4730 l_terr_usgs_tbl(1).ORG_ID:= p_ORG_ID;
4731
4732 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4733 into l_terr_qtype_usg_id
4734 FROM DUAL;
4735
4736 l_terr_qualtypeusgs_tbl(1).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
4737 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4738 l_terr_qualtypeusgs_tbl(1).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4739 l_terr_qualtypeusgs_tbl(1).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4740 l_terr_qualtypeusgs_tbl(1).CREATED_BY := p_terr_group_rec.CREATED_BY;
4741 l_terr_qualtypeusgs_tbl(1).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4742 l_terr_qualtypeusgs_tbl(1).TERR_ID:= null;
4743 l_terr_qualtypeusgs_tbl(1).QUAL_TYPE_USG_ID:=-1002;
4744 l_terr_qualtypeusgs_tbl(1).ORG_ID:=p_ORG_ID;
4745
4746 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4747 into l_terr_qtype_usg_id
4748 FROM DUAL;
4749
4750 l_terr_qualtypeusgs_tbl(2).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
4751 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4752 l_terr_qualtypeusgs_tbl(2).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4753 l_terr_qualtypeusgs_tbl(2).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4754 l_terr_qualtypeusgs_tbl(2).CREATED_BY := p_terr_group_rec.CREATED_BY;
4755 l_terr_qualtypeusgs_tbl(2).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4756 l_terr_qualtypeusgs_tbl(2).TERR_ID:= null;
4757 l_terr_qualtypeusgs_tbl(2).QUAL_TYPE_USG_ID:=-1003;
4758 l_terr_qualtypeusgs_tbl(2).ORG_ID:=p_ORG_ID;
4759
4760 SELECT JTF_TERR_QUAL_S.nextval
4761 into l_terr_qual_id
4762 FROM DUAL;
4763
4764 j:=0;
4765 K:=0;
4766 l_prev_qual_usg_id:=1;
4767
4768 FOR gval IN geo_values(overlayterr.geo_territory_id ) LOOP
4769
4770 if l_prev_qual_usg_id <> gval.qual_usg_id then
4771
4772 j:=j+1;
4773 SELECT JTF_TERR_QUAL_S.nextval
4774 into l_terr_qual_id
4775 FROM DUAL;
4776
4777 l_terr_qual_tbl(j).TERR_QUAL_ID :=l_terr_qual_id;
4778 l_terr_qual_tbl(j).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
4779 l_terr_qual_tbl(j).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4780 l_terr_qual_tbl(j).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4781 l_terr_qual_tbl(j).CREATED_BY := p_terr_group_rec.CREATED_BY;
4782 l_terr_qual_tbl(j).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4783 l_terr_qual_tbl(j).TERR_ID:=null;
4784 l_terr_qual_tbl(j).QUAL_USG_ID :=gval.qual_usg_id;
4785 l_terr_qual_tbl(j).QUALIFIER_MODE:=NULL;
4786 l_terr_qual_tbl(j).OVERLAP_ALLOWED_FLAG:='N';
4787 l_terr_qual_tbl(j).USE_TO_NAME_FLAG:=NULL;
4788 l_terr_qual_tbl(j).GENERATE_FLAG:=NULL;
4789 l_terr_qual_tbl(j).ORG_ID:=p_ORG_ID;
4790 l_prev_qual_usg_id:= gval.qual_usg_id;
4791 end if; /* l_prev_qual_usg_id */
4792
4793 k:=k+1;
4794
4795 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
4796
4797 l_terr_values_tbl(k).LAST_UPDATED_BY := p_terr_group_rec.last_UPDATED_BY;
4798 l_terr_values_tbl(k).LAST_UPDATE_DATE:= p_terr_group_rec.last_UPDATE_DATE;
4799 l_terr_values_tbl(k).CREATED_BY := p_terr_group_rec.CREATED_BY;
4800 l_terr_values_tbl(k).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4801 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= p_terr_group_rec.last_UPDATE_LOGIN;
4802 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
4803 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
4804 l_terr_values_tbl(k).COMPARISON_OPERATOR := gval.COMPARISON_OPERATOR;
4805 l_terr_values_tbl(k).LOW_VALUE_CHAR:= gval.value1_char;
4806 l_terr_values_tbl(k).HIGH_VALUE_CHAR:= NULL;
4807 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
4808 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
4809 l_terr_values_tbl(k).VALUE_SET :=NULL;
4810 l_terr_values_tbl(k).INTEREST_TYPE_ID :=null;
4811 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
4812 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
4813 l_terr_values_tbl(k).CURRENCY_CODE :=null;
4814 l_terr_values_tbl(k).ORG_ID :=p_ORG_ID;
4815 l_terr_values_tbl(k).ID_USED_FLAG :='N';
4816 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
4817
4818 l_terr_values_tbl(k).qualifier_tbl_index := j;
4819
4820 end loop; /* gval */
4821
4822 l_init_msg_list :=FND_API.G_TRUE;
4823
4824
4825 jtf_territory_pvt.create_territory (
4826 p_api_version_number => l_api_version_number,
4827 p_init_msg_list => l_init_msg_list,
4828 p_commit => l_commit,
4829 p_validation_level => fnd_api.g_valid_level_NONE,
4830 x_return_status => x_return_status,
4831 x_msg_count => x_msg_count,
4832 x_msg_data => x_msg_data,
4833 p_terr_all_rec => l_terr_all_rec,
4834 p_terr_usgs_tbl => l_terr_usgs_tbl,
4835 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
4836 p_terr_qual_tbl => l_terr_qual_tbl,
4837 p_terr_values_tbl => l_terr_values_tbl,
4838 x_terr_id => x_terr_id,
4839 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
4840 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
4841 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
4842 x_terr_values_out_tbl => x_terr_values_out_tbl
4843 );
4844
4845
4846 if x_return_status = 'S' then
4847
4848
4849 UPDATE JTF_TERR_ALL
4850 set TERR_GROUP_FLAG = 'Y'
4851 , TERR_GROUP_ID = p_terr_group_rec.TERR_GROUP_ID
4852 where terr_id = x_terr_id;
4853
4854 l_overlay:=x_terr_id;
4855
4856 for pit in role_pi(p_terr_group_rec.terr_group_id, overlayterr.geo_territory_id) loop
4857
4858
4859 l_terr_usgs_tbl:=l_terr_usgs_empty_tbl;
4860 l_terr_qualtypeusgs_tbl:=l_terr_qualtypeusgs_empty_tbl;
4861 l_terr_qual_tbl:=l_terr_qual_empty_tbl;
4862 l_terr_values_tbl:=l_terr_values_empty_tbl;
4863 l_TerrRsc_Tbl := l_TerrRsc_empty_Tbl;
4864 l_TerrRsc_Access_Tbl := l_TerrRsc_Access_empty_Tbl;
4865
4866 l_role_counter := l_role_counter + 1;
4867
4868 l_terr_all_rec.TERR_ID := overlayterr.geo_territory_id * -30 * l_role_counter;
4869 l_terr_all_rec.LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4870 l_terr_all_rec.LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4871 l_terr_all_rec.CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4872 l_terr_all_rec.CREATED_BY := p_terr_group_rec.CREATED_BY ;
4873 l_terr_all_rec.LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4874
4875 l_terr_all_rec.APPLICATION_SHORT_NAME:= G_APP_SHORT_NAME;
4876
4877 l_terr_all_rec.NAME:= overlayterr.geo_terr_name || ': ' ||
4878 pit.role_name || ' (OVERLAY)';
4879
4880 l_terr_all_rec.start_date_active := p_terr_group_rec.active_from_date ;
4881 l_terr_all_rec.end_date_active := p_terr_group_rec.active_to_date;
4882 l_terr_all_rec.PARENT_TERRITORY_ID:= l_overlay;
4883 l_terr_all_rec.RANK := p_terr_group_rec.RANK+10;
4884 l_terr_all_rec.TEMPLATE_TERRITORY_ID:= NULL;
4885 l_terr_all_rec.TEMPLATE_FLAG := 'N';
4886 l_terr_all_rec.ESCALATION_TERRITORY_ID := NULL;
4887 l_terr_all_rec.ESCALATION_TERRITORY_FLAG := 'N';
4888 l_terr_all_rec.OVERLAP_ALLOWED_FLAG := NULL;
4889
4890 l_terr_all_rec.DESCRIPTION:= overlayterr.geo_terr_name || ': ' ||
4891 pit.role_name || ' (OVERLAY DUNS#)';
4892
4893 l_terr_all_rec.UPDATE_FLAG :='N';
4894 l_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG :=NULL;
4895
4896 l_terr_all_rec.ORG_ID :=p_ORG_ID ;
4897 l_terr_all_rec.NUM_WINNERS :=null ;
4898
4899 SELECT JTF_TERR_USGS_S.nextval
4900 into l_terr_usg_id
4901 FROM DUAL;
4902
4903 l_terr_usgs_tbl(1).TERR_USG_ID := l_terr_usg_id;
4904 l_terr_usgs_tbl(1).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4905 l_terr_usgs_tbl(1).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4906 l_terr_usgs_tbl(1).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4907 l_terr_usgs_tbl(1).CREATED_BY := p_terr_group_rec.CREATED_BY;
4908 l_terr_usgs_tbl(1).LAST_UPDATE_LOGIN:=p_terr_group_rec.LAST_UPDATE_LOGIN;
4909 l_terr_usgs_tbl(1).TERR_ID:= null;
4910 l_terr_usgs_tbl(1).SOURCE_ID:=-1001;
4911 l_terr_usgs_tbl(1).ORG_ID:= p_ORG_ID;
4912
4913 i := 0;
4914 K:= 0;
4915
4916 for acc_type in role_access(p_terr_group_rec.terr_group_id,pit.role_code) loop
4917 --i:=i+1;
4918 --dbms_output.put_line('acc type '||acc_type.access_type);
4919 if acc_type.access_type= 'OPPORTUNITY' then
4920 i:=i+1;
4921 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4922 into l_terr_qtype_usg_id
4923 FROM DUAL;
4924
4925 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
4926 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4927 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4928 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4929 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_terr_group_rec.CREATED_BY;
4930 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4931 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
4932 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1003;
4933 l_terr_qualtypeusgs_tbl(i).ORG_ID:=p_ORG_ID;
4934
4935 SELECT JTF_TERR_QUAL_S.nextval
4936 into l_terr_qual_id
4937 FROM DUAL;
4938 /* opp expected purchase */
4939
4940 l_terr_qual_tbl(i).TERR_QUAL_ID :=l_terr_qual_id;
4941 l_terr_qual_tbl(i).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
4942 l_terr_qual_tbl(i).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4943 l_terr_qual_tbl(i).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4944 l_terr_qual_tbl(i).CREATED_BY := p_terr_group_rec.CREATED_BY;
4945 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4946 l_terr_qual_tbl(i).TERR_ID:=null;
4947 l_terr_qual_tbl(i).QUAL_USG_ID :=-1023;
4948 l_terr_qual_tbl(i).QUALIFIER_MODE:=NULL;
4949 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG:='N';
4950 l_terr_qual_tbl(i).USE_TO_NAME_FLAG:=NULL;
4951 l_terr_qual_tbl(i).GENERATE_FLAG:=NULL;
4952 l_terr_qual_tbl(i).ORG_ID:=p_ORG_ID;
4953
4954 for qval in role_pi_interest(p_terr_group_rec.terr_group_id,pit.role_code) loop
4955
4956 k:=k+1;
4957 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
4958
4959 l_terr_values_tbl(k).LAST_UPDATED_BY := p_terr_group_rec.last_UPDATED_BY;
4960 l_terr_values_tbl(k).LAST_UPDATE_DATE:= p_terr_group_rec.last_UPDATE_DATE;
4961 l_terr_values_tbl(k).CREATED_BY := p_terr_group_rec.CREATED_BY;
4962 l_terr_values_tbl(k).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4963 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= p_terr_group_rec.last_UPDATE_LOGIN;
4964 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
4965 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
4966 l_terr_values_tbl(k).COMPARISON_OPERATOR :='=';
4967 l_terr_values_tbl(k).LOW_VALUE_CHAR:= null;
4968 l_terr_values_tbl(k).HIGH_VALUE_CHAR:=null;
4969 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
4970 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
4971 l_terr_values_tbl(k).VALUE_SET :=NULL;
4972 l_terr_values_tbl(k).INTEREST_TYPE_ID :=qval.interest_type_id;
4973 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
4974 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
4975 l_terr_values_tbl(k).CURRENCY_CODE :=null;
4976 l_terr_values_tbl(k).ORG_ID :=p_ORG_ID;
4977 l_terr_values_tbl(k).ID_USED_FLAG :='N';
4978 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
4979
4980 l_terr_values_tbl(k).qualifier_tbl_index := i;
4981
4982 end loop; /* qval */
4983
4984 elsif acc_type.access_type= 'LEAD' then
4985
4986 i:=i+1;
4987 SELECT JTF_TERR_QTYPE_USGS_S.nextval
4988 into l_terr_qtype_usg_id
4989 FROM DUAL;
4990
4991 l_terr_qualtypeusgs_tbl(i).TERR_QUAL_TYPE_USG_ID:= l_terr_qtype_usg_id;
4992 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE;
4993 l_terr_qualtypeusgs_tbl(i).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
4994 l_terr_qualtypeusgs_tbl(i).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
4995 l_terr_qualtypeusgs_tbl(i).CREATED_BY := p_terr_group_rec.CREATED_BY;
4996 l_terr_qualtypeusgs_tbl(i).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
4997 l_terr_qualtypeusgs_tbl(i).TERR_ID:= null;
4998 l_terr_qualtypeusgs_tbl(i).QUAL_TYPE_USG_ID:=-1002;
4999 l_terr_qualtypeusgs_tbl(i).ORG_ID:=p_ORG_ID;
5000
5001 SELECT JTF_TERR_QUAL_S.nextval
5002 into l_terr_qual_id
5003 FROM DUAL;
5004
5005 /* lead expected purchase */
5006 l_terr_qual_tbl(i).TERR_QUAL_ID :=l_terr_qual_id;
5007 l_terr_qual_tbl(i).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
5008 l_terr_qual_tbl(i).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
5009 l_terr_qual_tbl(i).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
5010 l_terr_qual_tbl(i).CREATED_BY := p_terr_group_rec.CREATED_BY;
5011 l_terr_qual_tbl(i).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
5012 l_terr_qual_tbl(i).TERR_ID:=null;
5013 l_terr_qual_tbl(i).QUAL_USG_ID :=-1018;
5014 l_terr_qual_tbl(i).QUALIFIER_MODE:=NULL;
5015 l_terr_qual_tbl(i).OVERLAP_ALLOWED_FLAG:='N';
5016 l_terr_qual_tbl(i).USE_TO_NAME_FLAG:=NULL;
5017 l_terr_qual_tbl(i).GENERATE_FLAG:=NULL;
5018 l_terr_qual_tbl(i).ORG_ID:=p_ORG_ID;
5019
5020 for qval in role_pi_interest(p_terr_group_rec.terr_group_id,pit.role_code) loop
5021
5022 k:=k+1;
5023
5024 l_terr_values_tbl(k).TERR_VALUE_ID:=null;
5025
5026 l_terr_values_tbl(k).LAST_UPDATED_BY := p_terr_group_rec.last_UPDATED_BY;
5027 l_terr_values_tbl(k).LAST_UPDATE_DATE:= p_terr_group_rec.last_UPDATE_DATE;
5028 l_terr_values_tbl(k).CREATED_BY := p_terr_group_rec.CREATED_BY;
5029 l_terr_values_tbl(k).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
5030 l_terr_values_tbl(k).LAST_UPDATE_LOGIN:= p_terr_group_rec.last_UPDATE_LOGIN;
5031 l_terr_values_tbl(k).TERR_QUAL_ID :=l_terr_qual_id ;
5032 l_terr_values_tbl(k).INCLUDE_FLAG :=NULL;
5033 l_terr_values_tbl(k).COMPARISON_OPERATOR :='=';
5034 l_terr_values_tbl(k).LOW_VALUE_CHAR:= null;
5035 l_terr_values_tbl(k).HIGH_VALUE_CHAR:=null;
5036 l_terr_values_tbl(k).LOW_VALUE_NUMBER :=null;
5037 l_terr_values_tbl(k).HIGH_VALUE_NUMBER :=null;
5038 l_terr_values_tbl(k).VALUE_SET :=NULL;
5039 l_terr_values_tbl(k).INTEREST_TYPE_ID := qval.interest_type_id;
5040 l_terr_values_tbl(k).PRIMARY_INTEREST_CODE_ID:=null;
5041 l_terr_values_tbl(k).SECONDARY_INTEREST_CODE_ID:=null;
5042 l_terr_values_tbl(k).CURRENCY_CODE :=null;
5043 l_terr_values_tbl(k).ORG_ID :=p_ORG_ID;
5044 l_terr_values_tbl(k).ID_USED_FLAG :='N';
5045 l_terr_values_tbl(k).LOW_VALUE_CHAR_ID :=null;
5046
5047
5048 l_terr_values_tbl(k).qualifier_tbl_index := i;
5049
5050 end loop; /* qval */
5051
5052 else
5053 write_log(2,' OVERLAY and NON_OVERLAY role exist for '||p_terr_group_rec.terr_group_id);
5054 --l_terr_qualtypeusgs_tbl(1).ORG_ID:=p_ORG_ID;
5055 end if;
5056
5057 end loop; /* acc_type */
5058
5059 l_init_msg_list :=FND_API.G_TRUE;
5060
5061 jtf_territory_pvt.create_territory (
5062 p_api_version_number => l_api_version_number,
5063 p_init_msg_list => l_init_msg_list,
5064 p_commit => l_commit,
5065 p_validation_level => fnd_api.g_valid_level_NONE,
5066 x_return_status => x_return_status,
5067 x_msg_count => x_msg_count,
5068 x_msg_data => x_msg_data,
5069 p_terr_all_rec => l_terr_all_rec,
5070 p_terr_usgs_tbl => l_terr_usgs_tbl,
5071 p_terr_qualtypeusgs_tbl => l_terr_qualtypeusgs_tbl,
5072 p_terr_qual_tbl => l_terr_qual_tbl,
5073 p_terr_values_tbl => l_terr_values_tbl,
5074 x_terr_id => x_terr_id,
5075 x_terr_usgs_out_tbl => x_terr_usgs_out_tbl,
5076 x_terr_qualtypeusgs_out_tbl => x_terr_qualtypeusgs_out_tbl,
5077 x_terr_qual_out_tbl => x_terr_qual_out_tbl,
5078 x_terr_values_out_tbl => x_terr_values_out_tbl
5079 );
5080
5081 if (x_return_status = 'S') then
5082
5083 UPDATE JTF_TERR_ALL
5084 set TERR_GROUP_FLAG = 'Y'
5085 , TERR_GROUP_ID = p_terr_group_rec.TERR_GROUP_ID
5086 where terr_id = x_terr_id;
5087
5088
5089 write_log(2,' OVERLAY PI Territory Created = '||l_terr_all_rec.NAME);
5090
5091 else
5092 x_msg_data := fnd_msg_pub.get(1, fnd_api.g_false);
5093 write_log(2,x_msg_data);
5094 write_log(2, 'Failed in OVERLAY PI Territory Creation for p_terr_group_rec.ACCOUNT_ID#');
5095
5096 end if; /* x_return_status */
5097
5098
5099 --dbms_output.put_line('pit.role '||pit.role_code);
5100 i:=0;
5101
5102 FOR rsc in terr_resource(overlayterr.geo_territory_id, pit.role_code)
5103 loop
5104
5105 i:=i+1;
5106
5107 SELECT JTF_TERR_RSC_S.nextval
5108 into l_terr_rsc_id
5109 FROM DUAL;
5110
5111 l_TerrRsc_Tbl(i).terr_id := x_terr_id;
5112 l_TerrRsc_Tbl(i).TERR_RSC_ID :=l_terr_rsc_id;
5113 l_TerrRsc_Tbl(i).LAST_UPDATE_DATE:=p_terr_group_rec.LAST_UPDATE_DATE;
5114 l_TerrRsc_Tbl(i).LAST_UPDATED_BY:=p_terr_group_rec.LAST_UPDATED_BY;
5115 l_TerrRsc_Tbl(i).CREATION_DATE:=p_terr_group_rec.CREATION_DATE;
5116 l_TerrRsc_Tbl(i).CREATED_BY:=p_terr_group_rec.CREATED_BY;
5117 l_TerrRsc_Tbl(i).LAST_UPDATE_LOGIN:=p_terr_group_rec.LAST_UPDATE_LOGIN;
5118 --l_TerrRsc_Tbl(i).TERR_ID:=p_terr_group_rec.TERRITORY_ID;
5119 l_TerrRsc_Tbl(i).RESOURCE_ID:=rsc.resource_id;
5120 l_TerrRsc_Tbl(i).RESOURCE_TYPE:=rsc.rsc_resource_type;
5121 l_TerrRsc_Tbl(i).ROLE:=pit.role_code;
5122 --l_TerrRsc_Tbl(i).ROLE:=l_role;
5123 l_TerrRsc_Tbl(i).PRIMARY_CONTACT_FLAG:='N';
5124 l_TerrRsc_Tbl(i).START_DATE_ACTIVE:=p_terr_group_rec.active_from_date ;
5125 l_TerrRsc_Tbl(i).END_DATE_ACTIVE:=p_terr_group_rec.active_to_date ;
5126 l_TerrRsc_Tbl(i).ORG_ID:=p_ORG_ID;
5127 l_TerrRsc_Tbl(i).FULL_ACCESS_FLAG:='Y';
5128 l_TerrRsc_Tbl(i).GROUP_ID:=rsc.rsc_group_id;
5129
5130
5131
5132 a := 0;
5133
5134 for rsc_acc in role_access(p_terr_group_rec.terr_group_id,pit.role_code) loop
5135
5136 if rsc_acc.access_type= 'OPPORTUNITY' then
5137
5138 a := a+1;
5139
5140 SELECT JTF_TERR_RSC_ACCESS_S.nextval
5141 into l_terr_rsc_access_id
5142 FROM DUAL;
5143
5144 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
5145 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
5146 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
5147 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
5148 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_terr_group_rec.CREATED_BY;
5149 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
5150 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
5151 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'OPPOR';
5152 l_TerrRsc_Access_Tbl(a).ORG_ID:= p_ORG_ID;
5153 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
5154
5155 elsif rsc_acc.access_type= 'LEAD' then
5156
5157 a := a+1;
5158
5159 SELECT JTF_TERR_RSC_ACCESS_S.nextval
5160 into l_terr_rsc_access_id
5161 FROM DUAL;
5162
5163 l_TerrRsc_Access_Tbl(a).TERR_RSC_ACCESS_ID:= l_terr_rsc_access_id;
5164 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_DATE:= p_terr_group_rec.LAST_UPDATE_DATE ;
5165 l_TerrRsc_Access_Tbl(a).LAST_UPDATED_BY:= p_terr_group_rec.LAST_UPDATED_BY;
5166 l_TerrRsc_Access_Tbl(a).CREATION_DATE:= p_terr_group_rec.CREATION_DATE;
5167 l_TerrRsc_Access_Tbl(a).CREATED_BY := p_terr_group_rec.CREATED_BY;
5168 l_TerrRsc_Access_Tbl(a).LAST_UPDATE_LOGIN:= p_terr_group_rec.LAST_UPDATE_LOGIN;
5169 l_TerrRsc_Access_Tbl(a).TERR_RSC_ID:= l_terr_rsc_id ;
5170 l_TerrRsc_Access_Tbl(a).ACCESS_TYPE:= 'LEAD';
5171 l_TerrRsc_Access_Tbl(a).ORG_ID:= p_ORG_ID;
5172 l_TerrRsc_Access_Tbl(a).qualifier_tbl_index:= i;
5173 end if;
5174
5175 end loop; /* rsc_acc in role_access */
5176
5177 end loop; /* rsc in resource_grp */
5178
5179 l_init_msg_list :=FND_API.G_TRUE;
5180
5181 jtf_territory_resource_pvt.create_terrresource (
5182 p_api_version_number => l_Api_Version_Number,
5183 p_init_msg_list => l_Init_Msg_List,
5184 p_commit => l_Commit,
5185 p_validation_level => fnd_api.g_valid_level_NONE,
5186 x_return_status => x_Return_Status,
5187 x_msg_count => x_Msg_Count,
5188 x_msg_data => x_msg_data,
5189 p_terrrsc_tbl => l_TerrRsc_tbl,
5190 p_terrrsc_access_tbl => l_terrRsc_access_tbl,
5191 x_terrrsc_out_tbl => x_TerrRsc_Out_Tbl,
5192 x_terrrsc_access_out_tbl => x_TerrRsc_Access_Out_Tbl
5193 );
5194
5195 if x_Return_Status='S' then
5196 write_log(2,'Resource created for Product Interest OVERLAY Territory '||
5197 l_terr_all_rec.NAME);
5198 else
5199 write_log(2,'Failed in Resource creation for Product Interest OVERLAY Territory# '||
5200 x_terr_id);
5201 write_log(2,'Message_data '|| x_msg_data);
5202 end if;
5203
5204
5205
5206 end loop; /* pit */
5207
5208 else
5209 x_msg_data := fnd_msg_pub.get(1, fnd_api.g_false);
5210 write_log(2,x_msg_data);
5211 write_log(2,'Failed in OVERLAY Territory Creation for Territory Group: ' ||
5212 p_terr_group_rec.terr_group_id || ' : ' ||
5213 p_terr_group_rec.terr_group_name );
5214 end if; /* if (x_return_status = 'S' */
5215
5216 end loop; /* overlayterr in get_OVLY_geographies */
5217 /***************************************************************/
5218 /* (8) END: CREATE OVERLAY TERRITORIES FOR TERRITORY GROUP */
5219 /* USING DUNS# QUALIFIER */
5220 /***************************************************************/
5221
5222
5223 end if; /* l_pi_count*/
5224
5225
5226 EXCEPTION
5227 when FND_API.G_EXC_ERROR then
5228 -- JTF_TTY_WORKFLOW_POP_BIN_PVT.print_log (' Error in Synchronizing the SUMM table' || SQLERRM );
5229 RETURN;
5230 when FND_API.G_EXC_UNEXPECTED_ERROR then
5231 -- JTF_TTY_WORKFLOW_POP_BIN_PVT.print_log (' Error in Synchronizing the SUMM table' || SQLERRM );
5232 RETURN;
5233 when others then
5234 -- JTF_TTY_WORKFLOW_POP_BIN_PVT.print_log (' Error in Synchronizing the SUMM table' || SQLERRM );
5235 RETURN;
5236
5237 END create_geography_territory;
5238
5239
5240 END JTF_TTY_NA_GEO_TERR_PVT;