[Home] [Help]
PACKAGE BODY: APPS.JTF_TERRITORY_PVT
Source
1 Package BODY JTF_TERRITORY_PVT AS
2 /* $Header: jtfvterb.pls 120.3 2005/10/14 16:12:30 shli ship $ */
3 -- ---------------------------------------------------
4 -- Start of Comments
5 -- ---------------------------------------------------
6 -- PACKAGE NAME: JTF_TERRITORY_PVT
7 -- ---------------------------------------------------
8 -- PURPOSE
9 -- Joint task force core territory manager private api's.
10 -- This package is defins all private API for manupulating
11 -- territory related information in JTF Territory tables.
12 --
13 -- Procedures:
14 -- (see below for specification)
15 --
16 -- NOTES
17 -- This package is publicly available for use
18 -- HISTORY
19 -- 06/09/99 VNEDUNGA Created
20 -- 11/29/99 VNEDUNGA Fixing update_territory_record API
21 -- for application_short_name
22 -- 01/14/00 VNEDUNGA PASSING ORG_ID to terr_api table handler
23 -- 01/31/00 VNEDUNGA Adding overlap_exists function
24 -- 03/09/00 VNEDUNGA Changing to validaton routines and
25 -- adding FND_MESSAGE calls
26 -- 04/04/00 EIHSU Added Gen_Duplicate_Territory and relevant procs
27 -- 04/20/94 VNEDUNGA Fixing the qualifer validation from returning
28 -- multiple rows
29 -- 05/01/00 VNEDUNGA Adding currency convertion routines
30 -- 05/01/00 VNEDUNGA changing the Delete_Territory API to use
31 -- direct DELETE DMLs. Also changed the API
32 -- to delete the whole hierarchy
33 -- 05/03/00 VNEDUNGA Eliminating ref to _all tables
34 -- 06/14/00 VNEDUNGA Changing the overlap exists function and
35 -- added rownum < 2 to function to return desc
36 -- 07/20/00 JDOCHERT Changed as follows in Create_territory_record
37 -- as this meant that a terr_id passed
38 -- into Create API was ignored:
39 -- l_terr_id := 0;
40 -- TO
41 -- l_terr_id NUMBER := P_TERR_ALL_REC.TERR_ID;
42 -- 08/08/00 jdochert Removing if statement that causes error when LOW_VALUE_CHAR = FND_API.G_MISS_CHAR
43 -- and ID_USED_FLAG = 'Y": this was an error in logic.
44 -- 08/21/00 jdochert Changing overlap_exists procedure to do an UPPER on comparison operator
45 -- 09/09/00 jdochert Added Unique validation for JTF_TERR_USGS_ALL + JTF_TERR_QTYPE_USGS_ALL
46 -- 09/17/00 jdochert BUG#1408610 FIX
47 --
48 -- 10/04/00 jdochert Added validation for NUM_WINNERS
49 -- 11/02/00 jdochert Added processing for NUM_QUAL
50 -- 12/07/00 jdochert
51 -- 04/05/01 ARPATEL Added processing for copy hierarchy in proc 'Copy Territory'
52 -- 04/12/01 jdochert Added PROCEDURE chk_num_copy_terr
53 -- 04/20/01 ARPATEL Added Concurrent_Copy_Territory procedure for concurrent requests
54 -- 04/28/01 ARPATEL Added FUNCTION conc_req_copy_terr returning concurrent request ID.
55 -- 05/22/01 ARPATEL Added CNR_GROUP_ID to cursors selecting from JTF_TERR_VALUES.
56 -- 07/13/01 ARPATEL Added validation for territory templates without 'DYNAMIC QUALIFIERS'
57 -- 09/06/01 ARPATEL Added VALUE1_ID, VALUE2_ID AND VALUE3_ID to JTF_TERR_VALUES cursors
58 -- and procedure create_new_terr_value_rec
59 -- 09/18/01 ARPATEL Removed debug message level checks to enable form to pick up these messages
60 -- 12/03/04 achanda Added value4_id : bug # 3726007
61 --
62 --
63 -- End of Comments
64 --
65
66 -- ***************************************************
67 -- GLOBAL VARIABLES
68 -- ***************************************************
69 G_PKG_NAME CONSTANT VARCHAR2(30):='JTF_TERRITORY_PVT';
70 G_FILE_NAME CONSTANT VARCHAR2(12):='jtfvterb.pls';
71
72
73 G_APPL_ID NUMBER := FND_GLOBAL.Prog_Appl_Id;
74 G_LOGIN_ID NUMBER := FND_GLOBAL.Conc_Login_Id;
75 G_PROGRAM_ID NUMBER := FND_GLOBAL.Conc_Program_Id;
76 G_USER_ID NUMBER := FND_GLOBAL.User_Id;
77 G_REQUEST_ID NUMBER := FND_GLOBAL.Conc_Request_Id;
78 G_APP_SHORT_NAME VARCHAR2(15) := FND_GLOBAL.Application_Short_Name;
79 /* ARPATEL 041801 */
80 G_Debug BOOLEAN := FALSE;
81
82 /*-------------------*/
83 /* TYPE declarations */
84 /*-------------------*/
85
86 /* stores info about each qualifier used in mass generation of templates
87 ** from a template territory
88 ** start_record stores a pointer to the first record for the qualifier
89 ** in g_values_table.
90 ** num_records stores the number of values for the qualifier in
91 ** g_values_table.
92 ** current_record stores pointer to the current record used during
93 ** the generation process.
94 */
95 TYPE Dynamic_Qual_Rec_Type IS RECORD (
96 Rowid VARCHAR2(50) , -- := FND_API.G_MISS_CHAR,
97 TERR_QUAL_ID NUMBER , -- := FND_API.G_MISS_NUM,
98 LAST_UPDATE_DATE DATE , -- := FND_API.G_MISS_DATE,
99 LAST_UPDATED_BY NUMBER , -- := FND_API.G_MISS_NUM,
100 CREATION_DATE DATE , -- := FND_API.G_MISS_DATE,
101 CREATED_BY NUMBER , -- := FND_API.G_MISS_NUM,
102 LAST_UPDATE_LOGIN NUMBER , -- := FND_API.G_MISS_NUM,
103 TERR_ID NUMBER , -- := FND_API.G_MISS_NUM,
104 QUAL_USG_ID NUMBER , -- := FND_API.G_MISS_NUM,
105 USE_TO_NAME_FLAG VARCHAR2(1) , -- := FND_API.G_MISS_CHAR,
106 GENERATE_FLAG VARCHAR2(1) , -- := FND_API.G_MISS_CHAR,
107 OVERLAP_ALLOWED_FLAG VARCHAR2(1) , -- := FND_API.G_MISS_CHAR,
108 QUALIFIER_MODE VARCHAR2(30) , -- := FND_API.G_MISS_CHAR,
109 ORG_ID NUMBER -- := FND_API.G_MISS_NUM
110 , START_RECORD NUMBER
111 , NUM_RECORDS NUMBER
112 , CURRENT_VALUE_SET NUMBER
113 , CURRENT_RECORD NUMBER );
114
115 TYPE Dynamic_Qual_Tbl_Type IS TABLE OF Dynamic_Qual_Rec_Type
116 INDEX BY BINARY_INTEGER;
117
118
119 -- ***************************************************
120 -- start of comments
121 -- ***************************************************
122 -- API name : Create_Territory
123 -- Type : PUBLIC
124 -- Function : To create Territories - which inludes the creation of
125 -- following Territory Header, Territory Qualifier, terr Usages,
126 -- qualifier type usages Territory Qualifier Values
127 --
128 -- Pre-reqs :
129 -- Parameters:
130 -- IN :
131 -- Required
132 -- Parameter Name Data Type Default
133 -- p_Api_Version_Number NUMBER
134 -- p_Terr_All_Rec Terr_All_Rec_Type := G_Miss_Terr_All_Rec
135 -- p_Terr_Usgs_Tbl Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl
136 -- p_Terr_QualTypeUsgs_Tbl Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl
137 -- p_Terr_Qual_Tbl Terr_Qual_Tbl_Type := G_Miss_Terr_Qual_Tbl
138 -- p_Terr_Values_Tbl Terr_Values_Tbl_Type := G_Miss_Terr_Values_Tbl
139 --
140 -- Optional
141 -- Parameter Name Data Type Default
142 -- p_Init_Msg_List VARCHAR2 := FND_API.G_FALSE
143 -- p_Commit VARCHAR2 := FND_API.G_FALSE
144 -- p_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL,
145 --
146 -- OUT :
147 -- Parameter Name Data Type
148 -- x_Return_Status VARCHAR2(1)
149 -- x_Msg_Count NUMBER
150 -- x_Msg_Data VARCHAR2(2000)
151 -- x_Terr_Id NUMBER
152 -- x_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl,
153 -- x_Terr_QualTypeUsgs_Out_Tbl Terr_QualTypeUsgs_Out_Tbl,
154 -- x_Terr_Qual_Out_Tbl Terr_Qual_Out_Tbl,
155 -- x_Terr_Values_Out_Tbl Terr_Values_Out_Tbl
156 --
157 --
158 -- Notes:
159 -- Business Rules:
160 -- 1. Make sure terr usages and terr qual usages are specified.
161 -- 2. Make sure the qualifer matches the qualifer type usage
162 -- 3. Make sure value records exists for every qualifer
163 --
164 -- End of Comments
165 --
166 PROCEDURE Create_Territory
167 (p_Api_Version_Number IN NUMBER,
168 p_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
169 p_Commit IN VARCHAR2 := FND_API.G_FALSE,
170 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
171 x_Return_Status OUT NOCOPY VARCHAR2,
172 x_Msg_Count OUT NOCOPY NUMBER,
173 x_Msg_Data OUT NOCOPY VARCHAR2,
174 p_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
175 p_Terr_Usgs_Tbl IN Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl,
176 p_Terr_QualTypeUsgs_Tbl IN Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl,
177 p_Terr_Qual_Tbl IN Terr_Qual_Tbl_Type := G_Miss_Terr_Qual_Tbl,
178 p_Terr_Values_Tbl IN Terr_Values_Tbl_Type := G_Miss_Terr_Values_Tbl,
179 x_Terr_Id OUT NOCOPY NUMBER,
180 x_Terr_Usgs_Out_Tbl OUT NOCOPY Terr_Usgs_Out_Tbl_Type,
181 x_Terr_QualTypeUsgs_Out_Tbl OUT NOCOPY Terr_QualTypeUsgs_Out_Tbl_Type,
182 x_Terr_Qual_Out_Tbl OUT NOCOPY Terr_Qual_Out_Tbl_Type,
183 x_Terr_Values_Out_Tbl OUT NOCOPY Terr_Values_Out_Tbl_Type)
184 AS
185 l_api_name CONSTANT VARCHAR2(30) := 'Create_Territory';
186 l_api_version_number CONSTANT NUMBER := 1.0;
187
188 -- Status Local Variables
189 l_return_status VARCHAR2(1); -- Return value from procedures
190 l_return_status_full VARCHAR2(1); -- Calculated return status from -- all return values
191
192 l_terr_all_out_rec Terr_ALL_OUT_REC_TYPE;
193 l_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl_Type;
194 l_Terr_QualTypeUsgs_Out_Tbl Terr_QualTypeUsgs_Out_Tbl_Type;
195 l_Terr_Qual_Out_Tbl Terr_Qual_Out_Tbl_Type;
196 l_Terr_Values_Out_Tbl Terr_Values_Out_Tbl_Type;
197
198 l_Terr_Qual_Tbl Terr_Qual_Tbl_Type;
199 l_Terr_Values_Tbl Terr_Values_Tbl_Type;
200 l_Terr_Id NUMBER := 0;
201 l_Terr_Qual_Id NUMBER := 0;
202 l_Qual_Counter NUMBER := 1;
203 l_QualVal_Counter NUMBER := 0;
204 l_counter NUMBER := 0;
205 l_index NUMBER := 0;
206
207 l_msg_count NUMBER;
208 l_msg_data VARCHAR2(2000);
209 L_SHORT_NAME VARCHAR2(15);
210
211 BEGIN
212 --dbms_output('Create_Territory PVT: Entering API -' || G_APP_SHORT_NAME);
213
214 -- Standard Start of API savepoint
215 SAVEPOINT CREATE_TERRITORY_PVT;
216
217 -- Standard call to check for call compatibility.
218 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
219 p_api_version_number,
220 l_api_name,
221 G_PKG_NAME)
222 THEN
223 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
224 END IF;
225
226 -- Initialize message list if p_init_msg_list is set to TRUE.
227 IF FND_API.to_Boolean( p_init_msg_list ) THEN
228 FND_MSG_PUB.initialize;
229 END IF;
230
231 -- Debug Message
232 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
233 THEN
234 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
235 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
236 FND_MSG_PUB.Add;
237 END IF;
238
239 -- Initialize API return status to success
240 x_return_status := FND_API.G_RET_STS_SUCCESS;
241 --
242 --Check whether the Usage records are specified
243 If (p_Terr_Usgs_Tbl.COUNT = 0 ) Then
244 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
245 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_TERR_USAGE');
246 FND_MSG_PUB.ADD;
247 END IF;
248 x_return_status := FND_API.G_RET_STS_ERROR;
249 raise FND_API.G_EXC_ERROR;
250 END IF;
251 --
252 --dbms_output('About to check p_Terr_Values_Tbl.count - ' || to_char(p_Terr_Values_Tbl.count));
253 --
254 -- Check whether the Terr Transaction Types are specified.
255 If (p_Terr_QualTypeUsgs_Tbl.COUNT = 0 and
256 p_Terr_All_Rec.ESCALATION_TERRITORY_FLAG <> 'Y') Then
257 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
258 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_TERR_QUAL_USG');
259 FND_MSG_PUB.ADD;
260 END IF;
261 x_return_status := FND_API.G_RET_STS_ERROR;
262 raise FND_API.G_EXC_ERROR;
263 END IF;
264 --
265 --
266 -- API body
267 --
268 --
269 -- If incomming data is good
270 -- Start creating territory related records
271 --
272 --dbms_output('Create_Territory PVT: Before Calling Create_Territory_Header');
273 --
274 Create_Territory_Header(P_Api_Version_Number => P_Api_Version_Number,
275 P_Init_Msg_List => P_Init_Msg_List,
276 P_Commit => P_Commit,
277 p_validation_level => p_validation_level,
278 P_Terr_All_Rec => P_Terr_All_Rec,
279 P_Terr_Usgs_Tbl => P_Terr_Usgs_Tbl,
280 P_Terr_QualTypeUsgs_Tbl => P_Terr_QualTypeUsgs_Tbl,
281 X_Return_Status => l_Return_Status,
282 X_Msg_Count => l_Msg_Count,
283 X_Msg_Data => l_Msg_Data,
284 X_Terr_All_Out_Rec => l_Terr_All_Out_Rec,
285 X_Terr_Usgs_Out_Tbl => l_Terr_Usgs_Out_Tbl,
286 X_Terr_QualTypeUsgs_Out_Tbl => l_Terr_QualTypeUsgs_Out_Tbl);
287
288 --Save the territory id for later use
289 l_terr_id := l_Terr_All_Out_Rec.terr_id;
290 X_terr_id := l_Terr_All_Out_Rec.terr_id;
291
292 x_Terr_Usgs_Out_Tbl := l_Terr_Usgs_Out_Tbl;
293 x_Terr_QualTypeUsgs_Out_Tbl := l_Terr_QualTypeUsgs_Out_Tbl;
294
295 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
296 X_Return_Status := l_return_status;
297 RAISE FND_API.G_EXC_ERROR;
298 END IF;
299
300 --dbms_output.put_line('Value of x_return_status='|| x_return_status);
301
302 --Check whether the Qualifer records are specified
303 --If (p_Terr_Qual_Tbl.count = 0 ) Then
304 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
305 -- FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_TERR_QUAL');
306 -- FND_MSG_PUB.ADD;
307 -- END IF;
308 -- x_return_status := FND_API.G_RET_STS_ERROR;
309 -- raise FND_API.G_EXC_ERROR;
310 --END IF;
311 --
312
313 IF (p_Terr_Qual_Tbl.COUNT > 0 ) THEN
314
315 --
316 -- JDOCHERT 07/27 Territory Values no longer required
317 --dbms_output('About to check p_Terr_Values_Tbl.count - ' || to_char(p_Terr_Values_Tbl.count));
318 --If (p_Terr_Values_Tbl.Count = 0 ) Then
319 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
320 -- FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_TERR_VALUES');
321 -- FND_MSG_PUB.ADD;
322 -- END IF;
323 -- x_return_status := FND_API.G_RET_STS_ERROR;
324 -- raise FND_API.G_EXC_ERROR;
325 -- END IF;
326 --
327
328 For l_Qual_Counter IN p_Terr_Qual_Tbl.first .. p_Terr_Qual_Tbl.count LOOP
329 --
330 l_Terr_Qual_Tbl(1) := p_Terr_Qual_Tbl(l_Qual_Counter);
331
332 --
333 --dbms_output('Create_Territory PVT: Inside the l_Qual_Counter LOOP');
334 --dbms_output('Create_Territory PVT: Before calling create terr qualifier');
335 --
336 -- Create the territory qualifier record
337 --
338 --dbms_output('Create_Territory PVT: Before calling Create_Terr_Qualifier');
339 Create_Terr_Qualifier(P_Api_Version_Number => P_Api_Version_Number,
340 P_Init_Msg_List => P_Init_Msg_List,
341 P_Commit => P_Commit,
342 p_validation_level => p_validation_level,
343 P_Terr_Id => l_terr_id,
344 P_Terr_Qual_Tbl => l_Terr_Qual_Tbl,
345 X_Return_Status => l_Return_Status,
346 X_Msg_Count => l_Msg_Count,
347 X_Msg_Data => l_Msg_Data,
348 X_Terr_Qual_Out_Tbl => l_Terr_Qual_Out_Tbl);
349
350 --Save the output status
351 x_Terr_Qual_Out_Tbl(nvl(x_Terr_Qual_Out_Tbl.first, 0)+1) := l_Terr_Qual_Out_Tbl(1);
352 -- Save the terr qualifier id
353 l_Terr_Qual_Id := l_Terr_Qual_Out_Tbl(1).terr_qual_id;
354
355 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
356 X_Return_Status := l_return_status;
357 RAISE FND_API.G_EXC_ERROR;
358 END IF;
359
360 -- JDOCHERT 07/27 Territory Values no longer required
361 IF (p_Terr_Values_Tbl.COUNT > 0) THEN
362
363 l_terr_values_tbl.DELETE;
364 l_index := 0;
365
366 -- Save the qual value records for a particular qualifer into
367 -- local table
368 FOR l_QualVal_Counter IN p_Terr_Values_Tbl.FIRST .. p_Terr_Values_Tbl.LAST LOOP
369 -- Initalize the table
370 -- dbms_output('Create_Territory PVT: Inside l_QualVal_Counter loop - ' || to_char(l_QualVal_Counter) );
371 -- If the table index changes, then skip the loop
372 If p_Terr_Values_Tbl(l_QualVal_Counter).qualifier_tbl_index = l_Qual_Counter Then
373 l_index := l_index + 1;
374 --dbms_output('Create_Territory PVT: Found values - ' || to_char(l_Qual_Counter) || ' Index - ' || to_char(l_index) );
375 l_Terr_Values_Tbl(l_index) := p_Terr_Values_Tbl(l_QualVal_Counter);
376 End If;
377
378 END LOOP;
379
380 --
381 -- JDOCHERT 07/27 Territory Values no longer required
382 --If l_Index = 0 Then
383 -- x_return_status := FND_API.G_RET_STS_ERROR;
384 -- FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_TERR_VALUES');
385 -- FND_MSG_PUB.ADD;
386 -- raise FND_API.G_EXC_ERROR;
387 --End If;
388 --
389
390 IF (l_terr_values_tbl.COUNT > 0) THEN
391
392 --dbms_output('Create_Territory PVT: Before calling create terr qualifier values');
393 --
394 l_Terr_Values_Out_Tbl.Delete;
395 Create_Terr_Value( P_Api_Version_Number => P_Api_Version_Number,
396 P_Init_Msg_List => P_Init_Msg_List,
397 P_Commit => P_Commit,
398 p_validation_level => p_validation_level,
399 P_Terr_Id => l_terr_id,
400 p_terr_qual_id => l_Terr_Qual_Id,
401 P_Terr_Value_Tbl => l_Terr_Values_Tbl,
402 X_Return_Status => l_Return_Status,
403 X_Msg_Count => l_Msg_Count,
404 X_Msg_Data => l_Msg_Data,
405 X_Terr_Value_Out_Tbl => l_Terr_Values_Out_Tbl);
406 --
407 l_index := x_Terr_Values_Out_Tbl.COUNT;
408 --
409 -- Save the OUT parameters to the original API out parametrs
410 For l_Counter IN l_Terr_Values_Out_Tbl.FIRST .. l_Terr_Values_Out_Tbl.LAST LOOP
411 l_index := l_index + 1;
412 x_Terr_Values_Out_Tbl(l_index) := l_Terr_Values_Out_Tbl(l_counter);
413 End LOOP;
414
415 END IF;
416
417 --
418 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
419 X_Return_Status := l_return_status;
420 RAISE FND_API.G_EXC_ERROR;
421 END IF;
422
423 END IF; /* IF (l_terr_values_tbl.COUNT > 0) */
424
425 -- Reset the table and records to G_MISS_RECORD and G_MISS_TABLE
426 l_Terr_Qual_Tbl := G_MISS_TERR_QUAL_TBL;
427 l_Terr_Values_Tbl := G_MISS_TERR_VALUES_TBL;
428 --
429 End LOOP;
430
431 END IF; /* p_Terr_Qual_Tbl.count > 0 */
432
433 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
434 X_Return_Status := l_return_status;
435 RAISE FND_API.G_EXC_ERROR;
436 END IF;
437
438 --If the program reached here, that mena evry thing went smooth
439 x_return_status := FND_API.G_RET_STS_SUCCESS;
440
441 -- Debug Message
442 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
443 THEN
444 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
445 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
446 FND_MSG_PUB.Add;
447 END IF;
448
449
450 FND_MSG_PUB.Count_And_Get
451 ( p_count => x_msg_count,
452 p_data => x_msg_data
453 );
454
455 -- Standard check for p_commit
456 IF FND_API.to_Boolean( p_commit )
457 THEN
458 COMMIT WORK;
459 END IF;
460 --
461 EXCEPTION
462 --
463 WHEN FND_API.G_EXC_ERROR THEN
464 --dbms_output('Create_Territory PVT: FND_API.G_EXC_ERROR');
465 ROLLBACK TO CREATE_TERRITORY_PVT;
466 x_return_status := FND_API.G_RET_STS_ERROR ;
467 FND_MSG_PUB.Count_And_Get
468 ( p_count => x_msg_count,
469 p_data => x_msg_data
470 );
471
472 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
473 --dbms_output('Create_Territory PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
474 ROLLBACK TO CREATE_TERRITORY_PVT;
475 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
476 FND_MSG_PUB.Count_And_Get
477 ( p_count => x_msg_count,
478 p_data => x_msg_data
479 );
480
481 WHEN OTHERS THEN
482 --dbms_output('Create_Territory PVT: OTHERS - ' || SQLERRM);
483 ROLLBACK TO CREATE_TERRITORY_PVT;
484 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
485 FND_MSG_PUB.Count_And_Get
486 ( p_count => x_msg_count,
487 p_data => x_msg_data
488 );
489 --
490 END Create_Territory;
491
492
493 -- ***************************************************
494 -- start of comments
495 -- ***************************************************
496 --
497 -- API name : Delete_Territory
498 --- Type : PUBLIC
499 -- Function : To delete Territories - which would also delete
500 -- Territory Header, Territory Qualifier,
501 -- Territory Qualifier Values and Resources.
502 --
503 -- Pre-reqs :
504 -- Parameters:
505 -- IN :
506 -- Required
507 -- Parameter Name Data Type Default
508 -- p_Api_Version_Number NUMBER
509 -- p_Terr_Id NUMBER
510 --
511 -- Optional
512 -- Parameter Name Data Type Default
513 -- p_Init_Msg_List VARCHAR2 FND_API.G_FALSE
514 -- p_Commit VARCHAR2 FND_API.G_FALSE
515 -- p_validation_level NUMBER FND_API.G_VALID_LEVEL_FULL,
516 --
517 -- OUT :
518 -- Parameter Name Data Type
519 -- X_Return_Status VARCHAR2(1)
520 -- X_Msg_Count NUMBER
521 -- X_Msg_Data VARCHAR2(2000)
522 --
523 --
524 -- Notes:
525 -- Rules for deletion have to be very strict.
526 --
527 -- End of Comments
528 --
529 PROCEDURE Delete_Territory
530 (p_Api_Version_Number IN NUMBER,
531 p_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
532 p_Commit IN VARCHAR2 := FND_API.G_FALSE,
533 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
534 X_Return_Status OUT NOCOPY VARCHAR2,
535 X_Msg_Count OUT NOCOPY NUMBER,
536 X_Msg_Data OUT NOCOPY VARCHAR2,
537 p_Terr_Id IN NUMBER)
538 AS
539 v_Terr_Id NUMBER := p_Terr_Id;
540
541 --Declare cursor to get usages
542 Cursor C_Terr IS
543 select terr_id from jtf_terr_all
544 connect by parent_territory_id = prior terr_id AND TERR_ID <> 1
545 start with terr_id = v_Terr_Id;
546
547
548 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Territory';
549 l_api_version_number CONSTANT NUMBER := 1.0;
550
551 l_return_status VARCHAR2(1);
552 l_Terr_Value_Id NUMBER;
553 l_Terr_Qual_Id NUMBER;
554 l_Terr_Usg_Id NUMBER;
555 l_Terr_Qual_Type_Usg_Id NUMBER;
556 l_Terr_Id NUMBER;
557
558 BEGIN
559 --
560 --dbms_output('Delete_Territory PVT: Entering API');
561
562 -- Standard Start of API savepoint
563 SAVEPOINT Delete_Territory_Pvt;
564
565 -- Standard call to check for call compatibility.
566 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
567 p_api_version_number,
568 l_api_name,
569 G_PKG_NAME)
570 THEN
571 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
572 END IF;
573
574 -- Initialize message list if p_init_msg_list is set to TRUE.
575 IF FND_API.to_Boolean( p_init_msg_list ) THEN
576 FND_MSG_PUB.initialize;
577 END IF;
578
579 -- Debug Message
580 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
581 THEN
582 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
583 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
584 FND_MSG_PUB.Add;
585 END IF;
586
587 -- Initialize API return status to success
588 x_return_status := FND_API.G_RET_STS_SUCCESS;
589
590 -- Get all the Territories in the Hierarchy
591 FOR c in c_Terr LOOP
592 --
593 --Delete Territory Values
594 DELETE from JTF_TERR_VALUES_ALL WHERE TERR_QUAL_ID IN
595 ( SELECT TERR_QUAL_ID FROM JTF_TERR_QUAL_ALL WHERE TERR_ID = c.Terr_Id );
596
597 --Delete Territory Qualifer records
598 DELETE from JTF_TERR_QUAL_ALL WHERE TERR_ID = c.Terr_Id;
599
600 --Delete Territory qual type usgs
601 DELETE from JTF_TERR_QTYPE_USGS_ALL WHERE TERR_ID = c.Terr_Id;
602
603 --Delete Territory usgs
604 DELETE from JTF_TERR_USGS_ALL WHERE TERR_ID = c.Terr_Id;
605
606 --Delete Territory Resource Access
607 DELETE from JTF_TERR_RSC_ACCESS_ALL WHERE TERR_RSC_ID IN
608 ( SELECT TERR_RSC_ID FROM JTF_TERR_RSC_ALL WHERE TERR_ID = c.Terr_Id );
609
610 -- Delete the Territory Resource records
611 DELETE from JTF_TERR_RSC_ALL Where TERR_ID = c.Terr_Id;
612
613 --Delete Territory record
614 DELETE from JTF_TERR_ALL WHERE TERR_ID = c.Terr_Id;
615
616 --
617 END LOOP;
618
619 -- Debug Message
620 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
621 THEN
622 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
623 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
624 FND_MSG_PUB.Add;
625 END IF;
626
627
628 FND_MSG_PUB.Count_And_Get
629 ( p_count => x_msg_count,
630 p_data => x_msg_data
631 );
632
633 -- Standard check for p_commit
634 IF FND_API.to_Boolean( p_commit )
635 THEN
636 COMMIT WORK;
637 END IF;
638 --
639 --dbms_output('Delete_Territory PVT: Exiting API');
640
641 EXCEPTION
642 --
643 WHEN FND_API.G_EXC_ERROR THEN
644 --dbms_output('Delete_Territory PVT: FND_API.G_EXC_ERROR');
645 --
646 ROLLBACK TO DELETE_TERRITORY_PVT;
647 x_return_status := FND_API.G_RET_STS_ERROR ;
648 FND_MSG_PUB.Count_And_Get
649 ( p_count => x_msg_count,
650 p_data => x_msg_data
651 );
652
653 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
654 --dbms_output('Delete_Territory PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
655 ROLLBACK TO DELETE_TERRITORY_PVT;
656 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
657 FND_MSG_PUB.Count_And_Get
658 ( p_count => x_msg_count,
659 p_data => x_msg_data
660 );
661
662 WHEN OTHERS THEN
663 --dbms_output('Delete_Territory PVT: OTHERS - ' || SQLERRM);
664 ROLLBACK TO DELETE_TERRITORY_PVT;
665 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
666 FND_MSG_PUB.Count_And_Get
667 ( p_count => x_msg_count,
668 p_data => x_msg_data
669 );
670 --
671 END Delete_Territory;
672
673
674 -- ***************************************************
675 -- start of comments
676 -- ***************************************************
677 -- API name : Update_Territory
678 -- Type : PUBLIC
679 -- Function : To update existINg Territories - which includes updates to the following tables
680 -- Territory Header, Territory Qualifier, terr Usages, qualifier type usages
681 -- Territory Qualifier Values and Assign Resources
682 -- Pre-reqs :
683 -- Parameters:
684 -- IN :
685 -- Required
686 -- Parameter Name Data Type Default
687 -- p_Api_Version_Number NUMBER
688 -- p_Terr_All_Rec Terr_All_Rec_Type := G_Miss_Terr_All_Rec
689 -- p_Terr_Usgs_Tbl Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl
690 -- p_Terr_QualTypeUsgs_Tbl Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl
691 -- p_Terr_Qual_Tbl Terr_Qual_Tbl_Type := G_Miss_Terr_Qual_Tbl
692 -- p_Terr_Values_Tbl Terr_Values_Tbl_Type := G_Miss_Terr_Values_Tbl
693 --
694 -- Optional
695 -- Parameter Name Data Type Default
696 -- p_Init_Msg_List VARCHAR2 := FND_API.G_FALSE
697 -- p_Commit VARCHAR2 := FND_API.G_FALSE
698 -- p_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL,
699 --
700 -- OUT :
701 -- Parameter Name Data Type
702 -- X_Return_Status VARCHAR2(1)
703 -- X_Msg_Count NUMBER
704 -- X_Msg_Data VARCHAR2(2000)
705 -- X_Terr_All_Out_Rec Terr_All_Out_Rec
706 -- X_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl,
707 -- X_Terr_QualTypeUsgs_Out_Tbl Terr_QualTypeUsgs_Out_Tbl,
708 -- X_Terr_Qual_Out_Tbl Terr_Qual_Out_Tbl,
709 -- X_Terr_Values_Out_Tbl Terr_Values_Out_Tbl
710 --
711 --
712 -- Notes:
713 --
714 --
715 -- End of Comments
716 --
717 PROCEDURE Update_Territory
718 (p_Api_Version_Number IN NUMBER,
719 p_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
720 p_Commit IN VARCHAR2 := FND_API.G_FALSE,
721 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
722 X_Return_Status OUT NOCOPY VARCHAR2,
723 X_Msg_Count OUT NOCOPY NUMBER,
724 X_Msg_Data OUT NOCOPY VARCHAR2,
725 p_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
726 p_Terr_Usgs_Tbl IN Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl,
727 p_Terr_QualTypeUsgs_Tbl IN Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl,
728 p_Terr_Qual_Tbl IN Terr_Qual_Tbl_Type := G_Miss_Terr_Qual_Tbl,
729 p_Terr_Values_Tbl IN Terr_Values_Tbl_Type := G_Miss_Terr_Values_Tbl,
730 X_Terr_All_Out_Rec OUT NOCOPY Terr_All_Out_Rec_Type,
731 X_Terr_Usgs_Out_Tbl OUT NOCOPY Terr_Usgs_Out_Tbl_Type,
732 X_Terr_QualTypeUsgs_Out_Tbl OUT NOCOPY Terr_QualTypeUsgs_Out_Tbl_Type,
733 X_Terr_Qual_Out_Tbl OUT NOCOPY Terr_Qual_Out_Tbl_Type,
734 X_Terr_Values_Out_Tbl OUT NOCOPY Terr_Values_Out_Tbl_Type)
735 AS
736 l_api_name CONSTANT VARCHAR2(30) := 'Update_Territory';
737 l_api_version_number CONSTANT NUMBER := 1.0;
738 l_return_status VARCHAR2(1);
739 BEGIN
740 --dbms_output('Update_Territory PVT: Entering API');
741
742 -- Standard Start of API savepoint
743 SAVEPOINT UPDATE_TERRITORY_PVT;
744
745 -- Standard call to check for call compatibility.
746 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
747 p_api_version_number,
748 l_api_name,
749 G_PKG_NAME)
750 THEN
751 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
752 END IF;
753
754 -- Initialize message list if p_init_msg_list is set to TRUE.
755 IF FND_API.to_Boolean( p_init_msg_list ) THEN
756 FND_MSG_PUB.initialize;
757 END IF;
758
759 -- Debug Message
760 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
761 THEN
762 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
763 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
764 FND_MSG_PUB.Add;
765 END IF;
766
767 -- Initialize API return status to success
768 x_return_status := FND_API.G_RET_STS_SUCCESS;
769 --
770 -- API body
771 --
772
773 --Check whether the Territory_Id is Valid
774 If p_Terr_All_Rec.Terr_Id <> FND_API.G_MISS_NUM Then
775 --dbms_output('Update_Territory PVT: Before Calling Update_territory_Record');
776 Update_territory_Record( P_Api_Version_Number => P_Api_Version_Number,
777 P_Init_Msg_List => P_Init_Msg_List,
778 P_Commit => P_Commit,
779 p_validation_level => p_validation_level,
780 P_Terr_All_Rec => p_Terr_All_Rec,
781 X_Return_Status => l_Return_Status,
782 X_Msg_Count => x_Msg_Count,
783 X_Msg_Data => x_Msg_Data,
784 X_Terr_All_Out_rec => X_Terr_All_Out_Rec);
785 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
786 RAISE FND_API.G_EXC_ERROR;
787 END IF;
788 --
789 End If;
790
791 -- Check whether ant data is passed for update of value table
792 If P_Terr_Usgs_Tbl.Count > 0 Then
793 --
794 --dbms_output('Update_Territory PVT: Before Calling Update_Terr_QualType_Usage');
795 Update_Territory_Usages( P_Api_Version_Number => P_Api_Version_Number,
796 P_Init_Msg_List => P_Init_Msg_List,
797 P_Commit => P_Commit,
798 p_validation_level => p_validation_level,
799 P_Terr_Usgs_Tbl => p_Terr_Usgs_Tbl,
800 X_Return_Status => l_Return_Status,
801 X_Msg_Count => x_Msg_Count,
802 X_Msg_Data => x_Msg_Data,
803 X_Terr_Usgs_Out_Tbl => X_Terr_Usgs_Out_Tbl);
804 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
805 RAISE FND_API.G_EXC_ERROR;
806 END IF;
807 --
808 End If;
809
810
811 -- Check whether ant data is passed for update of value table
812 If P_Terr_QualTypeUsgs_Tbl.Count > 0 Then
813 --
814 --dbms_output('Update_Territory PVT: Before Calling Update_Terr_QualType_Usage');
815 Update_Terr_QualType_Usage( P_Api_Version_Number => P_Api_Version_Number,
816 P_Init_Msg_List => P_Init_Msg_List,
817 P_Commit => P_Commit,
818 p_validation_level => p_validation_level,
819 P_Terr_QualTypeUsgs_Tbl => p_Terr_QualTypeUsgs_Tbl,
820 X_Return_Status => l_Return_Status,
821 X_Msg_Count => x_Msg_Count,
822 X_Msg_Data => x_Msg_Data,
823 X_Terr_QualTypeUsgs_Out_Tbl => X_Terr_QualTypeUsgs_Out_Tbl);
824 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
825 RAISE FND_API.G_EXC_ERROR;
826 END IF;
827 --
828 End If;
829
830 -- Check whether ant data is passed for update of Qualifier table
831 If P_Terr_Qual_Tbl.Count > 0 Then
832 --
833 --dbms_output('Update_Territory PVT: Before Calling Update_Terr_Qualifier');
834 Update_Terr_Qualifier( P_Api_Version_Number => P_Api_Version_Number,
835 P_Init_Msg_List => P_Init_Msg_List,
836 P_Commit => P_Commit,
837 p_validation_level => p_validation_level,
838 P_Terr_Qual_Tbl => p_Terr_Qual_Tbl,
839 X_Return_Status => l_Return_Status,
840 X_Msg_Count => x_Msg_Count,
841 X_Msg_Data => x_Msg_Data,
842 X_Terr_Qual_Out_Tbl => X_Terr_Qual_Out_Tbl);
843 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
844 RAISE FND_API.G_EXC_ERROR;
845 END IF;
846 --
847 End If;
848
849 -- Check whether ant data is passed for update of value table
850 If P_Terr_Values_Tbl.Count > 0 Then
851 --dbms_output('Update_Territory PVT: Before Calling Update_Terr_Value');
852 Update_Terr_Value( P_Api_Version_Number => P_Api_Version_Number,
853 P_Init_Msg_List => P_Init_Msg_List,
854 P_Commit => P_Commit,
855 p_validation_level => p_validation_level,
856 P_Terr_Value_Tbl => p_Terr_Values_Tbl,
857 X_Return_Status => l_Return_Status,
858 X_Msg_Count => x_Msg_Count,
859 X_Msg_Data => x_Msg_Data,
860 X_Terr_Value_Out_Tbl => X_Terr_Values_Out_Tbl);
861 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
862 RAISE FND_API.G_EXC_ERROR;
863 END IF;
864 End If;
865 --
866
867 -- Debug Message
868 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
869 THEN
870 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
871 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
872 FND_MSG_PUB.Add;
873 END IF;
874
875
876 FND_MSG_PUB.Count_And_Get
877 ( p_count => x_msg_count,
878 p_data => x_msg_data
879 );
880
881 -- Standard check for p_commit
882 IF FND_API.to_Boolean( p_commit )
883 THEN
884 COMMIT WORK;
885 END IF;
886 --
887 --dbms_output('Update_Territory PVT: Exiting API');
888
889 --
890 EXCEPTION
891 --
892 WHEN FND_API.G_EXC_ERROR THEN
893 --dbms_output('Update_Territory PVT: FND_API.G_EXC_ERROR');
894 ROLLBACK TO UPDATE_TERRITORY_PVT;
895 x_return_status := FND_API.G_RET_STS_ERROR ;
896 FND_MSG_PUB.Count_And_Get
897 ( p_count => x_msg_count,
898 p_data => x_msg_data
899 );
900
901 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
902 --dbms_output('Update_Territory PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
903 ROLLBACK TO UPDATE_TERRITORY_PVT;
904 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
905 FND_MSG_PUB.Count_And_Get
906 ( p_count => x_msg_count,
907 p_data => x_msg_data
908 );
909
910 WHEN OTHERS THEN
911 --dbms_output('Update_Territory PVT: OTHERS - ' || SQLERRM);
912 ROLLBACK TO UPDATE_TERRITORY_PVT;
913 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
914 FND_MSG_PUB.Count_And_Get
915 ( p_count => x_msg_count,
916 p_data => x_msg_data
917 );
918 --
919 END Update_Territory;
920
921
922 -- ***************************************************
923 -- start of comments
924 -- ***************************************************
925 --
926 -- API name : Deactivate_Territory
927 -- Type : PUBLIC
928 -- Function : To deactivate Territories - this API also deactivates
929 -- any sub-territories of this territory.
930 --
931 -- Pre-reqs :
932 -- Parameters:
933 -- IN :
934 -- Required
935 -- Parameter Name Data Type Default
936 -- p_Api_Version_Number NUMBER
937 -- p_Terr_Id NUMBER
938 --
939 -- Optional
940 -- Parameter Name Data Type Default
941 -- p_Init_Msg_List VARCHAR2 FND_API.G_FALSE
942 -- p_Commit VARCHAR2 FND_API.G_FALSE
943 -- p_validation_level NUMBER FND_API.G_VALID_LEVEL_FULL,
944 --
945 -- OUT :
946 -- Parameter Name Data Type
947 -- x_Return_Status VARCHAR2(1)
948 -- x_Msg_Count NUMBER
949 -- x_Msg_Data VARCHAR2(2000)
950 --
951 --
952 -- Notes:
953 --
954 --
955 -- End of Comments
956 --
957 PROCEDURE Deactivate_Territory
958 (p_api_version_number IN NUMBER,
959 p_INit_msg_list IN VARCHAR2 := FND_API.G_FALSE,
960 p_commit IN VARCHAR2 := FND_API.G_FALSE,
961 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
962 x_return_status OUT NOCOPY VARCHAR2,
963 x_msg_count OUT NOCOPY NUMBER,
964 x_msg_data OUT NOCOPY VARCHAR2,
965 P_terr_Id IN NUMBER)
966 AS
967 Cursor C_GetTerritory(l_terr_id Number) IS
968 Select Rowid,
969 TERR_ID,
970 LAST_UPDATE_DATE,
971 LAST_UPDATED_BY,
972 CREATION_DATE,
973 CREATED_BY,
974 LAST_UPDATE_LOGIN,
975 REQUEST_ID,
976 PROGRAM_APPLICATION_ID,
977 PROGRAM_ID,
978 PROGRAM_UPDATE_DATE,
979 APPLICATION_SHORT_NAME,
980 NAME,
981 ENABLED_FLAG,
982 START_DATE_ACTIVE,
983 END_DATE_ACTIVE,
984 PLANNED_FLAG,
985 PARENT_TERRITORY_ID,
986 TERRITORY_TYPE_ID,
987 TEMPLATE_TERRITORY_ID,
988 TEMPLATE_FLAG,
989 ESCALATION_TERRITORY_ID,
990 ESCALATION_TERRITORY_FLAG,
991 OVERLAP_ALLOWED_FLAG,
992 RANK,
993 DESCRIPTION,
994 UPDATE_FLAG,
995 AUTO_ASSIGN_RESOURCES_FLAG,
996 ATTRIBUTE_CATEGORY,
997 ATTRIBUTE1,
998 ATTRIBUTE2,
999 ATTRIBUTE3,
1000 ATTRIBUTE4,
1001 ATTRIBUTE5,
1002 ATTRIBUTE6,
1003 ATTRIBUTE7,
1004 ATTRIBUTE8,
1005 ATTRIBUTE9,
1006 ATTRIBUTE10,
1007 ATTRIBUTE11,
1008 ATTRIBUTE12,
1009 ATTRIBUTE13,
1010 ATTRIBUTE14,
1011 ATTRIBUTE15,
1012 ORG_ID,
1013 NUM_WINNERS,
1014 NUM_QUAL
1015 From JTF_TERR_ALL
1016 Where TERR_ID = l_terr_id
1017 For Update NOWAIT;
1018
1019 --Local variable declaration
1020 l_api_name CONSTANT VARCHAR2(30) := 'Deactivate_territory';
1021 l_api_version_number CONSTANT NUMBER := 1.0;
1022
1023 l_rowid VARCHAR2(50);
1024 l_return_status VARCHAR2(1);
1025 l_ref_terr_all_rec terr_all_rec_type;
1026
1027 BEGIN
1028 --dbms_output('Deactivate_Territory PVT: Entering API');
1029
1030 -- Standard Start of API savepoint
1031 SAVEPOINT DEACTIVATE_TERRITORY_PVT;
1032
1033 -- Standard call to check for call compatibility.
1034 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1035 p_api_version_number,
1036 l_api_name,
1037 G_PKG_NAME)
1038 THEN
1039 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1040 END IF;
1041
1042 -- Initialize message list if p_init_msg_list is set to TRUE.
1043 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1044 FND_MSG_PUB.initialize;
1045 END IF;
1046
1047 -- Debug Message
1048 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1049 THEN
1050 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
1051 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
1052 FND_MSG_PUB.Add;
1053 END IF;
1054
1055 -- Initialize API return status to success
1056 x_return_status := FND_API.G_RET_STS_SUCCESS;
1057 --
1058 -- API body
1059 --
1060 -- Initialize API return status to SUCCESS
1061 x_return_status := FND_API.G_RET_STS_SUCCESS;
1062
1063 --dbms_output('Deactivate_Territory PVT: opening cursor C_GetTerrTypeUsage');
1064 OPEN C_GetTerritory( P_Terr_Id);
1065 FETCH C_GetTerritory into
1066 l_Rowid,
1067 l_ref_terr_all_rec.TERR_ID,
1068 l_ref_terr_all_rec.LAST_UPDATE_DATE,
1069 l_ref_terr_all_rec.LAST_UPDATED_BY,
1070 l_ref_terr_all_rec.CREATION_DATE,
1071 l_ref_terr_all_rec.CREATED_BY,
1072 l_ref_terr_all_rec.LAST_UPDATE_LOGIN,
1073 l_ref_terr_all_rec.REQUEST_ID,
1074 l_ref_terr_all_rec.PROGRAM_APPLICATION_ID,
1075 l_ref_terr_all_rec.PROGRAM_ID,
1076 l_ref_terr_all_rec.PROGRAM_UPDATE_DATE,
1077 l_ref_terr_all_rec.APPLICATION_SHORT_NAME,
1078 l_ref_terr_all_rec.NAME,
1079 l_ref_terr_all_rec.ENABLED_FLAG,
1080 l_ref_terr_all_rec.START_DATE_ACTIVE,
1081 l_ref_terr_all_rec.END_DATE_ACTIVE,
1082 l_ref_terr_all_rec.PLANNED_FLAG,
1083 l_ref_terr_all_rec.PARENT_TERRITORY_ID,
1084 l_ref_terr_all_rec.TERRITORY_TYPE_ID,
1085 l_ref_terr_all_rec.TEMPLATE_TERRITORY_ID,
1086 l_ref_terr_all_rec.TEMPLATE_FLAG,
1087 l_ref_terr_all_rec.ESCALATION_TERRITORY_ID,
1088 l_ref_terr_all_rec.ESCALATION_TERRITORY_FLAG,
1089 l_ref_terr_all_rec.OVERLAP_ALLOWED_FLAG,
1090 l_ref_terr_all_rec.RANK,
1091 l_ref_terr_all_rec.DESCRIPTION,
1092 l_ref_terr_all_rec.UPDATE_FLAG,
1093 l_ref_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG,
1094 l_ref_terr_all_rec.ATTRIBUTE_CATEGORY,
1095 l_ref_terr_all_rec.ATTRIBUTE1,
1096 l_ref_terr_all_rec.ATTRIBUTE2,
1097 l_ref_terr_all_rec.ATTRIBUTE3,
1098 l_ref_terr_all_rec.ATTRIBUTE4,
1099 l_ref_terr_all_rec.ATTRIBUTE5,
1100 l_ref_terr_all_rec.ATTRIBUTE6,
1101 l_ref_terr_all_rec.ATTRIBUTE7,
1102 l_ref_terr_all_rec.ATTRIBUTE8,
1103 l_ref_terr_all_rec.ATTRIBUTE9,
1104 l_ref_terr_all_rec.ATTRIBUTE10,
1105 l_ref_terr_all_rec.ATTRIBUTE11,
1106 l_ref_terr_all_rec.ATTRIBUTE12,
1107 l_ref_terr_all_rec.ATTRIBUTE13,
1108 l_ref_terr_all_rec.ATTRIBUTE14,
1109 l_ref_terr_all_rec.ATTRIBUTE15,
1110 l_ref_terr_all_rec.ORG_ID,
1111 l_ref_terr_all_rec.NUM_WINNERS,
1112 l_ref_terr_all_rec.NUM_QUAL;
1113
1114 If ( C_GetTerritory%NOTFOUND) Then
1115 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1116 THEN
1117 FND_MESSAGE.Set_Name('JTF', 'API_MISSING_UPDATE_TARGET');
1118 FND_MESSAGE.Set_Token('INFO', 'TERRITORY', FALSE);
1119 FND_MSG_PUB.Add;
1120 END IF;
1121 raise FND_API.G_EXC_ERROR;
1122 End if;
1123 CLOSE C_GetTerritory;
1124
1125 --dbms_output('Deactivate_Territory PVT: Before Calling JTF_TERR_PKG.Update_Row');
1126 JTF_TERR_PKG.Update_Row(x_rowid => l_rowid,
1127 x_terr_id => p_terr_id,
1128 x_last_update_date => l_ref_terr_all_rec.LAST_UPDATE_DATE,
1129 x_last_updated_by => l_ref_terr_all_rec.LAST_UPDATED_BY,
1130 x_creation_date => l_ref_terr_all_rec.CREATION_DATE,
1131 x_created_by => l_ref_terr_all_rec.CREATED_BY,
1132 x_last_update_login => l_ref_terr_all_rec.LAST_UPDATE_LOGIN,
1133 x_request_id => null,
1134 x_program_application_id => null,
1135 x_program_id => null,
1136 x_program_update_date => null,
1137 x_application_short_name => l_ref_terr_all_rec.APPLICATION_SHORT_NAME,
1138 x_name => l_ref_terr_all_rec.name,
1139 x_enabled_flag => l_ref_terr_all_rec.enabled_flag,
1140 x_start_date_active => l_ref_terr_all_rec.start_date_active,
1141 x_end_date_active => (sysdate -1),
1142 x_planned_flag => l_ref_terr_all_rec.planned_flag,
1143 x_parent_territory_id => l_ref_terr_all_rec.parent_territory_id,
1144 x_territory_type_id => l_ref_terr_all_rec.territory_type_id,
1145 x_template_territory_id => l_ref_terr_all_rec.template_territory_id,
1146 x_template_flag => l_ref_terr_all_rec.template_flag,
1147 x_escalation_territory_id => l_ref_terr_all_rec.escalation_territory_id,
1148 x_escalation_territory_flag => l_ref_terr_all_rec.escalation_territory_flag,
1149 x_overlap_allowed_flag => l_ref_terr_all_rec.overlap_allowed_flag,
1150 x_rank => l_ref_terr_all_rec.rank,
1151 x_description => l_ref_terr_all_rec.description,
1152 x_update_flag => l_ref_terr_all_rec.update_flag,
1153 x_auto_assign_resources_flag => l_ref_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG,
1154 x_attribute_category => l_ref_terr_all_rec.attribute_category,
1155 x_attribute1 => l_ref_terr_all_rec.attribute1,
1156 x_attribute2 => l_ref_terr_all_rec.attribute2,
1157 x_attribute3 => l_ref_terr_all_rec.attribute3,
1158 x_attribute4 => l_ref_terr_all_rec.attribute4,
1159 x_attribute5 => l_ref_terr_all_rec.attribute5,
1160 x_attribute6 => l_ref_terr_all_rec.attribute6,
1161 x_attribute7 => l_ref_terr_all_rec.attribute7,
1162 x_attribute8 => l_ref_terr_all_rec.attribute8,
1163 x_attribute9 => l_ref_terr_all_rec.attribute9,
1164 x_attribute10 => l_ref_terr_all_rec.attribute10,
1165 x_attribute11 => l_ref_terr_all_rec.attribute11,
1166 x_attribute12 => l_ref_terr_all_rec.attribute12,
1167 x_attribute13 => l_ref_terr_all_rec.attribute13,
1168 x_attribute14 => l_ref_terr_all_rec.attribute14,
1169 x_attribute15 => l_ref_terr_all_rec.attribute15,
1170 x_org_id => l_ref_terr_all_rec.ORG_ID,
1171 x_num_winners => l_ref_terr_all_rec.NUM_WINNERS,
1172 x_num_qual => l_ref_terr_all_rec.NUM_QUAL );
1173
1174 X_return_status := FND_API.G_RET_STS_SUCCESS;
1175
1176 -- Debug Message
1177 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1178 THEN
1179 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
1180 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
1181 FND_MSG_PUB.Add;
1182 END IF;
1183
1184
1185 FND_MSG_PUB.Count_And_Get
1186 ( p_count => x_msg_count,
1187 p_data => x_msg_data
1188 );
1189
1190 -- Standard check for p_commit
1191 IF FND_API.to_Boolean( p_commit )
1192 THEN
1193 COMMIT WORK;
1194 END IF;
1195 --
1196 --dbms_output('Deactivate_Territory PVT: Exiting API');
1197 EXCEPTION
1198 WHEN FND_API.G_EXC_ERROR THEN
1199 --dbms_output('Deactivate_Territory PVT: FND_API.G_EXC_ERROR');
1200 ROLLBACK TO DEACTIVATE_TERRITORY_PVT;
1201 x_return_status := FND_API.G_RET_STS_ERROR ;
1202 FND_MSG_PUB.Count_And_Get
1203 ( p_count => x_msg_count,
1204 p_data => x_msg_data
1205 );
1206
1207 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1208 --dbms_output('Deactivate_Territory PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
1209 ROLLBACK TO DEACTIVATE_TERRITORY_PVT;
1210 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1211 FND_MSG_PUB.Count_And_Get
1212 ( p_count => x_msg_count,
1213 p_data => x_msg_data
1214 );
1215
1216 WHEN OTHERS THEN
1217 --dbms_output('Deactivate_Territory PVT: OTHERS - ' || SQLERRM);
1218 ROLLBACK TO DEACTIVATE_TERRITORY_PVT;
1219 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1220 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1221 THEN
1222 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,
1223 'Others exception inside Deactivate_Territory'
1224 || sqlerrm);
1225 END IF;
1226 END Deactivate_Territory;
1227
1228
1229 --
1230 -- ***************************************************
1231 -- start of comments
1232 -- ***************************************************
1233 -- API name : Create_Territory_Header
1234 -- Type : PUBLIC
1235 -- Function : To create Territories - which inludes the creation of following
1236 -- Territory Header, Territory Usages, Territory qualifier type usages
1237 -- table.
1238 -- Pre-reqs :
1239 -- Parameters:
1240 -- IN :
1241 -- Required
1242 -- Parameter Name Data Type Default
1243 -- P_Api_Version_Number NUMBER
1244 -- P_Terr_All_Rec Terr_All_Rec_Type := G_Miss_Terr_All_Rec
1245 -- P_Terr_Usgs_Tbl Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl
1246 -- P_Terr_QualTypeUsgs_Tbl Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl
1247 --
1248 -- Optional
1249 -- Parameter Name Data Type Default
1250 -- P_Init_Msg_List VARCHAR2 := FND_API.G_FALSE
1251 -- P_Commit VARCHAR2 := FND_API.G_FALSE
1252 -- p_validation_level NUMBER := FND_API.G_VALID_LEVEL_FULL,
1253 --
1254 -- OUT :
1255 -- Parameter Name Data Type
1256 -- X_Return_Status VARCHAR2(1)
1257 -- X_Msg_Count NUMBER
1258 -- X_Msg_Data VARCHAR2(2000)
1259 -- X_Terr_All_Out_Rec Terr_All_Out_Rec
1260 -- X_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl,
1261 -- X_Terr_QualTypeUsgs_Out_Tbl Terr_QualTypeUsgs_Out_Tbl,
1262 --
1263 --
1264 -- Notes:
1265 --
1266 --
1267 -- End of Comments
1268 --
1269 PROCEDURE Create_Territory_Header
1270 (P_Api_Version_Number IN NUMBER,
1271 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1272 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
1273 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1274 P_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
1275 P_Terr_Usgs_Tbl IN Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl,
1276 P_Terr_QualTypeUsgs_Tbl IN Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl,
1277 X_Return_Status OUT NOCOPY VARCHAR2,
1278 X_Msg_Count OUT NOCOPY NUMBER,
1279 X_Msg_Data OUT NOCOPY VARCHAR2,
1280 X_Terr_All_Out_Rec OUT NOCOPY Terr_All_Out_Rec_Type,
1281 X_Terr_Usgs_Out_Tbl OUT NOCOPY Terr_Usgs_Out_Tbl_Type,
1282 X_Terr_QualTypeUsgs_Out_Tbl OUT NOCOPY Terr_QualTypeUsgs_Out_Tbl_Type)
1283 AS
1284 l_api_name CONSTANT VARCHAR2(30) := 'Create_Territory_Header';
1285 l_rowid ROWID;
1286 l_return_status VARCHAR2(1);
1287 l_Terr_id NUMBER;
1288 l_terr_usg_id NUMBER;
1289 l_terr_qual_type_usg_id NUMBER;
1290 l_Terr_Usgs_Tbl_Count NUMBER := P_Terr_Usgs_Tbl.Count;
1291 l_Terr_QualTypeUsgs_Tbl_Count NUMBER := P_Terr_QualTypeUsgs_Tbl.Count;
1292 l_Counter NUMBER;
1293 l_Terr_All_Out_Rec Terr_All_Out_Rec_Type;
1294 l_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl_Type;
1295 l_Terr_QualTypeUsgs_Out_Tbl Terr_QualTypeUsgs_Out_Tbl_Type;
1296 BEGIN
1297 --dbms_output('Create_Territory_Header PVT: Entering API');
1298
1299 -- Debug Message
1300 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1301 THEN
1302 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
1303 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
1304 FND_MSG_PUB.Add;
1305 END IF;
1306 -- Initialize API return status to success
1307 x_return_status := FND_API.G_RET_STS_SUCCESS;
1308
1309 --dbms_output('Create_Territory_Header PVT: Before Calling Create_Territory_Record');
1310
1311 -- Call create_territory_record API
1312 IF p_terr_all_rec.terr_id IS NULL OR p_terr_all_rec.terr_creation_flag IS NULL
1313 THEN
1314 Create_Territory_Record(P_Api_Version_Number => P_Api_Version_Number,
1315 P_Init_Msg_List => P_Init_Msg_List,
1316 P_Commit => P_Commit,
1317 p_validation_level => p_validation_level,
1318 P_Terr_All_Rec => P_Terr_All_Rec,
1319 X_Return_Status => l_Return_Status,
1320 X_Msg_Count => X_Msg_Count,
1321 X_Msg_Data => X_Msg_Data,
1322 X_Terr_Id => l_terr_id,
1323 X_Terr_All_Out_Rec => l_Terr_All_Out_Rec);
1324
1325 ELSE
1326 UPDATE JTF_TERR_ALL
1327 SET terr_group_id = p_terr_all_rec.territory_group_id,
1328 LAST_UPDATED_BY = p_terr_all_rec.LAST_UPDATED_BY,
1329 LAST_UPDATE_LOGIN = p_terr_all_rec.LAST_UPDATE_LOGIN,
1330 NAME = p_terr_all_rec.NAME,
1331 START_DATE_ACTIVE = p_terr_all_rec.START_DATE_ACTIVE,
1332 END_DATE_ACTIVE = p_terr_all_rec.END_DATE_ACTIVE,
1333 PARENT_TERRITORY_ID= p_terr_all_rec.PARENT_TERRITORY_ID,
1334 RANK = p_terr_all_rec.RANK,
1335 DESCRIPTION = p_terr_all_rec.DESCRIPTION,
1336 NUM_WINNERS = p_terr_all_rec.NUM_WINNERS,
1337 territory_type_id = p_terr_all_rec.territory_type_id
1338 WHERE terr_id = p_terr_all_rec.terr_id;
1339
1340 l_terr_id := p_terr_all_rec.terr_id;
1341 l_return_status :='S';
1342 l_terr_all_out_rec.terr_id := l_terr_id;
1343 END IF;
1344 --
1345 -- Save the statuses
1346 x_return_status := l_return_status;
1347 --
1348 --Save the out status record
1349 X_Terr_All_Out_Rec := l_Terr_All_Out_Rec;
1350 --If there is a major error
1351 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1352 RAISE FND_API.G_EXC_ERROR;
1353 END IF;
1354 --
1355 --
1356 --dbms_output('Create_Territory_Header PVT: Before Calling Create_Territory_Usages');
1357 --
1358 Create_Territory_Usages(P_Api_Version_Number => P_Api_Version_Number,
1359 P_Init_Msg_List => P_Init_Msg_List,
1360 P_Commit => P_Commit,
1361 p_validation_level => p_validation_level,
1362 P_Terr_Id => l_terr_id,
1363 P_Terr_Usgs_Tbl => P_Terr_Usgs_Tbl,
1364 X_Return_Status => l_Return_Status,
1365 X_Msg_Count => X_Msg_Count,
1366 X_Msg_Data => X_Msg_Data,
1367 X_Terr_Usgs_Out_Tbl => l_Terr_Usgs_Out_Tbl);
1368 --
1369 -- Save the statuses
1370 x_return_status := l_return_status;
1371 --
1372 --Save the out status record
1373 X_Terr_Usgs_Out_Tbl := l_Terr_Usgs_Out_Tbl;
1374 l_terr_usg_id := l_Terr_Usgs_Out_Tbl(1).Terr_Usg_Id;
1375 --
1376 --If there is a major error
1377 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1378 RAISE FND_API.G_EXC_ERROR;
1379 END IF;
1380 --
1381 -- Call api to insert records into jtf_terr_qualtype_usgs
1382 --
1383 --dbms_output('Create_Territory_Header PVT: Before Calling Create_Terr_QualType_Usage');
1384
1385 Create_Terr_QualType_Usage(P_Api_Version_Number => P_Api_Version_Number,
1386 P_Init_Msg_List => P_Init_Msg_List,
1387 P_Commit => P_Commit,
1388 p_validation_level => p_validation_level,
1389 P_Terr_Id => l_terr_id,
1390 P_Terr_QualTypeUsgs_Tbl => P_Terr_QualTypeUsgs_Tbl,
1391 X_Return_Status => l_Return_Status,
1392 X_Msg_Count => X_Msg_Count,
1393 X_Msg_Data => X_Msg_Data,
1394 X_Terr_QualTypeUsgs_Out_Tbl => l_Terr_QualTypeUsgs_Out_Tbl);
1395
1396 --
1397 -- Save the statuses
1398 x_return_status := l_return_status;
1399 --
1400 --Save the out status record
1401 X_Terr_QualTypeUsgs_Out_Tbl := l_Terr_QualTypeUsgs_Out_Tbl;
1402 --If there is a major error
1403 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1404 RAISE FND_API.G_EXC_ERROR;
1405 END IF;
1406 --
1407 -- Debug Message
1408 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1409 THEN
1410 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
1411 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
1412 FND_MSG_PUB.Add;
1413 END IF;
1414
1415 --dbms_output('Create_Territory_Header PVT: Exiting API');
1416 EXCEPTION
1417 WHEN FND_API.G_EXC_ERROR THEN
1418 --dbms_output('Create_Territory_Header PVT: FND_API.G_EXC_ERROR');
1419 x_return_status := FND_API.G_RET_STS_ERROR ;
1420 FND_MSG_PUB.Count_And_Get
1421 ( P_count => x_msg_count,
1422 P_data => x_msg_data
1423 );
1424
1425 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1426 --dbms_output('Create_Territory_Header PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
1427 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1428 FND_MSG_PUB.Count_And_Get
1429 ( p_count => x_msg_count,
1430 p_data => x_msg_data
1431 );
1432
1433 WHEN OTHERS THEN
1434 --dbms_output('Create_Territory_Header PVT: OTHERS - ' || SQLERRM);
1435 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1436 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1437 THEN
1438 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,
1439 'Others exception inside Create_Territory_Header'
1440 || sqlerrm);
1441 END IF;
1442 END Create_Territory_Header;
1443 --
1444 --
1445 -- ***************************************************
1446 -- start of comments
1447 -- ***************************************************
1448 -- API name : Create_Territory_record
1449 -- Type : PUBLIC
1450 -- Function : To create a records in jtf_Terr_all table
1451 --
1452 -- Pre-reqs :
1453 -- Parameters:
1454 -- IN :
1455 -- Required
1456 -- Parameter Name Data Type Default
1457 -- X_Terr_All_Rec Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
1458 --
1459 -- OUT :
1460 -- Parameter Name Data Type
1461 -- X_terr_id NUMBER;
1462 -- X_Return_Status VARCHAR2(1)
1463 -- X_Terr_All_Out_Rec Terr_All_Out_Rec_Type
1464 --
1465 --
1466 -- Notes:
1467 --
1468 --
1469 -- End of Comments
1470 --
1471 PROCEDURE Create_Territory_Record
1472 ( P_Api_Version_Number IN NUMBER,
1473 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1474 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
1475 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1476 P_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
1477 X_Return_Status OUT NOCOPY VARCHAR2,
1478 X_Msg_Count OUT NOCOPY NUMBER,
1479 X_Msg_Data OUT NOCOPY VARCHAR2,
1480 X_Terr_Id OUT NOCOPY NUMBER,
1481 X_Terr_All_Out_Rec OUT NOCOPY Terr_All_Out_Rec_Type
1482 )
1483 AS
1484 l_rowid ROWID;
1485 l_terr_id NUMBER := P_TERR_ALL_REC.TERR_ID;
1486 l_api_name CONSTANT VARCHAR2(30) := 'Create_Territory_Record';
1487 l_api_version_number CONSTANT NUMBER := 1.0;
1488 BEGIN
1489 --dbms_output('Create_Territory_Record PVT: Entering API');
1490
1491 -- Standard Start of API savepoint
1492 SAVEPOINT CREATE_TERR_REC_PVT;
1493
1494 -- Standard call to check for call compatibility.
1495 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1496 p_api_version_number,
1497 l_api_name,
1498 G_PKG_NAME)
1499 THEN
1500 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1501 END IF;
1502
1503 -- Initialize message list if p_init_msg_list is set to TRUE.
1504 IF FND_API.to_Boolean( p_init_msg_list )
1505 THEN
1506 FND_MSG_PUB.initialize;
1507 END IF;
1508
1509 -- Debug Message
1510 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1511 THEN
1512 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
1513 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
1514 FND_MSG_PUB.Add;
1515 END IF;
1516
1517 -- Initialize API return status to success
1518 x_return_status := FND_API.G_RET_STS_SUCCESS;
1519
1520 IF ( P_validation_level > FND_API.G_VALID_LEVEL_NONE)
1521 THEN
1522 -- Debug message
1523 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1524 THEN
1525 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
1526 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Territory_Record');
1527 FND_MSG_PUB.Add;
1528 END IF;
1529 --
1530 -- Invoke validation procedures
1531 Validate_Territory_Record(p_init_msg_list => FND_API.G_FALSE,
1532 x_Return_Status => x_return_status,
1533 x_msg_count => x_msg_count,
1534 x_msg_data => x_msg_data,
1535 p_Terr_All_Rec => P_Terr_All_Rec);
1536
1537 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1538 RAISE FND_API.G_EXC_ERROR;
1539 END IF;
1540 END IF;
1541
1542 -- Call insert terr_all table handler
1543 --
1544 --dbms_output('Create_Territory_Record PVT: Before Calling JTF_TERR_PKG.Insert_Row APP_SHORT_NAME-' || G_APP_SHORT_NAME);
1545 --dbms_output('Create_Territory_Record PVT: Before Calling JTF_TERR_PKG.Insert_Row p_terr_all_rec.APPLICATION_SHORT_NAME-' || p_terr_all_rec.APPLICATION_SHORT_NAME);
1546
1547 /* Intialise to NULL if FND_API.G_MISS_NUM,
1548 ** otherwise use passed in value
1549 */
1550 IF (l_terr_id = FND_API.G_MISS_NUM) THEN
1551 l_terr_id := NULL;
1552 END IF;
1553
1554 JTF_TERR_PKG.Insert_Row(x_rowid => l_rowid,
1555 x_terr_id => l_terr_id,
1556 x_last_update_date => p_terr_all_rec.LAST_UPDATE_DATE,
1557 x_last_updated_by => p_terr_all_rec.LAST_UPDATED_BY,
1558 x_creation_date => p_terr_all_rec.CREATION_DATE,
1559 x_created_by => p_terr_all_rec.CREATED_BY,
1560 x_last_update_login => p_terr_all_rec.LAST_UPDATE_LOGIN,
1561 x_request_id => p_terr_all_rec.request_id,
1562 x_program_application_id => p_terr_all_rec.program_application_id,
1563 x_program_id => p_terr_all_rec.program_id,
1564 x_program_update_date => p_terr_all_rec.program_update_date,
1565 x_application_short_name => p_terr_all_rec.APPLICATION_SHORT_NAME,
1566 x_name => p_terr_all_rec.name,
1567 x_enabled_flag => 'Y',
1568 x_start_date_active => p_terr_all_rec.start_date_active,
1569 x_end_date_active => p_terr_all_rec.end_date_active,
1570 x_planned_flag => p_terr_all_rec.planned_flag,
1571 x_parent_territory_id => p_terr_all_rec.parent_territory_id,
1572 x_territory_type_id => p_terr_all_rec.territory_type_id,
1573 x_template_territory_id => p_terr_all_rec.template_territory_id,
1574 x_template_flag => p_terr_all_rec.template_flag,
1575 x_escalation_territory_id => p_terr_all_rec.escalation_territory_id,
1576 x_escalation_territory_flag => p_terr_all_rec.escalation_territory_flag,
1577 x_overlap_allowed_flag => p_terr_all_rec.overlap_allowed_flag,
1578 x_rank => p_terr_all_rec.rank,
1579 x_description => p_terr_all_rec.description,
1580 x_update_flag => p_terr_all_rec.update_flag,
1581 x_auto_assign_resources_flag => p_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG,
1582 x_attribute_category => p_terr_all_rec.attribute_category,
1583 x_attribute1 => p_terr_all_rec.attribute1,
1584 x_attribute2 => p_terr_all_rec.attribute2,
1585 x_attribute3 => p_terr_all_rec.attribute3,
1586 x_attribute4 => p_terr_all_rec.attribute4,
1587 x_attribute5 => p_terr_all_rec.attribute5,
1588 x_attribute6 => p_terr_all_rec.attribute6,
1589 x_attribute7 => p_terr_all_rec.attribute7,
1590 x_attribute8 => p_terr_all_rec.attribute8,
1591 x_attribute9 => p_terr_all_rec.attribute9,
1592 x_attribute10 => p_terr_all_rec.attribute10,
1593 x_attribute11 => p_terr_all_rec.attribute11,
1594 x_attribute12 => p_terr_all_rec.attribute12,
1595 x_attribute13 => p_terr_all_rec.attribute13,
1596 x_attribute14 => p_terr_all_rec.attribute14,
1597 x_attribute15 => p_terr_all_rec.attribute15,
1598 x_org_id => P_terr_all_rec.ORG_ID,
1599 x_num_winners => p_terr_all_rec.NUM_WINNERS,
1600 x_num_qual => p_terr_all_rec.NUM_QUAL);
1601
1602 --
1603 --If there was no error in Table Handler Code gets here
1604 --else it goes to the exceptions block
1605 X_Terr_All_Out_Rec.Terr_id := l_terr_id;
1606 X_Terr_Id := l_terr_id;
1607 X_Terr_All_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
1608
1609 -- Debug Message
1610 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1611 THEN
1612 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
1613 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
1614 FND_MSG_PUB.Add;
1615 END IF;
1616
1617 -- Standard check for p_commit
1618 IF FND_API.to_Boolean( p_commit )
1619 THEN
1620 COMMIT WORK;
1621 END IF;
1622
1623
1624 -- Standard call to get message count and if count is 1, get message info.
1625 FND_MSG_PUB.Count_And_Get
1626 ( p_count => x_msg_count,
1627 p_data => x_msg_data
1628 );
1629
1630 --dbms_output('Create_Territory_Record PVT: Exiting API');
1631
1632 EXCEPTION
1633 WHEN FND_API.G_EXC_ERROR THEN
1634 --dbms_output('Create_Territory_Record PVT: FND_API.G_EXC_ERROR');
1635 ROLLBACK TO CREATE_TERR_REC_PVT;
1636 x_return_status := FND_API.G_RET_STS_ERROR ;
1637 FND_MSG_PUB.Count_And_Get
1638 ( p_count => x_msg_count,
1639 p_data => x_msg_data
1640 );
1641
1642 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1643 --dbms_output('Create_Territory_Record PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
1644 ROLLBACK TO CREATE_TERR_REC_PVT;
1645 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1646 FND_MSG_PUB.Count_And_Get
1647 ( p_count => x_msg_count,
1648 p_data => x_msg_data
1649 );
1650
1651
1652 WHEN OTHERS THEN
1653 --dbms_output('Create_Territory_Record PVT: OTHERS - ' || SQLERRM);
1654 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1655 X_Terr_All_Out_Rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1656 ROLLBACK TO CREATE_TERR_REC_PVT;
1657 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1658 THEN
1659 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Others exception in Create_Territory_Record');
1660 END IF;
1661 END Create_Territory_Record;
1662 --
1663 --
1664 -- ***************************************************
1665 -- start of comments
1666 -- ***************************************************
1667 -- API name : Create_Territory_Usages
1668 -- Type : PUBLIC
1669 -- Function : To create Territories usages
1670 --
1671 -- Pre-reqs :
1672 -- Parameters:
1673 -- IN :
1674 -- Required
1675 -- Parameter Name Data Type Default
1676 -- p_terr_id NUMBER;
1677 -- P_Terr_Usgs_Tbl Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl
1678 --
1679 -- OUT :
1680 -- Parameter Name Data Type
1681 -- X_Return_Status VARCHAR2(1)
1682 -- X_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl,
1683 --
1684 --
1685 -- Notes:
1686 --
1687 --
1688 -- End of Comments
1689 --
1690 PROCEDURE Create_Territory_Usages
1691 ( P_Api_Version_Number IN NUMBER,
1692 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1693 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
1694 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1695 P_Terr_Id IN NUMBER,
1696 P_Terr_Usgs_Tbl IN Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl,
1697 X_Return_Status OUT NOCOPY VARCHAR2,
1698 X_Msg_Count OUT NOCOPY NUMBER,
1699 X_Msg_Data OUT NOCOPY VARCHAR2,
1700 X_Terr_Usgs_Out_Tbl OUT NOCOPY Terr_Usgs_Out_Tbl_Type
1701 )
1702 AS
1703 l_rowid ROWID;
1704 l_terr_usg_id NUMBER;
1705 l_Terr_Usgs_Tbl_Count NUMBER := P_Terr_Usgs_Tbl.Count;
1706 l_Terr_Usgs_Out_Tbl_Count NUMBER;
1707 l_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl_Type;
1708 l_Counter NUMBER;
1709 l_api_name CONSTANT VARCHAR2(30) := 'Create_Territory_Usages';
1710 l_api_version_number CONSTANT NUMBER := 1.0;
1711 BEGIN
1712 --dbms_output('Create_Territory_Usages PVT: Entering API');
1713 --
1714 -- Standard Start of API savepoint
1715 SAVEPOINT CREATE_TERR_USG_PVT;
1716
1717 -- Standard call to check for call compatibility.
1718 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1719 p_api_version_number,
1720 l_api_name,
1721 G_PKG_NAME)
1722 THEN
1723 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1724 END IF;
1725
1726 -- Initialize message list if p_init_msg_list is set to TRUE.
1727 IF FND_API.to_Boolean( p_init_msg_list )
1728 THEN
1729 FND_MSG_PUB.initialize;
1730 END IF;
1731
1732 -- Debug Message
1733 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1734 THEN
1735 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
1736 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
1737 FND_MSG_PUB.Add;
1738 END IF;
1739
1740 -- Initialize API return status to success
1741 x_return_status := FND_API.G_RET_STS_SUCCESS;
1742
1743 --
1744 If (p_Terr_Usgs_Tbl.count = 0 ) Then
1745 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1746 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_TERR_USAGE');
1747 FND_MSG_PUB.ADD;
1748 END IF;
1749 x_return_status := FND_API.G_RET_STS_ERROR;
1750 RAISE FND_API.G_EXC_ERROR;
1751 END IF;
1752
1753 --
1754 FOR l_Counter IN 1 .. l_Terr_Usgs_Tbl_Count LOOP
1755 --
1756 BEGIN
1757
1758 --dbms_output('Create_Territory_Usages PVT: Before Calling JTF_TERR_USGS_PKG.Insert_Row');
1759
1760 -- Initialize API return status to success
1761 x_return_status := FND_API.G_RET_STS_SUCCESS;
1762
1763 IF ( P_validation_level <> FND_API.G_VALID_LEVEL_NONE) THEN
1764
1765 -- Debug message
1766 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1767 THEN
1768 FND_MESSAGE.Set_Name('JTF', 'Create_Terr_Rec PVT: Valid');
1769 FND_MSG_PUB.Add;
1770 END IF;
1771 --
1772 -- Invoke validation procedures
1773 Validate_Territory_Usage(p_init_msg_list => FND_API.G_FALSE,
1774 x_Return_Status => x_return_status,
1775 x_msg_count => x_msg_count,
1776 x_msg_data => x_msg_data,
1777 p_Terr_Id => p_Terr_Id,
1778 p_Terr_Usgs_Rec => P_Terr_Usgs_Tbl(l_Counter));
1779 --
1780 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1781 RAISE FND_API.G_EXC_ERROR;
1782 END IF;
1783 --
1784
1785 -- jdochert 09/09
1786 -- check for Unique Key constraint violation
1787 validate_terr_usgs_UK( p_Terr_Id => p_Terr_Id,
1788 p_Source_Id => P_Terr_Usgs_Tbl(l_counter).source_id,
1789 p_init_msg_list => FND_API.G_FALSE,
1790 x_Return_Status => x_return_status,
1791 x_msg_count => x_msg_count,
1792 x_msg_data => x_msg_data );
1793
1794 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1795 RAISE FND_API.G_EXC_ERROR;
1796 END IF;
1797
1798 END IF;
1799
1800 l_terr_usg_id := P_Terr_Usgs_Tbl(l_Counter).terr_usg_id;
1801
1802 /* Intialise to NULL if FND_API.G_MISS_NUM,
1803 ** otherwise used passed in value
1804 */
1805 IF (l_terr_usg_id = FND_API.G_MISS_NUM) THEN
1806 l_terr_usg_id := NULL;
1807 END IF;
1808
1809 JTF_TERR_USGS_PKG.Insert_Row(x_Rowid => l_rowid,
1810 x_TERR_USG_ID => l_terr_usg_id,
1811 x_LAST_UPDATE_DATE => P_Terr_Usgs_Tbl(l_Counter).LAST_UPDATE_DATE,
1812 x_LAST_UPDATED_BY => P_Terr_Usgs_Tbl(l_Counter).LAST_UPDATED_BY,
1813 x_CREATION_DATE => P_Terr_Usgs_Tbl(l_Counter).CREATION_DATE,
1814 x_CREATED_BY => P_Terr_Usgs_Tbl(l_Counter).CREATED_BY,
1815 x_LAST_UPDATE_LOGIN => P_Terr_Usgs_Tbl(l_Counter).LAST_UPDATE_LOGIN,
1816 x_TERR_ID => P_terr_id,
1817 x_SOURCE_ID => P_Terr_Usgs_Tbl(l_Counter).source_id,
1818 x_Org_Id => P_Terr_Usgs_Tbl(l_Counter).Org_Id);
1819
1820 -- Save the terr_usg_id and
1821 X_Terr_Usgs_Out_Tbl(l_Counter).terr_usg_id := l_terr_usg_id;
1822 -- If successful then save the success status for the record
1823 X_Terr_Usgs_Out_Tbl(l_Counter).return_status := FND_API.G_RET_STS_SUCCESS;
1824
1825 EXCEPTION
1826 WHEN FND_API.G_EXC_ERROR THEN
1827 --dbms_output('Create_Territory_Record PVT: FND_API.G_EXC_ERROR');
1828 ROLLBACK TO CREATE_TERR_USG_PVT;
1829 x_return_status := FND_API.G_RET_STS_ERROR ;
1830 X_Terr_Usgs_Out_Tbl(l_Counter).terr_usg_id := NULL;
1831 X_Terr_Usgs_Out_Tbl(l_Counter).return_status := X_return_status;
1832 FND_MSG_PUB.Count_And_Get
1833 ( p_count => x_msg_count,
1834 p_data => x_msg_data
1835 );
1836
1837 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1838 --dbms_output('Create_Territory_Record PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
1839 ROLLBACK TO CREATE_TERR_USG_PVT;
1840 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1841 X_Terr_Usgs_Out_Tbl(l_Counter).terr_usg_id := NULL;
1842 X_Terr_Usgs_Out_Tbl(l_Counter).return_status := X_return_status;
1843 FND_MSG_PUB.Count_And_Get
1844 ( p_count => x_msg_count,
1845 p_data => x_msg_data
1846 );
1847
1848 WHEN OTHERS THEN
1849 --dbms_output('Create_Territory_Usages PVT: OTHERS - ' || SQLERRM);
1850 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1851 X_Terr_Usgs_Out_Tbl(l_Counter).terr_usg_id := NULL;
1852 X_Terr_Usgs_Out_Tbl(l_Counter).return_status := X_return_status;
1853 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1854 THEN
1855 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Others exception in Create_Territory_Usages');
1856 END IF;
1857 END;
1858 --
1859 END LOOP;
1860
1861 -- Get the API overall return status
1862 -- Initialize API return status to success
1863 x_return_status := FND_API.G_RET_STS_SUCCESS;
1864 --Get number of records in the ouput table
1865 l_Terr_Usgs_Out_Tbl_Count := X_Terr_Usgs_Out_Tbl.Count;
1866 l_Terr_Usgs_Out_Tbl := X_Terr_Usgs_Out_Tbl;
1867
1868 FOR l_Counter IN 1 .. l_Terr_Usgs_Out_Tbl_Count LOOP
1869 If l_Terr_Usgs_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
1870 l_Terr_Usgs_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_ERROR
1871 THEN
1872 X_return_status := FND_API.G_RET_STS_ERROR;
1873 END IF;
1874 END LOOP;
1875 --
1876 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1877 THEN
1878 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
1879 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
1880 FND_MSG_PUB.Add;
1881 END IF;
1882 --
1883 -- Standard check for p_commit
1884 IF FND_API.to_Boolean( p_commit )
1885 THEN
1886 COMMIT WORK;
1887 END IF;
1888
1889 -- Standard call to get message count and if count is 1, get message info.
1890 FND_MSG_PUB.Count_And_Get
1891 ( p_count => x_msg_count,
1892 p_data => x_msg_data
1893 );
1894 --
1895 --dbms_output('Create_Territory_Usages PVT: Exiting API');
1896 --
1897 End Create_Territory_Usages;
1898 --
1899 --
1900 -- ***************************************************
1901 -- start of comments
1902 -- ***************************************************
1903 -- API name : Create_Terr_QualType_Usage
1904 -- Type : PUBLIC
1905 -- Function : To create Territories qualifier usages
1906 --
1907 -- Pre-reqs :
1908 -- Parameters:
1909 -- IN :
1910 -- Required
1911 -- Parameter Name Data Type Default
1912 -- p_terr_id NUMBER
1913 -- p_terr_usg_id NUMBER;
1914 -- P_Terr_QualTypeUsgs_Rec Terr_QualTypeUsgs_Rec_Type := G_Miss_Terr_QualTypeUsgs_Rec
1915 --
1916 -- OUT :
1917 -- Parameter Name Data Type
1918 -- X_Return_Status VARCHAR2(1)
1919 -- X_Terr_QualTypeUsgs_Out_Tbl Terr_QualTypeUsgs_Out_Tbl,
1920 --
1921 -- Notes:
1922 --
1923 --
1924 -- End of Comments
1925 --
1926 PROCEDURE Create_Terr_QualType_Usage
1927 ( P_Api_Version_Number IN NUMBER,
1928 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
1929 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
1930 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1931 P_Terr_Id IN NUMBER,
1932 P_Terr_QualTypeUsgs_Rec IN Terr_QualTypeUsgs_Rec_Type := G_Miss_Terr_QualTypeUsgs_Rec,
1933 X_Return_Status OUT NOCOPY VARCHAR2,
1934 X_Msg_Count OUT NOCOPY NUMBER,
1935 X_Msg_Data OUT NOCOPY VARCHAR2,
1936 X_Terr_QualTypeUsgs_Id OUT NOCOPY NUMBER,
1937 X_Terr_QualTypeUsgs_Out_Rec OUT NOCOPY Terr_QualTypeUsgs_Out_Rec_Type
1938 )
1939 AS
1940 l_rowid ROWID;
1941 l_terr_qual_type_usg_id NUMBER := P_Terr_QualTypeUsgs_Rec.TERR_QUAL_TYPE_USG_ID;
1942 l_api_name CONSTANT VARCHAR2(30) := 'Create_Terr_Qualtype_Usage';
1943 l_api_version_number CONSTANT NUMBER := 1.0;
1944 BEGIN
1945 --dbms_output('Create_Terr_QualType_Usage PVT(REC): Entering API');
1946
1947 -- Standard Start of API savepoint
1948 SAVEPOINT CREATE_TERR_QTYPE_USG_PVT;
1949
1950 -- Standard call to check for call compatibility.
1951 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1952 p_api_version_number,
1953 l_api_name,
1954 G_PKG_NAME)
1955 THEN
1956 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1957 END IF;
1958
1959 -- Initialize message list if p_init_msg_list is set to TRUE.
1960 IF FND_API.to_Boolean( p_init_msg_list )
1961 THEN
1962 FND_MSG_PUB.initialize;
1963 END IF;
1964
1965 -- Debug Message
1966 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1967 THEN
1968 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
1969 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
1970 FND_MSG_PUB.Add;
1971 END IF;
1972
1973 -- Initialize API return status to success
1974 x_return_status := FND_API.G_RET_STS_SUCCESS;
1975
1976
1977 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL) THEN
1978
1979 -- Debug message
1980 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
1981 THEN
1982 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
1983 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Terr_Qtype_Usage');
1984 FND_MSG_PUB.Add;
1985 END IF;
1986
1987 -- Invoke validation procedures
1988 Validate_Terr_Qtype_Usage(p_init_msg_list => FND_API.G_FALSE,
1989 x_Return_Status => x_return_status,
1990 x_msg_count => x_msg_count,
1991 x_msg_data => x_msg_data,
1992 p_Terr_Id => p_Terr_Id,
1993 P_Terr_QualTypeUsgs_Rec => P_Terr_QualTypeUsgs_Rec);
1994 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1995 RAISE FND_API.G_EXC_ERROR;
1996 END IF;
1997
1998
1999 -- jdochert 09/09
2000 -- check for Unique Key constraint violation
2001 validate_terr_qtype_usgs_UK( p_Terr_Id => p_Terr_Id,
2002 p_Qual_Type_Usg_id => p_Terr_QualTypeUsgs_Rec.qual_type_usg_id,
2003 p_init_msg_list => FND_API.G_FALSE,
2004 x_Return_Status => x_return_status,
2005 x_msg_count => x_msg_count,
2006 x_msg_data => x_msg_data );
2007
2008 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2009 RAISE FND_API.G_EXC_ERROR;
2010 END IF;
2011
2012 END IF;
2013 --dbms_output('Create_Terr_QualType_Usage PVT(REC): Before Calling JTF_TERR_QTYPE_USGS_PKG.Insert_Row');
2014
2015 /* Intialise to NULL if FND_API.G_MISS_NUM,
2016 ** otherwise used passed in value
2017 */
2018 IF (l_TERR_QUAL_TYPE_USG_ID = FND_API.G_MISS_NUM) THEN
2019 l_TERR_QUAL_TYPE_USG_ID := NULL;
2020 END IF;
2021
2022
2023 -- Call insert terr_Qual_Type_Usgs table handler
2024 JTF_TERR_QTYPE_USGS_PKG.Insert_Row(x_Rowid => l_rowid,
2025 x_TERR_QTYPE_USG_ID => l_TERR_QUAL_TYPE_USG_ID,
2026 x_LAST_UPDATED_BY => P_Terr_QualTypeUsgs_Rec.LAST_UPDATED_BY,
2027 x_LAST_UPDATE_DATE => P_Terr_QualTypeUsgs_Rec.LAST_UPDATE_DATE,
2028 x_CREATED_BY => P_Terr_QualTypeUsgs_Rec.CREATED_BY,
2029 x_CREATION_DATE => P_Terr_QualTypeUsgs_Rec.CREATION_DATE,
2030 x_LAST_UPDATE_LOGIN => P_Terr_QualTypeUsgs_Rec.LAST_UPDATE_LOGIN,
2031 x_TERR_ID => p_terr_id,
2032 x_QUAL_TYPE_USG_ID => P_Terr_QualTypeUsgs_Rec.QUAL_TYPE_USG_ID,
2033 x_ORG_ID => P_Terr_QualTypeUsgs_Rec.ORG_ID);
2034
2035 -- Save the Save the terr_usg_id
2036 X_Terr_QualTypeUsgs_Id := l_TERR_QUAL_TYPE_USG_ID;
2037 X_Terr_QualTypeUsgs_Out_Rec.TERR_QUAL_TYPE_USG_ID := l_TERR_QUAL_TYPE_USG_ID;
2038
2039 -- If successful then save the success status for the record
2040 X_Return_Status := FND_API.G_RET_STS_SUCCESS;
2041 X_Terr_QualTypeUsgs_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
2042
2043 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2044 THEN
2045 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
2046 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2047 FND_MSG_PUB.Add;
2048 END IF;
2049
2050 -- Standard check for p_commit
2051 IF FND_API.to_Boolean( p_commit )
2052 THEN
2053 COMMIT WORK;
2054 END IF;
2055
2056 -- Standard call to get message count and if count is 1, get message info.
2057 FND_MSG_PUB.Count_And_Get
2058 ( p_count => x_msg_count,
2059 p_data => x_msg_data
2060 );
2061
2062 --dbms_output('Create_Terr_QualType_Usage PVT(REC): Exiting API');
2063
2064 EXCEPTION
2065 WHEN FND_API.G_EXC_ERROR THEN
2066 --dbms_output('Create_Terr_QualType_Usage PVT(REC): FND_API.G_EXC_ERROR');
2067 ROLLBACK TO CREATE_TERR_QTYPE_USG_PVT;
2068 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2069 X_Terr_QualTypeUsgs_Out_Rec.TERR_QUAL_TYPE_USG_ID := NULL;
2070 X_Terr_QualTypeUsgs_Out_Rec.return_status := x_return_status;
2071 FND_MSG_PUB.Count_And_Get
2072 ( p_count => x_msg_count,
2073 p_data => x_msg_data
2074 );
2075
2076 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2077 --dbms_output('Create_Terr_QualType_Usage PVT(REC): FND_API.G_EXC_UNEXPECTED_ERROR');
2078 ROLLBACK TO CREATE_TERR_QTYPE_USG_PVT;
2079 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2080 X_Terr_QualTypeUsgs_Out_Rec.TERR_QUAL_TYPE_USG_ID := NULL;
2081 X_Terr_QualTypeUsgs_Out_Rec.return_status := x_return_status;
2082 FND_MSG_PUB.Count_And_Get
2083 ( p_count => x_msg_count,
2084 p_data => x_msg_data
2085 );
2086
2087 WHEN OTHERS THEN
2088 --dbms_output('Create_Terr_QualType_Usage PVT(REC): OTHERS - ' || SQLERRM);
2089 ROLLBACK TO CREATE_TERR_QTYPE_USG_PVT;
2090 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2091 X_Terr_QualTypeUsgs_Out_Rec.TERR_QUAL_TYPE_USG_ID := NULL;
2092 X_Terr_QualTypeUsgs_Out_Rec.return_status := x_return_status;
2093 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
2094 THEN
2095 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Others exception in Create_Terr_QualType_Usage(REC)');
2096 END IF;
2097 --
2098 End Create_Terr_QualType_Usage;
2099 --
2100 --
2101 -- ***************************************************
2102 -- start of comments
2103 -- ***************************************************
2104 -- API name : Create_Terr_QualType_Usage
2105 -- Type : PUBLIC
2106 -- Function : To create Territories qualifier usages
2107 --
2108 -- Pre-reqs :
2109 -- Parameters:
2110 -- IN :
2111 -- Required
2112 -- Parameter Name Data Type Default
2113 -- p_terr_id NUMBER
2114 -- p_terr_usg_id NUMBER;
2115 -- P_Terr_QualTypeUsgs_Tbl Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl
2116 --
2117 -- OUT :
2118 -- Parameter Name Data Type
2119 -- X_Return_Status VARCHAR2(1)
2120 -- X_Terr_QualTypeUsgs_Out_Tbl Terr_QualTypeUsgs_Out_Tbl,
2121 --
2122 -- Notes:
2123 --
2124 --
2125 -- End of Comments
2126 --
2127 PROCEDURE Create_Terr_QualType_Usage
2128 ( P_Api_Version_Number IN NUMBER,
2129 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2130 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
2131 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2132 P_Terr_Id IN NUMBER,
2133 P_Terr_QualTypeUsgs_Tbl IN Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl,
2134 X_Return_Status OUT NOCOPY VARCHAR2,
2135 X_Msg_Count OUT NOCOPY NUMBER,
2136 X_Msg_Data OUT NOCOPY VARCHAR2,
2137 X_Terr_QualTypeUsgs_Out_Tbl OUT NOCOPY Terr_QualTypeUsgs_Out_Tbl_Type
2138 )
2139 AS
2140 l_rowid ROWID;
2141 l_return_Status VARCHAR2(1);
2142 l_terr_qual_type_usg_id NUMBER;
2143 l_Terr_QualTypeUsgs_Tbl_Count NUMBER := P_Terr_QualTypeUsgs_Tbl.Count;
2144 l_Terr_QTypUsg_Out_Tbl_Count NUMBER;
2145 l_Terr_QTypUsg_Out_Rec Terr_QualTypeUsgs_Out_Rec_Type;
2146 l_Terr_QTypUsg_Out_Tbl Terr_QualTypeUsgs_Out_Tbl_Type;
2147 l_Counter NUMBER;
2148 l_api_name CONSTANT VARCHAR2(30) := 'Create_Terr_Qtype_Usage(Tbl)';
2149 l_api_version_number CONSTANT NUMBER := 1.0;
2150 BEGIN
2151 --dbms_output('Create_Terr_QualType_Usage PVT(TBL): Entering API');
2152
2153 -- Standard Start of API savepoint
2154 SAVEPOINT CREATE_TERR_QTYPE_USG_PVT;
2155
2156 -- Standard call to check for call compatibility.
2157 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2158 p_api_version_number,
2159 l_api_name,
2160 G_PKG_NAME)
2161 THEN
2162 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2163 END IF;
2164
2165 -- Initialize message list if p_init_msg_list is set to TRUE.
2166 IF FND_API.to_Boolean( p_init_msg_list )
2167 THEN
2168 FND_MSG_PUB.initialize;
2169 END IF;
2170
2171 -- Debug Message
2172 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2173 THEN
2174 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
2175 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2176 FND_MSG_PUB.Add;
2177 END IF;
2178
2179 -- Initialize API return status to success
2180 x_return_status := FND_API.G_RET_STS_SUCCESS;
2181
2182 -- Call insert terr_Qual_Type_Usgs table handler
2183 --
2184 FOR l_Counter IN 1 .. l_Terr_QualTypeUsgs_Tbl_Count LOOP
2185 --
2186 --dbms_output('Create_Terr_QualType_Usage PVT(TBL): Before Calling Create_Terr_QualType_Usage');
2187
2188 Create_Terr_QualType_Usage( P_Api_Version_Number => P_Api_Version_Number,
2189 P_Init_Msg_List => P_Init_Msg_List,
2190 P_Commit => P_Commit,
2191 p_validation_level => p_validation_level,
2192 P_Terr_Id => P_Terr_Id,
2193 P_Terr_QualTypeUsgs_Rec => P_Terr_QualTypeUsgs_Tbl(l_counter),
2194 X_Return_Status => l_Return_Status,
2195 X_Msg_Count => X_Msg_Count,
2196 X_Msg_Data => X_Msg_Data,
2197 X_Terr_QualTypeUsgs_Id => l_terr_qual_type_usg_id,
2198 X_Terr_QualTypeUsgs_Out_Rec => l_Terr_QTypUsg_Out_Rec);
2199 --
2200 --If there is a major error
2201 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2202 --dbms_output('Create_Terr_QualType_Usage PVT(TBL): l_return_status <> FND_API.G_RET_STS_SUCCESS');
2203 -- Save the terr_usg_id and
2204 X_Terr_QualTypeUsgs_Out_Tbl(l_counter).TERR_QUAL_TYPE_USG_ID := NULL;
2205 -- If save the ERROR status for the record
2206 X_Terr_QualTypeUsgs_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2207 ELSE
2208 --dbms_output('Create_Terr_QualType_Usage PVT(TBL): l_return_status = FND_API.G_RET_STS_SUCCESS');
2209 -- Save the terr_usg_id and
2210 X_Terr_QualTypeUsgs_Out_Tbl(l_counter).TERR_QUAL_TYPE_USG_ID := l_terr_qual_type_usg_id;
2211 -- If successful then save the success status for the record
2212 X_Terr_QualTypeUsgs_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_SUCCESS;
2213 END IF;
2214 --
2215 END LOOP;
2216
2217 -- Get the API overall return status
2218 -- Initialize API return status to success
2219 x_return_status := FND_API.G_RET_STS_SUCCESS;
2220
2221 --Get number of records in the ouput table
2222 l_Terr_QTypUsg_Out_Tbl_Count := X_Terr_QualTypeUsgs_Out_Tbl.Count;
2223 l_Terr_QTypUsg_Out_Tbl := X_Terr_QualTypeUsgs_Out_Tbl;
2224
2225 FOR l_Counter IN 1 .. l_Terr_QTypUsg_Out_Tbl_Count LOOP
2226 If l_Terr_QTypUsg_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
2227 l_Terr_QTypUsg_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_ERROR
2228 THEN
2229 X_return_status := FND_API.G_RET_STS_ERROR;
2230 END IF;
2231 END LOOP;
2232
2233 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2234 THEN
2235 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
2236 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2237 FND_MSG_PUB.Add;
2238 END IF;
2239
2240 -- Standard check for p_commit
2241 IF FND_API.to_Boolean( p_commit )
2242 THEN
2243 COMMIT WORK;
2244 END IF;
2245
2246 -- Standard call to get message count and if count is 1, get message info.
2247 FND_MSG_PUB.Count_And_Get
2248 ( p_count => x_msg_count,
2249 p_data => x_msg_data
2250 );
2251
2252 --dbms_output('Create_Terr_QualType_Usage PVT(TBL): Exiting API');
2253 --
2254 End Create_Terr_QualType_Usage;
2255 --
2256
2257
2258 /* update territory's number of qualifiers
2259 */
2260 PROCEDURE update_terr_num_qual(p_terr_id IN NUMBER, p_qual_type_id IN NUMBER) AS
2261 BEGIN
2262
2263 UPDATE jtf_terr_ALL jt
2264 SET jt.num_qual = (
2265 SELECT COUNT(jtq.qual_usg_id)
2266 FROM jtf_terr_qual_ALL jtq, jtf_qual_usgs_ALL jqu, jtf_qual_type_usgs_ALL jqtu
2267 WHERE jtq.terr_id = jt.terr_id
2268 AND jtq.qual_usg_id = jqu.qual_usg_id
2269 AND jqu.qual_type_usg_id = jqtu.qual_type_usg_id
2270 AND jqtu.qual_type_id = p_qual_type_id
2271 AND jqtu.qual_type_id <> -1001
2272 )
2273 WHERE jt.terr_id = p_terr_id;
2274
2275 EXCEPTION
2276 WHEN NO_DATA_FOUND THEN
2277 NULL;
2278 WHEN OTHERS THEN
2279 NULL;
2280
2281 END update_terr_num_qual;
2282
2283 --
2284 -- ***************************************************
2285 -- start of comments
2286 -- ***************************************************
2287 -- API name : Create_Terr_QualIfier
2288 -- Type : PUBLIC
2289 -- Function : To create Territories qualifier
2290 --
2291 --
2292 -- Pre-reqs :
2293 -- Parameters:
2294 -- IN :
2295 -- Required
2296 -- Parameter Name Data Type Default
2297 -- p_terr_id NUMBER
2298 -- P_Terr_Qual_Tbl Terr_Qual_Rec_Type := G_Miss_Terr_Qual_Rec
2299 --
2300 -- OUT :
2301 -- Parameter Name Data Type
2302 -- X_Terr_Qual_Id NUMBER
2303 -- X_Return_Status VARCHAR2(1)
2304 -- X_Terr_Qual_Out_Tbl Terr_Qual_Out_Tbl
2305 --
2306 -- Notes: This is a an overloaded procedure for a SINGLE RECORD
2307 --
2308 --
2309 -- End of Comments
2310 --
2311 PROCEDURE Create_Terr_Qualifier
2312 ( P_Api_Version_Number IN NUMBER,
2313 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2314 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
2315 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2316 P_Terr_Id IN NUMBER,
2317 P_Terr_Qual_Rec IN Terr_Qual_Rec_Type := G_Miss_Terr_Qual_Rec,
2318 X_Return_Status OUT NOCOPY VARCHAR2,
2319 X_Msg_Count OUT NOCOPY NUMBER,
2320 X_Msg_Data OUT NOCOPY VARCHAR2,
2321 X_Terr_Qual_Id OUT NOCOPY NUMBER,
2322 X_Terr_Qual_Out_Rec OUT NOCOPY Terr_Qual_Out_Rec_Type
2323 )
2324 AS
2325 l_rowid ROWID;
2326 l_terr_qual_id NUMBER := P_Terr_Qual_Rec.terr_qual_id;
2327 l_api_name CONSTANT VARCHAR2(30) := 'Create_Terr_Qualifier';
2328 l_api_version_number CONSTANT NUMBER := 1.0;
2329 BEGIN
2330 --dbms_output('Create_Terr_Qualifier REC: Entering API');
2331
2332 -- Standard Start of API savepoint
2333 SAVEPOINT CREATE_TERR_QUAL_PVT;
2334
2335 -- Standard call to check for call compatibility.
2336 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2337 p_api_version_number,
2338 l_api_name,
2339 G_PKG_NAME)
2340 THEN
2341 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2342 END IF;
2343
2344 -- Initialize message list if p_init_msg_list is set to TRUE.
2345 IF FND_API.to_Boolean( p_init_msg_list )
2346 THEN
2347 FND_MSG_PUB.initialize;
2348 END IF;
2349
2350 -- Debug Message
2351 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2352 THEN
2353 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
2354 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2355 FND_MSG_PUB.Add;
2356 END IF;
2357
2358 -- Initialize API return status to success
2359 x_return_status := FND_API.G_RET_STS_SUCCESS;
2360
2361 -- Check the validation level
2362 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL) THEN
2363
2364 -- Debug message
2365 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2366 THEN
2367 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
2368 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Qualifier');
2369 FND_MSG_PUB.Add;
2370 END IF;
2371 --
2372 -- Invoke validation procedures
2373 Validate_Qualifier(p_init_msg_list => FND_API.G_FALSE,
2374 x_Return_Status => x_return_status,
2375 x_msg_count => x_msg_count,
2376 x_msg_data => x_msg_data,
2377 p_Terr_Id => p_Terr_Id,
2378 P_Terr_Qual_Rec => P_Terr_Qual_Rec);
2379
2380 --dbms_output('Create_Terr_Qualifier REC: x_return_status = ' || x_return_status);
2381
2382 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2383 RAISE FND_API.G_EXC_ERROR;
2384 END IF;
2385 --
2386 END IF;
2387
2388 /* Intialise to NULL if FND_API.G_MISS_NUM,
2389 ** otherwise used passed in value
2390 */
2391 IF (l_terr_qual_id = FND_API.G_MISS_NUM) THEN
2392 l_terr_qual_id := NULL;
2393 END IF;
2394
2395 -- Call insert terr_Qual_Type_Usgs table handler
2396 JTF_TERR_QUAL_PKG.Insert_Row(x_Rowid => l_rowid,
2397 x_TERR_QUAL_ID => l_terr_qual_id,
2398 x_LAST_UPDATE_DATE => P_Terr_Qual_Rec.LAST_UPDATE_DATE,
2399 x_LAST_UPDATED_BY => P_Terr_Qual_Rec.LAST_UPDATED_BY,
2400 x_CREATION_DATE => P_Terr_Qual_Rec.CREATION_DATE,
2401 x_CREATED_BY => P_Terr_Qual_Rec.CREATED_BY,
2402 x_LAST_UPDATE_LOGIN => P_Terr_Qual_Rec.LAST_UPDATE_LOGIN,
2403 x_TERR_ID => P_terr_id,
2404 x_QUAL_USG_ID => P_Terr_Qual_Rec.QUAL_USG_ID,
2405 x_USE_TO_NAME_FLAG => P_Terr_Qual_Rec.USE_TO_NAME_FLAG,
2406 x_GENERATE_FLAG => P_Terr_Qual_Rec.GENERATE_FLAG,
2407 x_OVERLAP_ALLOWED_FLAG => P_Terr_Qual_Rec.OVERLAP_ALLOWED_FLAG,
2408 x_QUALIFIER_MODE => P_Terr_Qual_Rec.QUALIFIER_MODE,
2409 x_ORG_ID => P_Terr_Qual_Rec.ORG_ID);
2410
2411 --
2412 -- Save the terr_qual_id returned by the table handler
2413 X_Terr_Qual_Id := l_Terr_Qual_Id;
2414 X_Terr_Qual_Out_Rec.TERR_QUAL_ID := l_TERR_QUAL_ID;
2415
2416 -- If successful then save the success status for the record
2417 X_Terr_Qual_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
2418
2419
2420 /* update Sales territory's number of Account qualifiers
2421 */
2422 --update_terr_num_qual(p_terr_id, -1002);
2423 --
2424
2425 --
2426 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2427 THEN
2428 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
2429 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2430 FND_MSG_PUB.Add;
2431 END IF;
2432
2433 -- Standard check for p_commit
2434 IF FND_API.to_Boolean( p_commit )
2435 THEN
2436 COMMIT WORK;
2437 END IF;
2438
2439 -- Standard call to get message count and if count is 1, get message info.
2440 FND_MSG_PUB.Count_And_Get
2441 ( p_count => x_msg_count,
2442 p_data => x_msg_data
2443 );
2444
2445
2446 --dbms_output('Create_Terr_Qualifier REC: Exiting API');
2447 EXCEPTION
2448 WHEN FND_API.G_EXC_ERROR THEN
2449 --dbms_output('Create_Territory_Record PVT: FND_API.G_EXC_ERROR');
2450 ROLLBACK TO CREATE_TERR_QUAL_PVT;
2451 x_return_status := FND_API.G_RET_STS_ERROR ;
2452 X_Terr_Qual_Out_Rec.TERR_QUAL_ID := NULL;
2453 X_Terr_Qual_Out_Rec.return_status := x_return_status;
2454 FND_MSG_PUB.Count_And_Get
2455 ( p_count => x_msg_count,
2456 p_data => x_msg_data
2457 );
2458
2459 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2460 --dbms_output('Create_Territory_Record PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
2461 ROLLBACK TO CREATE_TERR_QUAL_PVT;
2462 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2463 X_Terr_Qual_Out_Rec.TERR_QUAL_ID := NULL;
2464 X_Terr_Qual_Out_Rec.return_status := x_return_status;
2465 FND_MSG_PUB.Count_And_Get
2466 ( p_count => x_msg_count,
2467 p_data => x_msg_data
2468 );
2469
2470
2471 WHEN OTHERS THEN
2472 --dbms_output('Create_Terr_Qualifier REC: OTHERS - ' || SQLERRM);
2473 ROLLBACK TO CREATE_TERR_QUAL_PVT;
2474 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2475 X_Terr_Qual_Out_Rec.TERR_QUAL_ID := NULL;
2476 X_Terr_Qual_Out_Rec.return_status := x_return_status;
2477 --
2478 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
2479 THEN
2480 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Others exception in Create_Terr_Qualifier');
2481 END IF;
2482 --
2483 End Create_Terr_Qualifier;
2484 --
2485 --
2486 -- ***************************************************
2487 -- start of comments
2488 -- ***************************************************
2489 -- API name : Create_Terr_QualIfier
2490 -- Type : PUBLIC
2491 -- Function : To create Territories qualifier
2492 --
2493 -- Pre-reqs :
2494 -- Parameters:
2495 -- IN :
2496 -- Required
2497 -- Parameter Name Data Type Default
2498 -- p_terr_id NUMBER
2499 -- P_Terr_Qual_Tbl Terr_Qual_Tbl_Type := G_Miss_Terr_Qual_Tbl
2500 --
2501 -- OUT :
2502 -- Parameter Name Data Type
2503 -- X_Terr_Qual_Id NUMBER
2504 -- X_Return_Status VARCHAR2(1)
2505 -- X_Terr_Qual_Out_Tbl Terr_Qual_Out_Tbl
2506 --
2507 -- Notes: This is a an overloaded procedure. This one
2508 -- will call the overloade procedure for records
2509 -- creation
2510 --
2511 --
2512 -- End of Comments
2513 --
2514 PROCEDURE Create_Terr_Qualifier
2515 ( P_Api_Version_Number IN NUMBER,
2516 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2517 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
2518 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2519 P_Terr_Id IN NUMBER,
2520 P_Terr_Qual_Tbl IN Terr_Qual_Tbl_Type := G_Miss_Terr_Qual_Tbl,
2521 X_Return_Status OUT NOCOPY VARCHAR2,
2522 X_Msg_Count OUT NOCOPY NUMBER,
2523 X_Msg_Data OUT NOCOPY VARCHAR2,
2524 X_Terr_Qual_Out_Tbl OUT NOCOPY Terr_Qual_Out_Tbl_Type
2525 )
2526 AS
2527 --l_rowid ROWID;
2528 l_terr_qual_id NUMBER;
2529 l_return_Status VARCHAR2(1);
2530 l_Terr_Qual_Tbl_Count NUMBER := P_Terr_Qual_Tbl.Count;
2531 l_Terr_Qual_Out_Tbl_Count NUMBER;
2532 l_Terr_Qual_Out_Tbl Terr_Qual_Out_Tbl_Type;
2533 l_Terr_Qual_Out_Rec Terr_Qual_Out_Rec_Type;
2534 --l_Terr_Qual_Tbl Terr_Qual_Tbl_Type;
2535 l_Counter NUMBER;
2536 l_api_name CONSTANT VARCHAR2(30) := 'Create_Terr_Qualifier (Tbl)';
2537 l_api_version_number CONSTANT NUMBER := 1.0;
2538 BEGIN
2539 --dbms_output('Create_Terr_Qualifier TBL: Entering API');
2540
2541 -- Standard Start of API savepoint
2542 SAVEPOINT CREATE_TERR_QUAL_PVT;
2543
2544 -- Standard call to check for call compatibility.
2545 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2546 p_api_version_number,
2547 l_api_name,
2548 G_PKG_NAME)
2549 THEN
2550 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2551 END IF;
2552
2553 -- Initialize message list if p_init_msg_list is set to TRUE.
2554 IF FND_API.to_Boolean( p_init_msg_list )
2555 THEN
2556 FND_MSG_PUB.initialize;
2557 END IF;
2558
2559 -- Debug Message
2560 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2561 THEN
2562 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
2563 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2564 FND_MSG_PUB.Add;
2565 END IF;
2566
2567 -- Initialize API return status to success
2568 x_return_status := FND_API.G_RET_STS_SUCCESS;
2569
2570 -- Call overloaded Create_Terr_Qualifier procedure
2571 --
2572 FOR l_Counter IN 1 .. l_Terr_Qual_Tbl_Count LOOP
2573 --
2574 --dbms_output('Create_Terr_Qualifier TBL: Before Calling Create_Terr_Qualifier');
2575 --
2576 Create_Terr_Qualifier( P_Api_Version_Number => P_Api_Version_Number,
2577 P_Init_Msg_List => P_Init_Msg_List,
2578 P_Commit => P_Commit,
2579 p_validation_level => p_validation_level,
2580 P_Terr_Id => p_Terr_Id,
2581 P_Terr_Qual_Rec => P_Terr_Qual_Tbl(l_counter),
2582 X_Return_Status => l_Return_Status,
2583 X_Msg_Count => X_Msg_Count,
2584 X_Msg_Data => X_Msg_Data,
2585 X_Terr_Qual_Id => l_Terr_qual_id,
2586 X_Terr_Qual_Out_Rec => l_Terr_Qual_Out_Rec);
2587 --
2588 --If there is a major error
2589 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2590 --dbms_output('Create_Terr_Qualifier TBL: l_return_status <> FND_API.G_RET_STS_SUCCESS');
2591 -- Save the terr_usg_id and
2592 X_Terr_Qual_Out_Tbl(l_counter).TERR_QUAL_ID := NULL;
2593 -- If save the ERROR status for the record
2594 X_Terr_Qual_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2595 ELSE
2596 --dbms_output('Create_Terr_Qualifier TBL: l_return_status = FND_API.G_RET_STS_SUCCESS');
2597 -- Save the terr_usg_id and
2598 X_Terr_Qual_Out_Tbl(l_counter).TERR_QUAL_ID := l_TERR_QUAL_ID;
2599 -- If successful then save the success status for the record
2600 X_Terr_Qual_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_SUCCESS;
2601 END IF;
2602 --
2603 END LOOP;
2604
2605 -- Initialize API return status to success
2606 x_return_status := FND_API.G_RET_STS_SUCCESS;
2607
2608 --Get number of records in the ouput table
2609 l_Terr_Qual_Out_Tbl_Count := X_Terr_Qual_Out_Tbl.Count;
2610 l_Terr_Qual_Out_Tbl := X_Terr_Qual_Out_Tbl;
2611
2612 -- Get the API overall return status
2613 FOR l_Counter IN 1 .. l_Terr_Qual_Out_Tbl_Count LOOP
2614 If l_Terr_Qual_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
2615 l_Terr_Qual_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_ERROR
2616 THEN
2617 X_return_status := FND_API.G_RET_STS_ERROR;
2618 END IF;
2619 END LOOP;
2620 --
2621 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2622 THEN
2623 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
2624 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2625 FND_MSG_PUB.Add;
2626 END IF;
2627
2628 -- Standard check for p_commit
2629 IF FND_API.to_Boolean( p_commit )
2630 THEN
2631 COMMIT WORK;
2632 END IF;
2633
2634 -- Standard call to get message count and if count is 1, get message info.
2635 FND_MSG_PUB.Count_And_Get
2636 ( p_count => x_msg_count,
2637 p_data => x_msg_data
2638 );
2639
2640 --dbms_output('Create_Terr_Qualifier TBL: Exiting API');
2641 --
2642 End Create_Terr_Qualifier;
2643 --
2644 --
2645 -- ***************************************************
2646 -- start of comments
2647 -- ***************************************************
2648 -- API name : Create_Terr_Value
2649 -- Type : PUBLIC
2650 -- Function : To create Territories qualifier values
2651 --
2652 --
2653 -- Pre-reqs :
2654 -- Parameters:
2655 -- IN :
2656 -- Required
2657 -- Parameter Name Data Type Default
2658 -- p_terr_id NUMBER
2659 -- p_terr_value_id NUMBER
2660 -- P_Terr_Value_Rec Terr_Values_Rec_Type := G_Miss_Terr_Values_Tbl
2661 --
2662 -- OUT :
2663 -- Parameter Name Data Type
2664 -- X_Terr_Value_Id NUMBER
2665 -- X_Return_Status VARCHAR2(1)
2666 -- X_Terr_Value_Out_Rec Terr_Values_Out_Rec
2667 --
2668 -- Notes: This is a an overloaded procedure
2669 --
2670 --
2671 -- End of Comments
2672 --
2673 PROCEDURE Create_Terr_Value
2674 (P_Api_Version_Number IN NUMBER,
2675 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2676 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
2677 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2678 P_Terr_Id IN NUMBER,
2679 p_terr_qual_id IN NUMBER,
2680 P_Terr_Value_Rec IN Terr_Values_Rec_Type := G_Miss_Terr_Values_Rec,
2681 X_Return_Status OUT NOCOPY VARCHAR2,
2682 X_Msg_Count OUT NOCOPY NUMBER,
2683 X_Msg_Data OUT NOCOPY VARCHAR2,
2684 X_Terr_Value_Id OUT NOCOPY NUMBER,
2685 X_Terr_Value_Out_Rec OUT NOCOPY Terr_Values_Out_Rec_Type
2686 )
2687 AS
2688 l_rowid ROWID;
2689 l_terr_Value_id NUMBER := P_Terr_Value_Rec.terr_value_id;
2690 l_api_name CONSTANT VARCHAR2(30) := 'Create_Terr_Values';
2691 l_api_version_number CONSTANT NUMBER := 1.0;
2692 BEGIN
2693 --dbms_output('Create_Terr_Value PVT: Entering API');
2694 -- Standard Start of API savepoint
2695 SAVEPOINT CREATE_TERR_VALUE_PVT;
2696
2697 -- Standard call to check for call compatibility.
2698 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2699 p_api_version_number,
2700 l_api_name,
2701 G_PKG_NAME)
2702 THEN
2703 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2704 END IF;
2705
2706 -- Initialize message list if p_init_msg_list is set to TRUE.
2707 IF FND_API.to_Boolean( p_init_msg_list )
2708 THEN
2709 FND_MSG_PUB.initialize;
2710 END IF;
2711
2712 -- Debug Message
2713 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2714 THEN
2715 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
2716 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2717 FND_MSG_PUB.Add;
2718 END IF;
2719
2720 -- Initialize API return status to success
2721 x_return_status := FND_API.G_RET_STS_SUCCESS;
2722
2723 -- Check the validation level
2724 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL) THEN
2725 -- Debug message
2726 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2727 THEN
2728 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
2729 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_terr_Value_Rec');
2730 FND_MSG_PUB.Add;
2731 END IF;
2732
2733 -- Invoke validation procedures
2734 Validate_Terr_Value_Rec(p_init_msg_list => FND_API.G_FALSE,
2735 x_return_status => x_return_status,
2736 x_msg_count => x_msg_count,
2737 x_msg_data => x_msg_data,
2738 p_terr_qual_id => p_terr_qual_id,
2739 p_Terr_Value_Rec => P_Terr_Value_Rec);
2740
2741 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
2742 RAISE FND_API.G_EXC_ERROR;
2743 END IF;
2744 END IF;
2745
2746 --
2747 /* Intialise to NULL if FND_API.G_MISS_NUM,
2748 ** otherwise used passed in value
2749 */
2750 IF (l_terr_value_id = FND_API.G_MISS_NUM) THEN
2751 l_terr_value_id := NULL;
2752 END IF;
2753
2754 --
2755 --dbms_output('Create_Terr_Value PVT: Before Calling JTF_TERR_VALUES_PKG.Insert_Row');
2756 JTF_TERR_VALUES_PKG.Insert_Row(x_Rowid => l_rowid,
2757 x_TERR_VALUE_ID => l_terr_value_id,
2758 x_LAST_UPDATED_BY => P_Terr_Value_Rec.LAST_UPDATED_BY,
2759 x_LAST_UPDATE_DATE => P_Terr_Value_Rec.LAST_UPDATE_DATE,
2760 x_CREATED_BY => P_Terr_Value_Rec.CREATED_BY,
2761 x_CREATION_DATE => P_Terr_Value_Rec.CREATION_DATE,
2762 x_LAST_UPDATE_LOGIN => P_Terr_Value_Rec.LAST_UPDATE_LOGIN,
2763 x_TERR_QUAL_ID => P_terr_qual_id,
2764 x_INCLUDE_FLAG => P_Terr_Value_Rec.INCLUDE_FLAG,
2765 x_COMPARISON_OPERATOR => P_Terr_Value_Rec.COMPARISON_OPERATOR,
2766 x_LOW_VALUE_CHAR => P_Terr_Value_Rec.LOW_VALUE_CHAR,
2767 x_HIGH_VALUE_CHAR => P_Terr_Value_Rec.HIGH_VALUE_CHAR,
2768 x_LOW_VALUE_NUMBER => P_Terr_Value_Rec.LOW_VALUE_NUMBER,
2769 x_HIGH_VALUE_NUMBER => P_Terr_Value_Rec.HIGH_VALUE_NUMBER,
2770 x_VALUE_SET => P_Terr_Value_Rec.VALUE_SET,
2771 x_INTEREST_TYPE_ID => P_Terr_Value_Rec.INTEREST_TYPE_ID,
2772 x_PRIMARY_INTEREST_CODE_ID => P_Terr_Value_Rec.PRIMARY_INTEREST_CODE_ID,
2773 x_SECONDARY_INTEREST_CODE_ID => P_Terr_Value_Rec.SECONDARY_INTEREST_CODE_ID,
2774 x_CURRENCY_CODE => P_Terr_Value_Rec.CURRENCY_CODE,
2775 x_ID_USED_FLAG => P_Terr_Value_Rec.ID_USED_FLAG,
2776 x_LOW_VALUE_CHAR_ID => P_Terr_Value_Rec.LOW_VALUE_CHAR_ID,
2777 x_ORG_ID => P_Terr_Value_Rec.ORG_ID,
2778 x_CNR_GROUP_ID => p_terr_value_rec.CNR_GROUP_ID,
2779 x_VALUE1_ID => p_terr_value_rec.VALUE1_ID,
2780 x_VALUE2_ID => p_terr_value_rec.VALUE2_ID,
2781 x_VALUE3_ID => p_terr_value_rec.VALUE3_ID,
2782 x_VALUE4_ID => p_terr_value_rec.VALUE4_ID );
2783
2784 --
2785 -- Save the terr_qual_id returned by the table handler
2786 X_Terr_Value_Id := l_Terr_Value_Id;
2787 X_Terr_Value_Out_Rec.TERR_VALUE_ID := l_TERR_VALUE_ID;
2788
2789 -- If successful then save the success status for the record
2790 X_Terr_Value_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
2791
2792 --
2793 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2794 THEN
2795 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
2796 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2797 FND_MSG_PUB.Add;
2798 END IF;
2799
2800 -- Standard check for p_commit
2801 IF FND_API.to_Boolean( p_commit )
2802 THEN
2803 COMMIT WORK;
2804 END IF;
2805
2806 -- Standard call to get message count and if count is 1, get message info.
2807 FND_MSG_PUB.Count_And_Get
2808 ( p_count => x_msg_count,
2809 p_data => x_msg_data
2810 );
2811
2812 --dbms_output('Create_Terr_Value PVT: Exiting API');
2813 EXCEPTION
2814 WHEN FND_API.G_EXC_ERROR THEN
2815 --dbms_output('Create_Territory_Record PVT: FND_API.G_EXC_ERROR');
2816 ROLLBACK TO CREATE_TERR_VALUE_PVT;
2817 x_return_status := FND_API.G_RET_STS_ERROR ;
2818 X_Terr_Value_Out_Rec.TERR_VALUE_ID := NULL;
2819 X_Terr_Value_Out_Rec.return_status := x_return_status;
2820 FND_MSG_PUB.Count_And_Get
2821 ( p_count => x_msg_count,
2822 p_data => x_msg_data
2823 );
2824
2825 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2826 --dbms_output('Create_Territory_Record PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
2827 ROLLBACK TO CREATE_TERR_VALUE_PVT;
2828 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2829 X_Terr_Value_Out_Rec.TERR_VALUE_ID := NULL;
2830 X_Terr_Value_Out_Rec.return_status := x_return_status;
2831
2832 FND_MSG_PUB.Count_And_Get
2833 ( p_count => x_msg_count,
2834 p_data => x_msg_data
2835 );
2836
2837 WHEN OTHERS THEN
2838 --dbms_output('Create_Terr_Value PVT: OTHERS - ' || SQLERRM);
2839 ROLLBACK TO CREATE_TERR_VALUE_PVT;
2840 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2841 X_Terr_Value_Out_Rec.TERR_VALUE_ID := NULL;
2842 X_Terr_Value_Out_Rec.return_status := x_return_status;
2843 --
2844 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
2845 THEN
2846 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Others exception in Create_Terr_Value');
2847 END IF;
2848 --
2849 End Create_Terr_Value;
2850
2851 --
2852 --
2853 -- ***************************************************
2854 -- start of comments
2855 -- ***************************************************
2856 -- API name : Create_Terr_Value
2857 -- Type : PUBLIC
2858 -- Function : To create Territories qualifier values
2859 --
2860 -- Pre-reqs :
2861 -- Parameters:
2862 -- IN :
2863 -- Required
2864 -- Parameter Name Data Type Default
2865 -- p_terr_id NUMBER
2866 -- p_terr_Value_id NUMBER
2867 -- P_Terr_Qual_Tbl Terr_Qual_Tbl_Type := G_Miss_Terr_Qual_Tbl
2868 --
2869 -- OUT :
2870 -- Parameter Name Data Type
2871 -- X_Terr_Qual_Id NUMBER
2872 -- X_Return_Status VARCHAR2(1)
2873 -- X_Terr_Qual_Out_Tbl Terr_Qual_Out_Tbl
2874 --
2875 -- Notes: This is a an overloaded procedure. This one
2876 -- will call the overloade procedure for records
2877 -- creation
2878 --
2879 --
2880 -- End of Comments
2881 --
2882 PROCEDURE Create_Terr_Value
2883 (P_Api_Version_Number IN NUMBER,
2884 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
2885 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
2886 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2887 P_Terr_Id IN NUMBER,
2888 p_terr_qual_id IN NUMBER,
2889 P_Terr_Value_Tbl IN Terr_Values_Tbl_Type := G_Miss_Terr_Values_Tbl,
2890 X_Return_Status OUT NOCOPY VARCHAR2,
2891 X_Msg_Count OUT NOCOPY NUMBER,
2892 X_Msg_Data OUT NOCOPY VARCHAR2,
2893 X_Terr_Value_Out_Tbl OUT NOCOPY Terr_Values_Out_Tbl_Type
2894 )
2895 AS
2896 --l_rowid ROWID;
2897 l_terr_value_id NUMBER;
2898 l_return_Status VARCHAR2(1);
2899 l_Terr_Value_Tbl_Count NUMBER := P_Terr_Value_Tbl.Count;
2900 l_Terr_Value_Out_Tbl_Count NUMBER;
2901 l_Terr_Value_Out_Tbl Terr_Values_Out_Tbl_Type;
2902 l_Terr_Value_Out_Rec Terr_Values_Out_Rec_Type;
2903 l_Counter NUMBER;
2904
2905 l_api_name CONSTANT VARCHAR2(30) := 'Create_Terr_Value (Tbl)';
2906 l_api_version_number CONSTANT NUMBER := 1.0;
2907 BEGIN
2908 --dbms_output('Create_Terr_Value TBL: Entering API');
2909
2910 -- Standard Start of API savepoint
2911 SAVEPOINT CREATE_TERR_VALUE_PVT;
2912
2913 -- Standard call to check for call compatibility.
2914 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2915 p_api_version_number,
2916 l_api_name,
2917 G_PKG_NAME)
2918 THEN
2919 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2920 END IF;
2921
2922 -- Initialize message list if p_init_msg_list is set to TRUE.
2923 IF FND_API.to_Boolean( p_init_msg_list )
2924 THEN
2925 FND_MSG_PUB.initialize;
2926 END IF;
2927
2928 -- Debug Message
2929 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2930 THEN
2931 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
2932 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2933 FND_MSG_PUB.Add;
2934 END IF;
2935
2936 -- Initialize API return status to success
2937 x_return_status := FND_API.G_RET_STS_SUCCESS;
2938
2939 -- Call overloaded Create_Terr_Qualifier procedure
2940 --
2941 FOR l_Counter IN 1 .. l_Terr_Value_Tbl_Count LOOP
2942 --
2943 --dbms_output('Create_Terr_Value TBL: Before Calling Create_Terr_Value -' || to_char(P_Terr_Value_Tbl(l_counter).QUALIFIER_TBL_INDEX) );
2944 --
2945 Create_Terr_Value( P_Api_Version_Number => P_Api_Version_Number,
2946 P_Init_Msg_List => P_Init_Msg_List,
2947 P_Commit => P_Commit,
2948 p_validation_level => p_validation_level,
2949 P_Terr_Id => p_Terr_Id,
2950 P_Terr_Qual_Id => p_Terr_Qual_Id,
2951 P_Terr_Value_Rec => P_Terr_Value_Tbl(l_counter),
2952 X_Return_Status => l_Return_Status,
2953 X_Msg_Count => X_Msg_Count,
2954 X_Msg_Data => X_Msg_Data,
2955 X_Terr_Value_Id => l_Terr_Value_id,
2956 X_Terr_Value_Out_Rec => l_Terr_Value_Out_Rec);
2957 --
2958 --If there is a major error
2959 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2960 --dbms_output('Create_Terr_Value TBL: l_return_status <> FND_API.G_RET_STS_SUCCESS');
2961 -- Save the terr_usg_id and
2962 X_Terr_Value_Out_Tbl(l_counter).TERR_VALUE_ID := NULL;
2963 -- If save the ERROR status for the record
2964 X_Terr_Value_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2965 ELSE
2966 --dbms_output('Create_Terr_Value TBL: l_return_status = FND_API.G_RET_STS_SUCCESS');
2967 -- Save the terr_usg_id and
2968 X_Terr_Value_Out_Tbl(l_counter).TERR_VALUE_ID := l_TERR_VALUE_ID;
2969 -- If successful then save the success status for the record
2970 X_Terr_Value_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_SUCCESS;
2971 END IF;
2972 --
2973 END LOOP;
2974
2975 -- Get the API overall return status
2976 -- Initialize API return status to success
2977 x_return_status := FND_API.G_RET_STS_SUCCESS;
2978
2979 --Get number of records in the ouput table
2980 l_Terr_Value_Out_Tbl_Count := X_Terr_Value_Out_Tbl.Count;
2981 l_Terr_Value_Out_Tbl := X_Terr_Value_Out_Tbl;
2982
2983 FOR l_Counter IN 1 .. l_Terr_Value_Out_Tbl_Count LOOP
2984 If l_Terr_Value_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
2985 l_Terr_Value_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_ERROR
2986 THEN
2987 X_return_status := FND_API.G_RET_STS_ERROR;
2988 END IF;
2989 END LOOP;
2990 --
2991 --
2992 -- Debug Message
2993 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
2994 THEN
2995 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
2996 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
2997 FND_MSG_PUB.Add;
2998 END IF;
2999
3000 --
3001 -- Standard check for p_commit
3002 IF FND_API.to_Boolean( p_commit )
3003 THEN
3004 COMMIT WORK;
3005 END IF;
3006
3007 -- Standard call to get message count and if count is 1, get message info.
3008 FND_MSG_PUB.Count_And_Get
3009 ( p_count => x_msg_count,
3010 p_data => x_msg_data
3011 );
3012
3013 --dbms_output('Create_Terr_Value TBL: Exiting API');
3014 --
3015 End Create_Terr_Value;
3016
3017 ----------------------------------------------------------------------------------
3018 -- UPDATE PROCEDURE STARTS HERE
3019 ----------------------------------------------------------------------------------
3020 --
3021 -- *******************************************************
3022 -- Start of Comments
3023 -- *******************************************************
3024 -- API Name: Update_territory
3025 -- Type :
3026 -- Pre-Req :
3027 -- Parameters:
3028 -- IN
3029 -- Required:
3030 -- Parameter Name Data Type Default
3031 --
3032 -- Optional:
3033 -- OUT:
3034 -- Parameter Name Data Type Default
3035 --
3036 -- Note:
3037 --
3038 -- End of Comments
3039 --
3040 PROCEDURE Update_Territory_Record
3041 ( P_Api_Version_Number IN NUMBER,
3042 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
3043 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
3044 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3045 P_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
3046 X_Return_Status OUT NOCOPY VARCHAR2,
3047 X_Msg_Count OUT NOCOPY NUMBER,
3048 X_Msg_Data OUT NOCOPY VARCHAR2,
3049 X_Terr_All_Out_Rec OUT NOCOPY Terr_All_Out_Rec_Type
3050 )
3051 AS
3052 Cursor C_GetTerritory(l_terr_id Number) IS
3053 Select Rowid,
3054 TERR_ID,
3055 LAST_UPDATE_DATE,
3056 LAST_UPDATED_BY,
3057 CREATION_DATE,
3058 CREATED_BY,
3059 LAST_UPDATE_LOGIN,
3060 REQUEST_ID,
3061 PROGRAM_APPLICATION_ID,
3062 PROGRAM_ID,
3063 PROGRAM_UPDATE_DATE,
3064 APPLICATION_SHORT_NAME,
3065 NAME,
3066 ENABLED_FLAG,
3067 START_DATE_ACTIVE,
3068 END_DATE_ACTIVE,
3069 PLANNED_FLAG,
3070 PARENT_TERRITORY_ID,
3071 TERRITORY_TYPE_ID,
3072 TEMPLATE_TERRITORY_ID,
3073 TEMPLATE_FLAG,
3074 ESCALATION_TERRITORY_ID,
3075 ESCALATION_TERRITORY_FLAG,
3076 OVERLAP_ALLOWED_FLAG,
3077 RANK,
3078 DESCRIPTION,
3079 UPDATE_FLAG,
3080 AUTO_ASSIGN_RESOURCES_FLAG,
3081 ATTRIBUTE_CATEGORY,
3082 ATTRIBUTE1,
3083 ATTRIBUTE2,
3084 ATTRIBUTE3,
3085 ATTRIBUTE4,
3086 ATTRIBUTE5,
3087 ATTRIBUTE6,
3088 ATTRIBUTE7,
3089 ATTRIBUTE8,
3090 ATTRIBUTE9,
3091 ATTRIBUTE10,
3092 ATTRIBUTE11,
3093 ATTRIBUTE12,
3094 ATTRIBUTE13,
3095 ATTRIBUTE14,
3096 ATTRIBUTE15,
3097 ORG_ID,
3098 NUM_WINNERS,
3099 NUM_QUAL
3100 From JTF_TERR_ALL
3101 Where TERR_ID = l_terr_id
3102 For Update NOWAIT;
3103
3104 --Local variable declaration
3105 l_api_name CONSTANT VARCHAR2(30) := 'Update_territory';
3106 l_rowid VARCHAR2(50);
3107 l_api_version_number CONSTANT NUMBER := 1.0;
3108 l_return_status VARCHAR2(1);
3109 l_ref_terr_all_rec terr_all_rec_type;
3110 BEGIN
3111 --dbms_output('Create_Terr_Value TBL: Entering API');
3112
3113 -- Debug Message
3114 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3115 THEN
3116 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
3117 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3118 FND_MSG_PUB.Add;
3119 END IF;
3120
3121 -- Initialize API return status to SUCCESS
3122 x_return_status := FND_API.G_RET_STS_SUCCESS;
3123
3124 IF ( P_validation_level > FND_API.G_VALID_LEVEL_NONE)
3125 THEN
3126 -- Debug message
3127 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3128 THEN
3129 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
3130 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Territory_Record');
3131 FND_MSG_PUB.Add;
3132 END IF;
3133 --
3134 -- Invoke validation procedures
3135 Validate_Territory_Record(p_init_msg_list => FND_API.G_FALSE,
3136 x_Return_Status => x_return_status,
3137 x_msg_count => x_msg_count,
3138 x_msg_data => x_msg_data,
3139 p_Terr_All_Rec => P_Terr_All_Rec);
3140
3141 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3142 RAISE FND_API.G_EXC_ERROR;
3143 END IF;
3144 END IF;
3145
3146 --dbms_output('Update_territory_Record: opening cursor C_GetTerritory');
3147 OPEN C_GetTerritory( P_Terr_All_Rec.Terr_Id);
3148
3149 FETCH C_GetTerritory into
3150 l_Rowid,
3151 l_ref_terr_all_rec.TERR_ID,
3152 l_ref_terr_all_rec.LAST_UPDATE_DATE,
3153 l_ref_terr_all_rec.LAST_UPDATED_BY,
3154 l_ref_terr_all_rec.CREATION_DATE,
3155 l_ref_terr_all_rec.CREATED_BY,
3156 l_ref_terr_all_rec.LAST_UPDATE_LOGIN,
3157 l_ref_terr_all_rec.REQUEST_ID,
3158 l_ref_terr_all_rec.PROGRAM_APPLICATION_ID,
3159 l_ref_terr_all_rec.PROGRAM_ID,
3160 l_ref_terr_all_rec.PROGRAM_UPDATE_DATE,
3161 l_ref_terr_all_rec.APPLICATION_SHORT_NAME,
3162 l_ref_terr_all_rec.NAME,
3163 l_ref_terr_all_rec.ENABLED_FLAG,
3164 l_ref_terr_all_rec.START_DATE_ACTIVE,
3165 l_ref_terr_all_rec.END_DATE_ACTIVE,
3166 l_ref_terr_all_rec.PLANNED_FLAG,
3167 l_ref_terr_all_rec.PARENT_TERRITORY_ID,
3168 l_ref_terr_all_rec.TERRITORY_TYPE_ID,
3169 l_ref_terr_all_rec.TEMPLATE_TERRITORY_ID,
3170 l_ref_terr_all_rec.TEMPLATE_FLAG,
3171 l_ref_terr_all_rec.ESCALATION_TERRITORY_ID,
3172 l_ref_terr_all_rec.ESCALATION_TERRITORY_FLAG,
3173 l_ref_terr_all_rec.OVERLAP_ALLOWED_FLAG,
3174 l_ref_terr_all_rec.RANK,
3175 l_ref_terr_all_rec.DESCRIPTION,
3176 l_ref_terr_all_rec.UPDATE_FLAG,
3177 l_ref_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG,
3178 l_ref_terr_all_rec.ATTRIBUTE_CATEGORY,
3179 l_ref_terr_all_rec.ATTRIBUTE1,
3180 l_ref_terr_all_rec.ATTRIBUTE2,
3181 l_ref_terr_all_rec.ATTRIBUTE3,
3182 l_ref_terr_all_rec.ATTRIBUTE4,
3183 l_ref_terr_all_rec.ATTRIBUTE5,
3184 l_ref_terr_all_rec.ATTRIBUTE6,
3185 l_ref_terr_all_rec.ATTRIBUTE7,
3186 l_ref_terr_all_rec.ATTRIBUTE8,
3187 l_ref_terr_all_rec.ATTRIBUTE9,
3188 l_ref_terr_all_rec.ATTRIBUTE10,
3189 l_ref_terr_all_rec.ATTRIBUTE11,
3190 l_ref_terr_all_rec.ATTRIBUTE12,
3191 l_ref_terr_all_rec.ATTRIBUTE13,
3192 l_ref_terr_all_rec.ATTRIBUTE14,
3193 l_ref_terr_all_rec.ATTRIBUTE15,
3194 l_ref_terr_all_rec.ORG_ID,
3195 l_ref_terr_all_rec.NUM_WINNERS,
3196 l_ref_terr_all_rec.NUM_QUAL;
3197
3198 If ( C_GetTerritory%NOTFOUND) Then
3199 --dbms_output('Update_territory_Record: NO-RCORDS-FOUND');
3200 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
3201 THEN
3202 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_UPDT_TARGET');
3203 FND_MESSAGE.Set_Token('TABLE_NAME', 'JTF_TERR_QTYPE_USGS');
3204 FND_MESSAGE.Set_Token('PK_ID', TO_CHAR(p_terr_all_rec.terr_id));
3205 FND_MSG_PUB.Add;
3206 END IF;
3207 raise FND_API.G_EXC_ERROR;
3208 End if;
3209 CLOSE C_GetTerritory;
3210
3211 --dbms_output('Update_territory_Record: Before Calling JTF_TERR_PKG.Update_Row');
3212 JTF_TERR_PKG.Update_Row(x_rowid => l_rowid,
3213 x_terr_id => p_terr_all_rec.terr_id,
3214 x_last_update_date => p_terr_all_rec.LAST_UPDATE_DATE,
3215 x_last_updated_by => p_terr_all_rec.LAST_UPDATED_BY,
3216 x_creation_date => p_terr_all_rec.CREATION_DATE,
3217 x_created_by => p_terr_all_rec.CREATED_BY,
3218 x_last_update_login => p_terr_all_rec.LAST_UPDATE_LOGIN,
3219 x_request_id => null,
3220 x_program_application_id => null,
3221 x_program_id => null,
3222 x_program_update_date => null,
3223 x_application_short_name => p_terr_all_rec.application_short_name,
3224 x_name => p_terr_all_rec.name,
3225 x_enabled_flag => p_terr_all_rec.enabled_flag,
3226 x_start_date_active => p_terr_all_rec.start_date_active,
3227 x_end_date_active => p_terr_all_rec.end_date_active,
3228 x_planned_flag => p_terr_all_rec.planned_flag,
3229 x_parent_territory_id => p_terr_all_rec.parent_territory_id,
3230 x_territory_type_id => p_terr_all_rec.territory_type_id,
3231 x_template_territory_id => p_terr_all_rec.template_territory_id,
3232 x_template_flag => p_terr_all_rec.template_flag,
3233 x_escalation_territory_id => p_terr_all_rec.escalation_territory_id,
3234 x_escalation_territory_flag => p_terr_all_rec.escalation_territory_flag,
3235 x_overlap_allowed_flag => p_terr_all_rec.overlap_allowed_flag,
3236 x_rank => p_terr_all_rec.rank,
3237 x_description => p_terr_all_rec.description,
3238 x_update_flag => p_terr_all_rec.update_flag,
3239 x_auto_assign_resources_flag => p_terr_all_rec.AUTO_ASSIGN_RESOURCES_FLAG,
3240 x_attribute_category => p_terr_all_rec.attribute_category,
3241 x_attribute1 => p_terr_all_rec.attribute1,
3242 x_attribute2 => p_terr_all_rec.attribute2,
3243 x_attribute3 => p_terr_all_rec.attribute3,
3244 x_attribute4 => p_terr_all_rec.attribute4,
3245 x_attribute5 => p_terr_all_rec.attribute5,
3246 x_attribute6 => p_terr_all_rec.attribute6,
3247 x_attribute7 => p_terr_all_rec.attribute7,
3248 x_attribute8 => p_terr_all_rec.attribute8,
3249 x_attribute9 => p_terr_all_rec.attribute9,
3250 x_attribute10 => p_terr_all_rec.attribute10,
3251 x_attribute11 => p_terr_all_rec.attribute11,
3252 x_attribute12 => p_terr_all_rec.attribute12,
3253 x_attribute13 => p_terr_all_rec.attribute13,
3254 x_attribute14 => p_terr_all_rec.attribute14,
3255 x_attribute15 => p_terr_all_rec.attribute15,
3256 x_org_id => p_terr_all_rec.ORG_ID,
3257 x_num_winners => p_terr_all_rec.NUM_WINNERS,
3258 x_num_qual => p_terr_all_rec.NUM_QUAL);
3259
3260 X_Terr_All_Out_Rec.Terr_id := P_Terr_All_Rec.Terr_Id;
3261 X_Terr_All_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
3262
3263 -- Debug Message
3264 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3265 THEN
3266 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
3267 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3268 FND_MSG_PUB.Add;
3269 END IF;
3270
3271 --dbms_output('Update_territory_Record PVT: Exiting API');
3272 EXCEPTION
3273 WHEN FND_API.G_EXC_ERROR THEN
3274 --dbms_output('Validate_Territory_Record: FND_API.G_EXC_ERROR');
3275 x_return_status := FND_API.G_RET_STS_ERROR ;
3276 FND_MSG_PUB.Count_And_Get
3277 ( P_count => x_msg_count,
3278 P_data => x_msg_data
3279 );
3280
3281
3282 WHEN OTHERS THEN
3283 --dbms_output('Update_territory_Record PVT: OTHERS - ' || SQLERRM);
3284 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3285 X_Terr_All_Out_Rec.Terr_id := P_Terr_All_Rec.Terr_Id;
3286 X_Terr_All_Out_Rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3287 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
3288 THEN
3289 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Update error inside Update_Territory_Record');
3290 END IF;
3291 --
3292 End Update_territory_Record;
3293 --
3294 --
3295 -- *******************************************************
3296 -- Start of Comments
3297 -- *******************************************************
3298 -- API Name: Update_Territory_Usages
3299 -- Type :
3300 -- Pre-Req :
3301 -- Parameters:
3302 -- IN
3303 -- Required:
3304 -- Parameter Name Data Type Default
3305 -- P_Terr_Usgs_Rec Terr_Usgs_Rec_Type G_MISS_TERR_USGS_REC
3306 --
3307 -- Optional:
3308 -- OUT:
3309 -- Parameter Name Data Type Default
3310 -- X_Return_Status VARCHAR2
3311 -- X_Terr_Usgs_Out_Rec Terr_Usgs_Out_Rec_Type
3312 --
3313 --
3314 -- Note:
3315 --
3316 -- End of Comments
3317 --
3318 PROCEDURE Update_Territory_Usages
3319 ( P_Api_Version_Number IN NUMBER,
3320 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
3321 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
3322 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3323 P_Terr_Usgs_Rec IN Terr_Usgs_Rec_Type := G_MISS_TERR_USGS_REC,
3324 X_Return_Status OUT NOCOPY VARCHAR2,
3325 X_Msg_Count OUT NOCOPY NUMBER,
3326 X_Msg_Data OUT NOCOPY VARCHAR2,
3327 X_Terr_Usgs_Out_Rec OUT NOCOPY Terr_Usgs_Out_Rec_Type
3328 )
3329 AS
3330 Cursor C_GetTerritoryUsage(l_terr_usg_id Number) IS
3331 Select Rowid,
3332 TERR_USG_ID,
3333 LAST_UPDATE_DATE,
3334 LAST_UPDATED_BY,
3335 CREATION_DATE,
3336 CREATED_BY,
3337 LAST_UPDATE_LOGIN,
3338 TERR_ID,
3339 SOURCE_ID
3340 From JTF_TERR_USGS_ALL
3341 Where terr_usg_id = l_terr_usg_id
3342 FOR Update NOWAIT;
3343 --Local variable declaration
3344 l_api_name CONSTANT VARCHAR2(30) := 'Update_territory_Usages';
3345 l_rowid VARCHAR2(50);
3346 l_api_version_number CONSTANT NUMBER := 1.0;
3347 l_return_status VARCHAR2(1);
3348 l_ref_terr_Usg_rec Terr_Usgs_Rec_Type;
3349 BEGIN
3350 -- Debug Message
3351 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3352 THEN
3353 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
3354 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3355 FND_MSG_PUB.Add;
3356 END IF;
3357
3358 -- Initialize API return status to SUCCESS
3359 x_return_status := FND_API.G_RET_STS_SUCCESS;
3360
3361 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
3362 THEN
3363 -- Debug message
3364 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3365 THEN
3366 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
3367 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Territory_Usage');
3368 FND_MSG_PUB.Add;
3369 END IF;
3370 --
3371 -- Invoke validation procedures
3372 Validate_Territory_Usage(p_init_msg_list => FND_API.G_FALSE,
3373 x_Return_Status => x_return_status,
3374 x_msg_count => x_msg_count,
3375 x_msg_data => x_msg_data,
3376 p_Terr_Id => P_Terr_Usgs_Rec.Terr_Id,
3377 P_Terr_Usgs_Rec => P_Terr_Usgs_Rec);
3378 --
3379 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3380 RAISE FND_API.G_EXC_ERROR;
3381 END IF;
3382 --
3383 END IF;
3384
3385 --dbms_output('Update_Territory_Usages PVT: Entering API');
3386 OPEN C_GetTerritoryUsage( P_Terr_Usgs_Rec.Terr_Usg_Id);
3387
3388 --dbms_output('Update_Territory_Usages PVT: Opening cursor C_GetTerritoryUsage');
3389 FETCH C_GetTerritoryUsage into
3390 l_Rowid,
3391 l_ref_terr_Usg_rec.TERR_USG_ID,
3392 l_ref_terr_Usg_rec.LAST_UPDATE_DATE,
3393 l_ref_terr_Usg_rec.LAST_UPDATED_BY,
3394 l_ref_terr_Usg_rec.CREATION_DATE,
3395 l_ref_terr_Usg_rec.CREATED_BY,
3396 l_ref_terr_Usg_rec.LAST_UPDATE_LOGIN,
3397 l_ref_terr_Usg_rec.TERR_ID,
3398 l_ref_terr_Usg_rec.SOURCE_ID;
3399
3400 If ( C_GetTerritoryUsage%NOTFOUND) Then
3401 --dbms_output('Update_Territory_Usages PVT: NO-RCORDS-FOUND');
3402 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
3403 THEN
3404 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_UPDT_TARGET');
3405 FND_MESSAGE.Set_Token('TABLE_NAME', 'JTF_TERR_QTYPE_USGS');
3406 FND_MESSAGE.Set_Token('PK_ID', TO_CHAR(P_Terr_Usgs_Rec.terr_usg_id));
3407 FND_MSG_PUB.Add;
3408 END IF;
3409 raise FND_API.G_EXC_ERROR;
3410 End if;
3411 CLOSE C_GetTerritoryUsage;
3412
3413 --dbms_output('Update_Territory_Usages PVT: Before Calling JTF_TERR_USGS_PKG.Update_Row');
3414 -- Call insert terr_Qual_Type_Usgs table handler
3415 JTF_TERR_USGS_PKG.Update_Row(x_Rowid => l_rowid,
3416 x_TERR_USG_ID => P_Terr_Usgs_Rec.terr_usg_id,
3417 x_LAST_UPDATE_DATE => P_Terr_Usgs_Rec.LAST_UPDATE_DATE,
3418 x_LAST_UPDATED_BY => P_Terr_Usgs_Rec.LAST_UPDATED_BY,
3419 x_CREATION_DATE => P_Terr_Usgs_Rec.CREATION_DATE,
3420 x_CREATED_BY => P_Terr_Usgs_Rec.CREATED_BY,
3421 x_LAST_UPDATE_LOGIN => P_Terr_Usgs_Rec.LAST_UPDATE_LOGIN,
3422 x_TERR_ID => P_Terr_Usgs_Rec.Terr_Id,
3423 x_SOURCE_ID => P_Terr_Usgs_Rec.source_id,
3424 x_ORG_ID => P_Terr_Usgs_Rec.org_id);
3425
3426 X_Terr_Usgs_Out_Rec.TERR_USG_ID := P_Terr_Usgs_Rec.Terr_Usg_Id;
3427 X_Terr_Usgs_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
3428
3429 -- Debug Message
3430 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3431 THEN
3432 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
3433 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3434 FND_MSG_PUB.Add;
3435 END IF;
3436
3437 --dbms_output('Update_Territory_Usages PVT: Exiting API');
3438 EXCEPTION
3439 WHEN FND_API.G_EXC_ERROR THEN
3440 --dbms_output('Update_Territory_Usages: FND_API.G_EXC_ERROR');
3441 x_return_status := FND_API.G_RET_STS_ERROR ;
3442 FND_MSG_PUB.Count_And_Get
3443 ( P_count => x_msg_count,
3444 P_data => x_msg_data
3445 );
3446
3447
3448 WHEN OTHERS THEN
3449 --dbms_output('Update_Territory_Usages PVT: OTHERS - ' || SQLERRM);
3450 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3451 X_Terr_Usgs_Out_Rec.Terr_Usg_Id := P_Terr_Usgs_Rec.Terr_Usg_Id;
3452 X_Terr_Usgs_Out_Rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3453 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
3454 THEN
3455 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Update error inside Update_Territory_Usages');
3456 END IF;
3457 --
3458 End Update_Territory_Usages;
3459 --
3460 -- *******************************************************
3461 -- Start of Comments
3462 -- *******************************************************
3463 -- API Name: Update_Territory_Usages
3464 -- Type :
3465 -- Pre-Req :
3466 -- Parameters:
3467 -- IN
3468 -- Required:
3469 -- Parameter Name Data Type Default
3470 -- P_Terr_Usgs_Tbl Terr_Usgs_Tbl_Type G_MISS_TERR_USGS_TBL
3471 --
3472 -- Optional:
3473 -- OUT:
3474 -- Parameter Name Data Type Default
3475 -- X_Return_Status VARCHAR2
3476 -- X_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl_Type
3477 --
3478 --
3479 -- Note:
3480 --
3481 -- End of Comments
3482 --
3483 PROCEDURE Update_Territory_Usages
3484 ( P_Api_Version_Number IN NUMBER,
3485 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
3486 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
3487 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3488 P_Terr_Usgs_Tbl IN Terr_Usgs_Tbl_Type := G_MISS_Terr_Usgs_Tbl,
3489 X_Return_Status OUT NOCOPY VARCHAR2,
3490 X_Msg_Count OUT NOCOPY NUMBER,
3491 X_Msg_Data OUT NOCOPY VARCHAR2,
3492 X_Terr_Usgs_Out_Tbl OUT NOCOPY Terr_Usgs_Out_Tbl_Type
3493 )
3494 AS
3495 l_api_name CONSTANT VARCHAR2(30) := 'Update_territory_Usages (Tbl)';
3496 l_rowid ROWID;
3497 l_return_Status VARCHAR2(1);
3498 l_terr_qual_type_usg_id NUMBER;
3499 l_Terr_Usgs_Tbl_Count NUMBER := P_Terr_Usgs_Tbl.Count;
3500 l_Terr_Usgs_Out_Tbl_Count NUMBER;
3501 l_Terr_Usgs_Out_Tbl Terr_Usgs_Out_Tbl_Type;
3502 l_Terr_Usg_Out_Rec Terr_Usgs_Out_Rec_Type;
3503 l_Counter NUMBER;
3504 BEGIN
3505 --dbms_output('Update_Territory_Usages TBL: Entering API');
3506
3507 -- Debug Message
3508 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3509 THEN
3510 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
3511 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3512 FND_MSG_PUB.Add;
3513 END IF;
3514
3515 -- Initialize API return status to success
3516 x_return_status := FND_API.G_RET_STS_SUCCESS;
3517
3518 -- Call insert terr_Qual_Type_Usgs table handler
3519 --
3520 FOR l_Counter IN 1 .. l_Terr_Usgs_Tbl_Count LOOP
3521 --
3522 --dbms_output('Update_Territory_Usages TBL: Before Calling Update_Territory_Usages');
3523 Update_Territory_Usages( P_Api_Version_Number => P_Api_Version_Number,
3524 P_Init_Msg_List => P_Init_Msg_List,
3525 P_Commit => P_Commit,
3526 p_validation_level => p_validation_level,
3527 P_Terr_Usgs_Rec => P_Terr_Usgs_Tbl(l_counter),
3528 X_Return_Status => l_Return_Status,
3529 X_Msg_Count => X_Msg_Count,
3530 X_Msg_Data => X_Msg_Data,
3531 X_Terr_Usgs_Out_Rec => l_Terr_Usg_Out_Rec);
3532 --
3533 --If there is a major error
3534 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3535 --dbms_output('Update_Territory_Usages TBL: l_return_status <> FND_API.G_RET_STS_SUCCESS');
3536 -- Save the terr_usg_id and
3537 X_Terr_Usgs_Out_Tbl(l_counter).TERR_USG_ID := l_Terr_Usg_Out_Rec.terr_usg_id;
3538 -- If save the ERROR status for the record
3539 X_Terr_Usgs_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3540 ELSE
3541 --dbms_output('Update_Territory_Usages TBL: l_return_status = FND_API.G_RET_STS_SUCCESS');
3542 -- Save the terr_usg_id and
3543 X_Terr_Usgs_Out_Tbl(l_counter).TERR_USG_ID := l_Terr_Usg_Out_Rec.terr_usg_id;
3544 -- If successful then save the success status for the record
3545 X_Terr_Usgs_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_SUCCESS;
3546 END IF;
3547 --
3548 END LOOP;
3549
3550 -- Initialize API return status to success
3551 x_return_status := FND_API.G_RET_STS_SUCCESS;
3552 --
3553 --Get number of records in the ouput table
3554 l_Terr_Usgs_Out_Tbl_Count := X_Terr_Usgs_Out_Tbl.Count;
3555 l_Terr_Usgs_Out_Tbl := X_Terr_Usgs_Out_Tbl;
3556
3557 --
3558 -- Get the API overall return status
3559 FOR l_Counter IN 1 .. l_Terr_Usgs_Out_Tbl_Count LOOP
3560 If l_Terr_Usgs_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
3561 l_Terr_Usgs_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_ERROR
3562 THEN
3563 X_return_status := FND_API.G_RET_STS_ERROR;
3564 END IF;
3565 END LOOP;
3566
3567 -- Debug Message
3568 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3569 THEN
3570 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
3571 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3572 FND_MSG_PUB.Add;
3573 END IF;
3574 --dbms_output('Update_Territory_Usages TBL: Exiting API');
3575 --
3576 END Update_Territory_Usages;
3577 --
3578 -- *******************************************************
3579 -- Start of Comments
3580 -- *******************************************************
3581 -- API Name: Update_Terr_QualType_Usage
3582 -- Type :
3583 -- Pre-Req :
3584 -- Parameters:
3585 -- IN
3586 -- Required:
3587 -- Parameter Name Data Type Default
3588 -- P_Terr_QualTypeUsgs_Rec Terr_QualTypeUsgs_Rec_Type G_Miss_Terr_QualTypeUsgs_Rec
3589 --
3590 -- Optional:
3591 -- OUT:
3592 -- Parameter Name Data Type Default
3593 -- X_Return_Status VARCHAR2
3594 -- X_Terr_QualTypeUsgs_Out_Rec Terr_QualTypeUsgs_Out_Rec_Type
3595 --
3596 -- Note:
3597 --
3598 -- End of Comments
3599 --
3600 PROCEDURE Update_Terr_QualType_Usage
3601 ( P_Api_Version_Number IN NUMBER,
3602 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
3603 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
3604 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3605 P_Terr_QualTypeUsgs_Rec IN Terr_QualTypeUsgs_Rec_Type := G_Miss_Terr_QualTypeUsgs_Rec,
3606 X_Return_Status OUT NOCOPY VARCHAR2,
3607 X_Msg_Count OUT NOCOPY NUMBER,
3608 X_Msg_Data OUT NOCOPY VARCHAR2,
3609 X_Terr_QualTypeUsgs_Out_Rec OUT NOCOPY Terr_QualTypeUsgs_Out_Rec_Type
3610 )
3611 AS
3612 Cursor C_GetTerrQualTypeUsgs(l_terr_qual_type_usg_id Number) IS
3613 Select rowid,
3614 TERR_QTYPE_USG_ID,
3615 LAST_UPDATED_BY,
3616 LAST_UPDATE_DATE,
3617 CREATED_BY,
3618 CREATION_DATE,
3619 LAST_UPDATE_LOGIN,
3620 TERR_ID,
3621 QUAL_TYPE_USG_ID
3622 From JTF_TERR_QTYPE_USGS_ALL
3623 Where terr_qtype_usg_id = l_terr_qual_type_usg_id
3624 FOR Update NOWAIT;
3625 --Local variable declaration
3626 l_api_name CONSTANT VARCHAR2(30) := 'Update_Terr_QualType_Usage';
3627 l_rowid VARCHAR2(50);
3628 l_api_version_number CONSTANT NUMBER := 1.0;
3629 l_return_status VARCHAR2(1);
3630 l_ref_Terr_QualTypeUsgs_Rec Terr_QualTypeUsgs_Rec_Type;
3631 BEGIN
3632 --dbms_output('Update_Terr_QualType_Usage REC: Entering API');
3633
3634 -- Debug Message
3635 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3636 THEN
3637 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
3638 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3639 FND_MSG_PUB.Add;
3640 END IF;
3641
3642 -- Initialize API return status to SUCCESS
3643 x_return_status := FND_API.G_RET_STS_SUCCESS;
3644
3645 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
3646 THEN
3647 -- Debug message
3648 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3649 THEN
3650 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
3651 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Terr_Qtype_Usage');
3652 FND_MSG_PUB.Add;
3653 END IF;
3654 -- Invoke validation procedures
3655 Validate_Terr_Qtype_Usage(p_init_msg_list => FND_API.G_FALSE,
3656 x_Return_Status => x_return_status,
3657 x_msg_count => x_msg_count,
3658 x_msg_data => x_msg_data,
3659 p_Terr_Id => P_Terr_QualTypeUsgs_Rec.Terr_Id,
3660 P_Terr_QualTypeUsgs_Rec => P_Terr_QualTypeUsgs_Rec);
3661 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3662 RAISE FND_API.G_EXC_ERROR;
3663 END IF;
3664 --
3665 END IF;
3666
3667 --dbms_output('Update_Terr_QualType_Usage REC: opening cursor C_GetTerrQualTypeUsgs');
3668 OPEN C_GetTerrQualTypeUsgs( P_Terr_QualTypeUsgs_Rec.TERR_QUAL_TYPE_USG_ID);
3669 FETCH C_GetTerrQualTypeUsgs into
3670 l_Rowid,
3671 l_ref_Terr_QualTypeUsgs_Rec.TERR_QUAL_TYPE_USG_ID,
3672 l_ref_Terr_QualTypeUsgs_Rec.LAST_UPDATED_BY,
3673 l_ref_Terr_QualTypeUsgs_Rec.LAST_UPDATE_DATE,
3674 l_ref_Terr_QualTypeUsgs_Rec.CREATED_BY,
3675 l_ref_Terr_QualTypeUsgs_Rec.CREATION_DATE,
3676 l_ref_Terr_QualTypeUsgs_Rec.LAST_UPDATE_LOGIN,
3677 l_ref_Terr_QualTypeUsgs_Rec.TERR_ID,
3678 l_ref_Terr_QualTypeUsgs_Rec.QUAL_TYPE_USG_ID;
3679 If (C_GetTerrQualTypeUsgs%NOTFOUND) Then
3680 --dbms_output('Update_Terr_QualType_Usage REC: NO-RCORDS-FOUND');
3681 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
3682 THEN
3683 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_UPDT_TARGET');
3684 FND_MESSAGE.Set_Token('TABLE_NAME', 'JTF_TERR_QTYPE_USGS');
3685 FND_MESSAGE.Set_Token('PK_ID', TO_CHAR(P_Terr_QualTypeUsgs_Rec.TERR_QUAL_TYPE_USG_ID));
3686 FND_MSG_PUB.Add;
3687 END IF;
3688 raise FND_API.G_EXC_ERROR;
3689 End if;
3690 CLOSE C_GetTerrQualTypeUsgs;
3691
3692 --dbms_output('Update_Terr_QualType_Usage REC: Before Calling JTF_TERR_QTYPE_USGS_PKG.Update_Row');
3693 JTF_TERR_QTYPE_USGS_PKG.Update_Row(x_Rowid => l_rowid,
3694 x_TERR_QTYPE_USG_ID => P_Terr_QualTypeUsgs_Rec.TERR_QUAL_TYPE_USG_ID,
3695 x_LAST_UPDATED_BY => P_Terr_QualTypeUsgs_Rec.LAST_UPDATED_BY,
3696 x_LAST_UPDATE_DATE => P_Terr_QualTypeUsgs_Rec.LAST_UPDATE_DATE,
3697 x_CREATED_BY => P_Terr_QualTypeUsgs_Rec.CREATED_BY,
3698 x_CREATION_DATE => P_Terr_QualTypeUsgs_Rec.CREATION_DATE,
3699 x_LAST_UPDATE_LOGIN => P_Terr_QualTypeUsgs_Rec.LAST_UPDATE_LOGIN,
3700 x_TERR_ID => P_Terr_QualTypeUsgs_Rec.terr_id,
3701 x_QUAL_TYPE_USG_ID => P_Terr_QualTypeUsgs_Rec.QUAL_TYPE_USG_ID,
3702 x_ORG_ID => P_Terr_QualTypeUsgs_Rec.ORG_ID);
3703 --
3704 X_Terr_QualTypeUsgs_Out_Rec.TERR_QUAL_TYPE_USG_ID := P_Terr_QualTypeUsgs_Rec.TERR_QUAL_TYPE_USG_ID;
3705 X_Terr_QualTypeUsgs_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
3706
3707 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3708 THEN
3709 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
3710 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3711 FND_MSG_PUB.Add;
3712 END IF;
3713
3714 --dbms_output('Update_Terr_QualType_Usage REC: Exiting API');
3715 EXCEPTION
3716 WHEN FND_API.G_EXC_ERROR THEN
3717 --dbms_output('Update_Terr_QualType_Usage: FND_API.G_EXC_ERROR');
3718 x_return_status := FND_API.G_RET_STS_ERROR ;
3719 FND_MSG_PUB.Count_And_Get
3720 ( P_count => x_msg_count,
3721 P_data => x_msg_data
3722 );
3723
3724 WHEN OTHERS THEN
3725 --dbms_output('Update_Terr_QualType_Usage REC: OTHERS - ' || SQLERRM);
3726 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3727 X_Terr_QualTypeUsgs_Out_Rec.TERR_QUAL_TYPE_USG_ID := P_Terr_QualTypeUsgs_Rec.TERR_QUAL_TYPE_USG_ID;
3728 X_Terr_QualTypeUsgs_Out_Rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3729 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
3730 THEN
3731 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Error: Inside Update_Terr_QualType_Usage');
3732 END IF;
3733 --
3734 End Update_Terr_QualType_Usage;
3735 --
3736 --
3737 -- *******************************************************
3738 -- Start of Comments
3739 -- *******************************************************
3740 -- API Name: Update_Terr_QualType_Usage
3741 -- Type :
3742 -- Pre-Req :
3743 -- Parameters:
3744 -- IN
3745 -- Required:
3746 -- Parameter Name Data Type Default
3747 -- P_Terr_QualTypeUsgs_Tbl Terr_QualTypeUsgs_Tbl_Type G_Miss_Terr_QualTypeUsgs_Tbl
3748 --
3749 -- Optional:
3750 -- OUT:
3751 -- Parameter Name Data Type Default
3752 -- X_Return_Status VARCHAR2
3753 -- X_Terr_QualTypeUsgs_Out_Tbl Terr_QualTypeUsgs_Out_Tbl_Type
3754 --
3755 -- Note:
3756 --
3757 -- End of Comments
3758 --
3759 PROCEDURE Update_Terr_QualType_Usage
3760 ( P_Api_Version_Number IN NUMBER,
3761 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
3762 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
3763 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3764 P_Terr_QualTypeUsgs_Tbl IN Terr_QualTypeUsgs_Tbl_Type := G_Miss_Terr_QualTypeUsgs_Tbl,
3765 X_Return_Status OUT NOCOPY VARCHAR2,
3766 X_Msg_Count OUT NOCOPY NUMBER,
3767 X_Msg_Data OUT NOCOPY VARCHAR2,
3768 X_Terr_QualTypeUsgs_Out_Tbl OUT NOCOPY Terr_QualTypeUsgs_Out_Tbl_Type
3769 )
3770 AS
3771 l_api_name CONSTANT VARCHAR2(30) := 'Update_Terr_QualType_Usage Tbl';
3772 l_rowid ROWID;
3773 l_return_Status VARCHAR2(1);
3774 l_terr_qual_type_usg_id NUMBER;
3775 l_Terr_QualTypeUsgs_Tbl_Count NUMBER := P_Terr_QualTypeUsgs_Tbl.Count;
3776 l_Terr_QTypUsg_Out_Tbl_Count NUMBER;
3777 l_Terr_QTypUsg_Out_Tbl Terr_QualTypeUsgs_Out_Tbl_Type;
3778 l_Terr_QTypUsg_Out_Rec Terr_QualTypeUsgs_Out_Rec_Type;
3779 l_Counter NUMBER;
3780 BEGIN
3781 --dbms_output('Update_Terr_QualType_Usage TBL: Entering API');
3782
3783 -- Debug Message
3784 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3785 THEN
3786 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
3787 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3788 FND_MSG_PUB.Add;
3789 END IF;
3790
3791 -- Initialize API return status to success
3792 x_return_status := FND_API.G_RET_STS_SUCCESS;
3793 -- Call insert terr_Qual_Type_Usgs table handler
3794 --
3795 FOR l_Counter IN 1 .. l_Terr_QualTypeUsgs_Tbl_Count LOOP
3796 --
3797 --dbms_output('Update_Terr_QualType_Usage TBL: Before Calling Create_TerrType_Qualifier TBL');
3798 Update_Terr_QualType_Usage( P_Api_Version_Number => P_Api_Version_Number,
3799 P_Init_Msg_List => P_Init_Msg_List,
3800 P_Commit => P_Commit,
3801 p_validation_level => p_validation_level,
3802 P_Terr_QualTypeUsgs_Rec => P_Terr_QualTypeUsgs_Tbl(l_counter),
3803 X_Return_Status => l_Return_Status,
3804 X_Msg_Count => X_Msg_Count,
3805 X_Msg_Data => X_Msg_Data,
3806 X_Terr_QualTypeUsgs_Out_Rec => l_Terr_QTypUsg_Out_Rec);
3807 --
3808 --If there is a major error
3809 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3810 --dbms_output('Update_Terr_QualType_Usage TBL: l_return_status <> FND_API.G_RET_STS_SUCCESS');
3811 -- Save the terr_usg_id and
3812 X_Terr_QualTypeUsgs_Out_Tbl(l_counter).TERR_QUAL_TYPE_USG_ID := l_Terr_QTypUsg_Out_Rec.terr_qual_type_usg_id;
3813 -- If save the ERROR status for the record
3814 X_Terr_QualTypeUsgs_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3815 ELSE
3816 --dbms_output('Update_Terr_QualType_Usage TBL: l_return_status = FND_API.G_RET_STS_SUCCESS');
3817 -- Save the terr_usg_id and
3818 X_Terr_QualTypeUsgs_Out_Tbl(l_counter).TERR_QUAL_TYPE_USG_ID := l_Terr_QTypUsg_Out_Rec.terr_qual_type_usg_id;
3819 -- If successful then save the success status for the record
3820 X_Terr_QualTypeUsgs_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_SUCCESS;
3821 END IF;
3822 --
3823 END LOOP;
3824
3825 -- Initialize API return status to success
3826 x_return_status := FND_API.G_RET_STS_SUCCESS;
3827
3828 --Get number of records in the ouput table
3829 l_Terr_QTypUsg_Out_Tbl_Count := X_Terr_QualTypeUsgs_Out_Tbl.Count;
3830 l_Terr_QTypUsg_Out_Tbl := X_Terr_QualTypeUsgs_Out_Tbl;
3831
3832 --Get the API overall return status
3833 FOR l_Counter IN 1 .. l_Terr_QTypUsg_Out_Tbl_Count LOOP
3834 If l_Terr_QTypUsg_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
3835 l_Terr_QTypUsg_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_ERROR
3836 THEN
3837 X_return_status := FND_API.G_RET_STS_ERROR;
3838 END IF;
3839 END LOOP;
3840
3841 -- Debug Message
3842 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3843 THEN
3844 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
3845 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3846 FND_MSG_PUB.Add;
3847 END IF;
3848
3849 --dbms_output('Update_Terr_QualType_Usage TBL: Exiting API');
3850 --
3851 END Update_Terr_QualType_Usage;
3852 --
3853 -- *******************************************************
3854 -- Start of Comments
3855 -- *******************************************************
3856 -- API Name: Update_Terr_Qualifier
3857 -- Type :
3858 -- Pre-Req :
3859 -- Parameters:
3860 -- IN :
3861 -- Required
3862 -- Parameter Name Data Type Default
3863 -- P_Terr_Qual_Rec Terr_Qual_Rec_Type := G_Miss_Terr_Qual_Rec
3864 --
3865 -- OUT NOCOPY :
3866 -- Parameter Name Data Type
3867 -- X_Return_Status VARCHAR2
3868 -- X_Terr_Qual_Out_Rec Terr_Qual_Out_Rec_Type
3869 --
3870 -- Note:
3871 --
3872 -- End of Comments
3873 --
3874 PROCEDURE Update_Terr_Qualifier
3875 ( P_Api_Version_Number IN NUMBER,
3876 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
3877 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
3878 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3879 P_Terr_Qual_Rec IN Terr_Qual_Rec_Type := G_Miss_Terr_Qual_Rec,
3880 X_Return_Status OUT NOCOPY VARCHAR2,
3881 X_Msg_Count OUT NOCOPY NUMBER,
3882 X_Msg_Data OUT NOCOPY VARCHAR2,
3883 X_Terr_Qual_Out_Rec OUT NOCOPY Terr_Qual_Out_Rec_Type
3884 )
3885 AS
3886 Cursor C_GetTerrQualifier(l_terr_qual_id Number) IS
3887 Select Rowid,
3888 TERR_QUAL_ID,
3889 LAST_UPDATE_DATE,
3890 LAST_UPDATED_BY,
3891 CREATION_DATE,
3892 CREATED_BY,
3893 LAST_UPDATE_LOGIN,
3894 TERR_ID,
3895 QUAL_USG_ID,
3896 USE_TO_NAME_FLAG,
3897 GENERATE_FLAG,
3898 OVERLAP_ALLOWED_FLAG
3899 From JTF_TERR_QUAL_ALL
3900 Where terr_qual_id = l_terr_qual_id
3901 FOR Update NOWAIT;
3902 --Local variable declaration
3903 l_api_name CONSTANT VARCHAR2(30) := 'Update_Terr_Qualifier';
3904 l_rowid VARCHAR2(50);
3905 l_api_version_number CONSTANT NUMBER := 1.0;
3906 l_return_status VARCHAR2(1);
3907 l_ref_Terr_Qual_Rec Terr_Qual_Rec_type;
3908 BEGIN
3909 --dbms_output('Update_Terr_Qualifier REC: Entering API');
3910
3911 -- Debug Message
3912 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3913 THEN
3914 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
3915 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
3916 FND_MSG_PUB.Add;
3917 END IF;
3918
3919 -- Initialize API return status to SUCCESS
3920 x_return_status := FND_API.G_RET_STS_SUCCESS;
3921
3922 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
3923 THEN
3924 -- Debug message
3925 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3926 THEN
3927 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
3928 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Qualifier');
3929 FND_MSG_PUB.Add;
3930 END IF;
3931 --
3932 -- Invoke validation procedures
3933 Validate_Qualifier(p_init_msg_list => FND_API.G_FALSE,
3934 x_Return_Status => x_return_status,
3935 x_msg_count => x_msg_count,
3936 x_msg_data => x_msg_data,
3937 p_Terr_Id => P_Terr_Qual_Rec.Terr_Id,
3938 P_Terr_Qual_Rec => P_Terr_Qual_Rec);
3939
3940 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
3941 RAISE FND_API.G_EXC_ERROR;
3942 END IF;
3943 --
3944 END IF;
3945
3946 --dbms_output('Update_Terr_Qualifier REC: opening cursor C_GetTerrQualifier');
3947 OPEN C_GetTerrQualifier( P_Terr_Qual_Rec.TERR_QUAL_ID);
3948
3949 Fetch C_GetTerrQualifier into
3950 l_Rowid,
3951 l_ref_Terr_Qual_Rec.TERR_QUAL_ID,
3952 l_ref_Terr_Qual_Rec.LAST_UPDATE_DATE,
3953 l_ref_Terr_Qual_Rec.LAST_UPDATED_BY,
3954 l_ref_Terr_Qual_Rec.CREATION_DATE,
3955 l_ref_Terr_Qual_Rec.CREATED_BY,
3956 l_ref_Terr_Qual_Rec.LAST_UPDATE_LOGIN,
3957 l_ref_Terr_Qual_Rec.TERR_ID,
3958 l_ref_Terr_Qual_Rec.QUAL_USG_ID,
3959 l_ref_Terr_Qual_Rec.USE_TO_NAME_FLAG,
3960 l_ref_Terr_Qual_Rec.GENERATE_FLAG,
3961 l_ref_Terr_Qual_Rec.OVERLAP_ALLOWED_FLAG;
3962 If ( C_GetTerrQualifier%NOTFOUND) Then
3963 --dbms_output('Update_Terr_Qualifier REC: NO-RCORDS-FOUND');
3964 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
3965 THEN
3966 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_UPDT_TARGET');
3967 FND_MESSAGE.Set_Token('TABLE_NAME', 'JTF_TERR_QUAL');
3968 FND_MESSAGE.Set_Token('PK_ID', TO_CHAR(P_Terr_Qual_Rec.terr_qual_id));
3969 FND_MSG_PUB.Add;
3970 END IF;
3971 raise FND_API.G_EXC_ERROR;
3972 End if;
3973 CLOSE C_GetTerrQualifier;
3974
3975 --dbms_output('Update_Terr_Qualifier REC: Before Calling JTF_TERR_QUAL_PKG.Update_Row');
3976 JTF_TERR_QUAL_PKG.Update_Row(x_Rowid => l_rowid,
3977 x_TERR_QUAL_ID => P_Terr_Qual_Rec.terr_qual_id,
3978 x_LAST_UPDATE_DATE => P_Terr_Qual_Rec.LAST_UPDATE_DATE,
3979 x_LAST_UPDATED_BY => P_Terr_Qual_Rec.LAST_UPDATED_BY,
3980 x_CREATION_DATE => P_Terr_Qual_Rec.creation_date,
3981 x_CREATED_BY => P_Terr_Qual_Rec.created_by,
3982 x_LAST_UPDATE_LOGIN => P_Terr_Qual_Rec.LAST_UPDATE_LOGIN,
3983 x_TERR_ID => P_Terr_Qual_Rec.Terr_Id,
3984 x_QUAL_USG_ID => P_Terr_Qual_Rec.QUAL_USG_ID,
3985 x_USE_TO_NAME_FLAG => P_Terr_Qual_Rec.USE_TO_NAME_FLAG,
3986 x_GENERATE_FLAG => P_Terr_Qual_Rec.GENERATE_FLAG,
3987 x_OVERLAP_ALLOWED_FLAG => P_Terr_Qual_Rec.OVERLAP_ALLOWED_FLAG,
3988 x_QUALIFIER_MODE => P_Terr_Qual_Rec.QUALIFIER_MODE,
3989 x_ORG_ID => P_Terr_Qual_Rec.ORG_ID );
3990
3991 --Call the update table handler
3992 X_Terr_Qual_Out_Rec.TERR_QUAL_ID := P_Terr_Qual_Rec.TERR_QUAL_ID;
3993 X_Terr_Qual_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
3994
3995 -- Debug Message
3996 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3997 THEN
3998 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
3999 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4000 FND_MSG_PUB.Add;
4001 END IF;
4002
4003 --dbms_output('Update_Terr_Qualifier REC: Exiting API');
4004 EXCEPTION
4005 WHEN FND_API.G_EXC_ERROR THEN
4006 --dbms_output('Validate_Territory_Record: FND_API.G_EXC_ERROR');
4007 x_return_status := FND_API.G_RET_STS_ERROR ;
4008 FND_MSG_PUB.Count_And_Get
4009 ( P_count => x_msg_count,
4010 P_data => x_msg_data
4011 );
4012
4013 WHEN OTHERS THEN
4014 --dbms_output('Update_Terr_Qualifier REC: OTHERS - ' || SQLERRM);
4015 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4016 X_Terr_Qual_Out_Rec.TERR_QUAL_ID := P_Terr_Qual_Rec.TERR_QUAL_ID;
4017 X_Terr_Qual_Out_Rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4018 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
4019 THEN
4020 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Update error inside Update_Terr_Qualifier');
4021 END IF;
4022 End Update_Terr_Qualifier;
4023 --
4024 --
4025 -- *******************************************************
4026 -- Start of Comments
4027 -- *******************************************************
4028 -- API Name: Update_Terr_Qualifier
4029 -- Type :
4030 -- Pre-Req :
4031 -- Parameters:
4032 -- IN :
4033 -- Required
4034 -- Parameter Name Data Type Default
4035 -- P_Terr_Qual_Rec Terr_Qual_Rec_Type := G_Miss_Terr_Qual_Rec
4036 --
4037 -- OUT NOCOPY :
4038 -- Parameter Name Data Type
4039 -- X_Return_Status VARCHAR2
4040 -- X_Terr_Qual_Out_Rec Terr_Qual_Out_Rec_Type
4041 --
4042 -- Note:
4043 --
4044 -- End of Comments
4045 --
4046 PROCEDURE Update_Terr_Qualifier
4047 ( P_Api_Version_Number IN NUMBER,
4048 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
4049 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
4050 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4051 P_Terr_Qual_Tbl IN Terr_Qual_Tbl_Type := G_Miss_Terr_Qual_Tbl,
4052 X_Return_Status OUT NOCOPY VARCHAR2,
4053 X_Msg_Count OUT NOCOPY NUMBER,
4054 X_Msg_Data OUT NOCOPY VARCHAR2,
4055 X_Terr_Qual_Out_Tbl OUT NOCOPY Terr_Qual_Out_Tbl_Type
4056 )
4057 AS
4058 l_api_name CONSTANT VARCHAR2(30) := 'Update_Terr_Qualifier (Tbl)';
4059 l_terr_qual_id NUMBER;
4060 l_return_Status VARCHAR2(1);
4061 l_Terr_Qual_Tbl_Count NUMBER := P_Terr_Qual_Tbl.Count;
4062 l_Terr_Qual_Out_Tbl_Count NUMBER;
4063 l_Terr_Qual_Out_Tbl Terr_Qual_Out_Tbl_Type;
4064 l_Terr_Qual_Out_Rec Terr_Qual_Out_Rec_Type;
4065 l_Counter NUMBER;
4066 BEGIN
4067 --dbms_output('Update_Terr_Qualifier TBL: Entering API');
4068
4069 -- Debug Message
4070 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4071 THEN
4072 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
4073 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4074 FND_MSG_PUB.Add;
4075 END IF;
4076
4077 -- Initialize API return status to success
4078 x_return_status := FND_API.G_RET_STS_SUCCESS;
4079 -- Call overloaded Create_Terr_Qualifier procedure
4080 --
4081 FOR l_Counter IN 1 .. l_Terr_Qual_Tbl_Count LOOP
4082 --
4083 --dbms_output('Update_Terr_Qualifier TBL: Before Calling Create_TerrType_Qualifier TBL');
4084 Update_Terr_Qualifier( P_Api_Version_Number => P_Api_Version_Number,
4085 P_Init_Msg_List => P_Init_Msg_List,
4086 P_Commit => P_Commit,
4087 p_validation_level => p_validation_level,
4088 P_Terr_Qual_Rec => P_Terr_Qual_Tbl(l_counter),
4089 X_Return_Status => l_Return_Status,
4090 X_Msg_Count => X_Msg_Count,
4091 X_Msg_Data => X_Msg_Data,
4092 X_Terr_Qual_Out_Rec => l_Terr_Qual_Out_Rec);
4093 --
4094 --If there is a major error
4095 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4096 --dbms_output('Update_Terr_Qualifier TBL: l_return_status <> FND_API.G_RET_STS_SUCCESS');
4097 -- Save the terr_usg_id and
4098 X_Terr_Qual_Out_Tbl(l_counter).TERR_QUAL_ID := l_Terr_Qual_Out_Rec.TERR_QUAL_ID;
4099 -- If save the ERROR status for the record
4100 X_Terr_Qual_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4101 ELSE
4102 --dbms_output('Update_Terr_Qualifier TBL: l_return_status = FND_API.G_RET_STS_SUCCESS');
4103 -- Save the terr_usg_id and
4104 X_Terr_Qual_Out_Tbl(l_counter).TERR_QUAL_ID := l_Terr_Qual_Out_Rec.TERR_QUAL_ID;
4105 -- If successful then save the success status for the record
4106 X_Terr_Qual_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_SUCCESS;
4107 END IF;
4108 --
4109 END LOOP;
4110 --Get the API overall return status
4111 -- Initialize API return status to success
4112 x_return_status := FND_API.G_RET_STS_SUCCESS;
4113 --Get number of records in the ouput table
4114 l_Terr_Qual_Out_Tbl_Count := X_Terr_Qual_Out_Tbl.Count;
4115 l_Terr_Qual_Out_Tbl := X_Terr_Qual_Out_Tbl;
4116 FOR l_Counter IN 1 .. l_Terr_Qual_Out_Tbl_Count LOOP
4117 If l_Terr_Qual_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
4118 l_Terr_Qual_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_ERROR
4119 THEN
4120 X_return_status := FND_API.G_RET_STS_ERROR;
4121 END IF;
4122 END LOOP;
4123
4124 -- Debug Message
4125 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4126 THEN
4127 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
4128 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4129 FND_MSG_PUB.Add;
4130 END IF;
4131 --dbms_output('Update_Terr_Qualifier TBL: Exiting API');
4132 --
4133 END Update_Terr_Qualifier;
4134 --
4135 --
4136 -- *******************************************************
4137 -- Start of Comments
4138 -- *******************************************************
4139 -- API Name: Update_Terr_Value
4140 -- Type :
4141 -- Pre-Req :
4142 -- Parameters:
4143 -- IN :
4144 -- Required
4145 -- Parameter Name Data Type Default
4146 -- P_Terr_Value_Rec Terr_Values_Rec_Type := G_Miss_Terr_Value_Rec
4147 --
4148 -- OUT NOCOPY :
4149 -- Parameter Name Data Type
4150 -- X_Return_Status VARCHAR2
4151 -- X_Terr_Value_Out_Tbl Terr_Values_Out_Tbl_Type
4152 --
4153 -- Note:
4154 --
4155 -- End of Comments
4156 --
4157 PROCEDURE Update_Terr_Value
4158 ( P_Api_Version_Number IN NUMBER,
4159 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
4160 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
4161 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4162 P_Terr_Value_Rec IN Terr_Values_Rec_Type := G_Miss_Terr_Values_Rec,
4163 X_Return_Status OUT NOCOPY VARCHAR2,
4164 X_Msg_Count OUT NOCOPY NUMBER,
4165 X_Msg_Data OUT NOCOPY VARCHAR2,
4166 X_Terr_Value_Out_Rec OUT NOCOPY Terr_Values_Out_Rec_Type
4167 )
4168 AS
4169 Cursor C_GetTerritoryValue(l_TERR_VALUE_ID Number) IS
4170 Select Rowid,
4171 TERR_VALUE_ID,
4172 LAST_UPDATED_BY,
4173 LAST_UPDATE_DATE,
4174 CREATED_BY,
4175 CREATION_DATE,
4176 LAST_UPDATE_LOGIN,
4177 TERR_QUAL_ID,
4178 INCLUDE_FLAG,
4179 COMPARISON_OPERATOR,
4180 LOW_VALUE_CHAR,
4181 HIGH_VALUE_CHAR,
4182 LOW_VALUE_NUMBER,
4183 HIGH_VALUE_NUMBER,
4184 VALUE_SET,
4185 INTEREST_TYPE_ID,
4186 PRIMARY_INTEREST_CODE_ID,
4187 SECONDARY_INTEREST_CODE_ID,
4188 CURRENCY_CODE,
4189 ID_USED_FLAG,
4190 LOW_VALUE_CHAR_ID,
4191 ORG_ID,
4192 CNR_GROUP_ID
4193 From JTF_TERR_VALUES_ALL
4194 Where TERR_VALUE_ID = l_TERR_VALUE_ID
4195 For Update NOWAIT;
4196
4197 --Local variable declaration
4198 l_api_name CONSTANT VARCHAR2(30) := 'Update_Terr_Value';
4199 l_rowid VARCHAR2(50);
4200 l_api_version_number CONSTANT NUMBER := 1.0;
4201 l_return_status VARCHAR2(1);
4202 l_ref_Terr_Value_Rec Terr_Values_Rec_type;
4203 BEGIN
4204 --dbms_output('Update_Terr_Value REC: Entering API');
4205
4206 -- Debug Message
4207 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4208 THEN
4209 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
4210 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4211 FND_MSG_PUB.Add;
4212 END IF;
4213
4214 -- Initialize API return status to SUCCESS
4215 x_return_status := FND_API.G_RET_STS_SUCCESS;
4216
4217 -- Check the validation level
4218 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
4219 THEN
4220 -- Debug message
4221 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4222 THEN
4223 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
4224 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_terr_Value_Rec');
4225 FND_MSG_PUB.Add;
4226 END IF;
4227
4228 -- Invoke validation procedures
4229 Validate_Terr_Value_Rec(p_init_msg_list => FND_API.G_FALSE,
4230 x_return_status => x_return_status,
4231 x_msg_count => x_msg_count,
4232 x_msg_data => x_msg_data,
4233 p_terr_qual_id => P_Terr_Value_Rec.terr_qual_id,
4234 p_Terr_Value_Rec => P_Terr_Value_Rec);
4235
4236 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
4237 RAISE FND_API.G_EXC_ERROR;
4238 END IF;
4239 END IF;
4240
4241 --dbms_output('Update_Terr_Value REC: opening cursor C_GetTerritoryValue');
4242 OPEN C_GetTerritoryValue( P_Terr_Value_Rec.TERR_VALUE_ID);
4243
4244 FETCH C_GetTerritoryValue into
4245 l_Rowid,
4246 l_ref_Terr_Value_Rec.TERR_VALUE_ID,
4247 l_ref_Terr_Value_Rec.LAST_UPDATED_BY,
4248 l_ref_Terr_Value_Rec.LAST_UPDATE_DATE,
4249 l_ref_Terr_Value_Rec.CREATED_BY,
4250 l_ref_Terr_Value_Rec.CREATION_DATE,
4251 l_ref_Terr_Value_Rec.LAST_UPDATE_LOGIN,
4252 l_ref_Terr_Value_Rec.TERR_QUAL_ID,
4253 l_ref_Terr_Value_Rec.INCLUDE_FLAG,
4254 l_ref_Terr_Value_Rec.COMPARISON_OPERATOR,
4255 l_ref_Terr_Value_Rec.LOW_VALUE_CHAR,
4256 l_ref_Terr_Value_Rec.HIGH_VALUE_CHAR,
4257 l_ref_Terr_Value_Rec.LOW_VALUE_NUMBER,
4258 l_ref_Terr_Value_Rec.HIGH_VALUE_NUMBER,
4259 l_ref_Terr_Value_Rec.VALUE_SET,
4260 l_ref_Terr_Value_Rec.INTEREST_TYPE_ID,
4261 l_ref_Terr_Value_Rec.PRIMARY_INTEREST_CODE_ID,
4262 l_ref_Terr_Value_Rec.SECONDARY_INTEREST_CODE_ID,
4263 l_ref_Terr_Value_Rec.CURRENCY_CODE,
4264 l_ref_Terr_Value_Rec.ID_USED_FLAG,
4265 l_ref_Terr_Value_Rec.LOW_VALUE_CHAR_ID,
4266 l_ref_Terr_Value_Rec.ORG_ID,
4267 l_ref_Terr_Value_Rec.CNR_GROUP_ID;
4268 --
4269 If ( C_GetTerritoryValue%NOTFOUND) Then
4270 --
4271 --dbms_output('Update_Terr_Value REC: NO-RCORDS-FOUND');
4272 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
4273 THEN
4274 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_UPDT_TARGET');
4275 FND_MESSAGE.Set_Token('TABLE_NAME', 'JTF_TERR_VALUES');
4276 FND_MESSAGE.Set_Token('PK_ID', TO_CHAR(P_Terr_Value_Rec.TERR_VALUE_ID));
4277 FND_MSG_PUB.Add;
4278 END IF;
4279 raise FND_API.G_EXC_ERROR;
4280
4281 End if;
4282 CLOSE C_GetTerritoryValue;
4283 --
4284 -- Add check for concurrency
4285 --
4286 --dbms_output('Update_Terr_Value REC: Before Calling JTF_TERR_VALUES_PKG.Update_Row');
4287 --call the table handler
4288 JTF_TERR_VALUES_PKG.Update_Row(x_Rowid => l_rowid,
4289 x_TERR_VALUE_ID => P_Terr_Value_Rec.TERR_VALUE_ID,
4290 x_LAST_UPDATED_BY => P_Terr_Value_Rec.LAST_UPDATED_BY,
4291 x_LAST_UPDATE_DATE => P_Terr_Value_Rec.LAST_UPDATE_DATE,
4292 x_CREATED_BY => P_Terr_Value_Rec.created_by,
4293 x_CREATION_DATE => P_Terr_Value_Rec.creation_date,
4294 x_LAST_UPDATE_LOGIN => P_Terr_Value_Rec.LAST_UPDATE_LOGIN,
4295 x_TERR_QUAL_ID => P_Terr_Value_Rec.terr_qual_id,
4296 x_INCLUDE_FLAG => P_Terr_Value_Rec.INCLUDE_FLAG,
4297 x_COMPARISON_OPERATOR => P_Terr_Value_Rec.COMPARISON_OPERATOR,
4298 x_LOW_VALUE_CHAR => P_Terr_Value_Rec.LOW_VALUE_CHAR,
4299 x_HIGH_VALUE_CHAR => P_Terr_Value_Rec.HIGH_VALUE_CHAR,
4300 x_LOW_VALUE_NUMBER => P_Terr_Value_Rec.LOW_VALUE_NUMBER,
4301 x_HIGH_VALUE_NUMBER => P_Terr_Value_Rec.HIGH_VALUE_NUMBER,
4302 x_VALUE_SET => P_Terr_Value_Rec.VALUE_SET,
4303 x_INTEREST_TYPE_ID => P_Terr_Value_Rec.INTEREST_TYPE_ID,
4304 x_PRIMARY_INTEREST_CODE_ID => P_Terr_Value_Rec.PRIMARY_INTEREST_CODE_ID,
4305 x_SECONDARY_INTEREST_CODE_ID => P_Terr_Value_Rec.SECONDARY_INTEREST_CODE_ID,
4306 x_CURRENCY_CODE => P_Terr_Value_Rec.CURRENCY_CODE,
4307 x_ID_USED_FLAG => P_Terr_Value_Rec.ID_USED_FLAG,
4308 x_LOW_VALUE_CHAR_ID => P_Terr_Value_Rec.LOW_VALUE_CHAR_ID,
4309 x_ORG_ID => P_Terr_Value_Rec.ORG_ID,
4310 x_CNR_GROUP_ID => P_Terr_Value_Rec.CNR_GROUP_ID,
4311 x_VALUE1_ID => p_terr_value_rec.VALUE1_ID,
4312 x_VALUE2_ID => p_terr_value_rec.VALUE2_ID,
4313 x_VALUE3_ID => p_terr_value_rec.VALUE3_ID,
4314 x_VALUE4_ID => p_terr_value_rec.VALUE4_ID );
4315
4316 X_Terr_Value_Out_Rec.TERR_VALUE_ID := P_Terr_Value_Rec.TERR_VALUE_ID;
4317 X_Terr_Value_Out_Rec.return_status := FND_API.G_RET_STS_SUCCESS;
4318
4319 -- Debug Message
4320 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4321 THEN
4322 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
4323 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4324 FND_MSG_PUB.Add;
4325 END IF;
4326
4327 --dbms_output('Update_Terr_Value REC: Exiting API');
4328 EXCEPTION
4329 WHEN FND_API.G_EXC_ERROR THEN
4330 --dbms_output('Validate_Territory_Record: FND_API.G_EXC_ERROR');
4331 x_return_status := FND_API.G_RET_STS_ERROR ;
4332 FND_MSG_PUB.Count_And_Get
4333 ( P_count => x_msg_count,
4334 P_data => x_msg_data
4335 );
4336
4337 WHEN OTHERS THEN
4338 --dbms_output('Update_Terr_Value REC: OTHERS - ' || SQLERRM);
4339 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4340 X_Terr_Value_Out_Rec.TERR_VALUE_ID := P_Terr_Value_Rec.TERR_VALUE_ID;
4341 X_Terr_Value_Out_Rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4342 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
4343 THEN
4344 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Update error inside Update_Terr_Value');
4345 END IF;
4346 End Update_Terr_Value;
4347
4348 --
4349 -- ***************************************************
4350 -- start of comments
4351 -- ***************************************************
4352 -- API name : Update_Terr_Value
4353 -- Type : PRIVATE
4354 -- Function : To create Territories qualifier values
4355 --
4356 -- Pre-reqs :
4357 -- Parameters:
4358 -- IN :
4359 -- Required
4360 -- Parameter Name Data Type Default
4361 -- P_Terr_Value_Tbl Terr_Values_Tbl_Type := G_Miss_Terr_Value_Tbl
4362 --
4363 -- OUT NOCOPY :
4364 -- Parameter Name Data Type
4365 -- X_Return_Status VARCHAR2(1)
4366 -- X_Terr_Value_Out_Tbl Terr_Values_Out_Tbl_Type
4367 --
4368 -- Notes: This is a an overloaded procedure. This one
4369 -- will call the overloade procedure for records
4370 -- creation
4371 --
4372 --
4373 -- End of Comments
4374 --
4375 PROCEDURE Update_Terr_Value
4376 ( P_Api_Version_Number IN NUMBER,
4377 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
4378 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
4379 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4380 P_Terr_Value_Tbl IN Terr_Values_Tbl_Type := G_Miss_Terr_Values_Tbl,
4381 X_Return_Status OUT NOCOPY VARCHAR2,
4382 X_Msg_Count OUT NOCOPY NUMBER,
4383 X_Msg_Data OUT NOCOPY VARCHAR2,
4384 X_Terr_Value_Out_Tbl OUT NOCOPY Terr_Values_Out_Tbl_Type
4385 )
4386 AS
4387 l_api_name CONSTANT VARCHAR2(30) := 'Update_Terr_Value (Tbl)';
4388 l_return_Status VARCHAR2(1);
4389 l_Terr_Value_Tbl_Count NUMBER := P_Terr_Value_Tbl.Count;
4390 l_Terr_Value_Out_Tbl_Count NUMBER;
4391 l_Terr_Value_Out_Tbl Terr_Values_Out_Tbl_Type;
4392 l_Terr_Value_Out_Rec Terr_Values_Out_Rec_Type;
4393 l_Terr_Qual_Tbl Terr_Qual_Tbl_Type;
4394 l_Counter NUMBER;
4395 BEGIN
4396 --dbms_output('Update_Terr_Value TBL: Entering API');
4397
4398 -- Debug Message
4399 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4400 THEN
4401 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
4402 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4403 FND_MSG_PUB.Add;
4404 END IF;
4405
4406 -- Initialize API return status to success
4407 x_return_status := FND_API.G_RET_STS_SUCCESS;
4408 -- -- Call overloaded Create_Terr_Qualifier procedure
4409 --
4410 FOR l_Counter IN 1 .. l_Terr_Value_Tbl_Count LOOP
4411 --
4412 --dbms_output('Update_Terr_Value TBL: Before Calling Update_Terr_Value');
4413 Update_Terr_Value( P_Api_Version_Number => P_Api_Version_Number,
4414 P_Init_Msg_List => P_Init_Msg_List,
4415 P_Commit => P_Commit,
4416 p_validation_level => p_validation_level,
4417 P_Terr_Value_Rec => P_Terr_Value_Tbl(l_counter),
4418 X_Return_Status => l_Return_Status,
4419 X_Msg_Count => X_Msg_Count,
4420 X_Msg_Data => X_Msg_Data,
4421 X_Terr_Value_Out_Rec => l_Terr_Value_Out_Rec);
4422 --
4423 --If there is a major error
4424 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4425 --dbms_output('Update_Terr_Value TBL: l_return_status <> FND_API.G_RET_STS_SUCCESS');
4426 -- Save the terr_usg_id and
4427 X_Terr_Value_Out_Tbl(l_counter).TERR_VALUE_ID := l_Terr_Value_Out_Rec.TERR_VALUE_ID;
4428 -- If save the ERROR status for the record
4429 X_Terr_Value_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4430 ELSE
4431 --dbms_output('Update_Terr_Value TBL: l_return_status = FND_API.G_RET_STS_SUCCESS');
4432 -- Save the terr_usg_id and
4433 X_Terr_Value_Out_Tbl(l_counter).TERR_VALUE_ID := l_Terr_Value_Out_Rec.TERR_VALUE_ID;
4434 -- If successful then save the success status for the record
4435 X_Terr_Value_Out_Tbl(l_counter).return_status := FND_API.G_RET_STS_SUCCESS;
4436 END IF;
4437 --
4438 END LOOP;
4439
4440 --Get the API overall return status
4441 -- Initialize API return status to success
4442 x_return_status := FND_API.G_RET_STS_SUCCESS;
4443
4444 --Get number of records in the ouput table
4445 l_Terr_Value_Out_Tbl_Count := X_Terr_Value_Out_Tbl.Count;
4446 l_Terr_Value_Out_Tbl := X_Terr_Value_Out_Tbl;
4447 FOR l_Counter IN 1 .. l_Terr_Value_Out_Tbl_Count LOOP
4448 If l_Terr_Value_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
4449 l_Terr_Value_Out_Tbl(l_Counter).return_status = FND_API.G_RET_STS_ERROR
4450 THEN
4451 X_return_status := FND_API.G_RET_STS_ERROR;
4452 END IF;
4453 END LOOP;
4454
4455 -- Debug Message
4456 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4457 THEN
4458 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
4459 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4460 FND_MSG_PUB.Add;
4461 END IF;
4462
4463
4464 --dbms_output('Update_Terr_Value TBL: Exiting API');
4465 --
4466 End Update_Terr_Value;
4467 -------------------------------------------------------------------------------------------------------
4468 -- DELETE PROCEDURE SECTION STARTS HERE
4469 -------------------------------------------------------------------------------------------------------
4470
4471 -- *******************************************************
4472 -- Start of Comments
4473 -- *******************************************************
4474 -- API Name: Delete_territory_Record
4475 -- Type :
4476 -- Pre-Req :
4477 -- Parameters:
4478 -- IN
4479 -- Required:
4480 -- Parameter Name Data Type Default
4481 -- P_Terr_Id NUMBER
4482 --
4483 -- Optional:
4484 -- OUT:
4485 -- Parameter Name Data Type Default
4486 -- X_Return_Status VARCHAR2
4487 --
4488 -- Note:
4489 --
4490 -- End of Comments
4491 --
4492 PROCEDURE Delete_territory_Record
4493 (P_Api_Version_Number IN NUMBER,
4494 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
4495 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
4496 P_Terr_Id IN NUMBER,
4497 X_Return_Status OUT NOCOPY VARCHAR2,
4498 X_Msg_Count OUT NOCOPY VARCHAR2,
4499 X_Msg_Data OUT NOCOPY VARCHAR2)
4500 AS
4501 l_row_count NUMBER;
4502 l_api_name CONSTANT VARCHAR2(30) := 'Delete_territory_Record';
4503 l_api_version_number CONSTANT NUMBER := 1.0;
4504 l_return_status VARCHAR2(1);
4505 BEGIN
4506 --dbms_output('Delete_territory_Record: Entering API');
4507
4508 -- Standard start of PAI savepoint
4509 SAVEPOINT Delete_territory_Record_Pvt;
4510
4511 -- Standard call to check for call compatibility.
4512 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4513 p_api_version_number,
4514 l_api_name,
4515 G_PKG_NAME)
4516 THEN
4517 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4518 END IF;
4519 -- Initialize message list if p_init_msg_list is set to TRUE.
4520 IF FND_API.to_Boolean( p_init_msg_list )
4521 THEN
4522 FND_MSG_PUB.initialize;
4523 END IF;
4524
4525 -- Debug Message
4526 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4527 THEN
4528 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
4529 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4530 FND_MSG_PUB.Add;
4531 END IF;
4532
4533 --Initialize the return status to success
4534 x_return_status := FND_API.G_RET_STS_SUCCESS;
4535 --
4536 --dbms_output('Delete_territory_Record: Before Calling Create_TerrType_Qualifier TBL');
4537 --
4538 JTF_TERR_PKG.Delete_Row(x_terr_Id => P_Terr_Id);
4539 --
4540 --Prepare message name
4541 FND_MESSAGE.SET_NAME('JTF','JTF_TERR_RECORD_DELETED');
4542
4543 IF SQL%FOUND THEN
4544 --dbms_output('Delete_territory_Record: # Records deleted -' || to_char(SQL%ROWCOUNT));
4545 x_return_status := FND_API.G_RET_STS_SUCCESS;
4546 l_row_count := SQL%ROWCOUNT;
4547 END IF;
4548 --prepare the message
4549 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
4550 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR');
4551 FND_MSG_PUB.ADD;
4552
4553 -- Debug Message
4554 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4555 THEN
4556 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
4557 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4558 FND_MSG_PUB.Add;
4559 END IF;
4560
4561
4562 FND_MSG_PUB.Count_And_Get
4563 ( p_count => x_msg_count,
4564 p_data => x_msg_data
4565 );
4566
4567 -- Standard check for p_commit
4568 IF FND_API.to_Boolean( p_commit )
4569 THEN
4570 COMMIT WORK;
4571 END IF;
4572 --dbms_output('Delete_territory_Record: Exiting API');
4573 --
4574 EXCEPTION
4575 WHEN NO_DATA_FOUND THEN
4576 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4577 l_row_count := 0;
4578 --Prepare message token
4579 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
4580 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR');
4581 FND_MSG_PUB.ADD;
4582 --
4583 FND_MSG_PUB.Count_And_Get
4584 ( p_count => x_msg_count,
4585 p_data => x_msg_data
4586 );
4587
4588 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4589 --dbms_output('Delete_territory_Record: FND_API.G_EXC_UNEXPECTED_ERROR');
4590 ROLLBACK TO Delete_territory_Record_Pvt;
4591 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4592 FND_MSG_PUB.Count_And_Get
4593 ( p_count => x_msg_count,
4594 p_data => x_msg_data
4595 );
4596
4597 WHEN OTHERS THEN
4598 --dbms_output('Delete_territory_Record: OTHERS - ' || SQLERRM);
4599 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4600 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
4601 THEN
4602 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Delete error inside Delete_territory_Record');
4603 END IF;
4604 --
4605 END Delete_territory_Record;
4606 --
4607 -- *******************************************************
4608 -- Start of Comments
4609 -- *******************************************************
4610 -- API Name: Delete_Territory_Usages
4611 -- Type :
4612 -- Pre-Req :
4613 -- Parameters:
4614 -- IN
4615 -- Required:
4616 -- Parameter Name Data Type Default
4617 -- P_Terr_Id NUMBER
4618 --
4619 -- Optional:
4620 -- OUT:
4621 -- Parameter Name Data Type Default
4622 -- X_Return_Status VARCHAR2
4623 --
4624 -- Note:
4625 --
4626 -- End of Comments
4627 --
4628 PROCEDURE Delete_Territory_Usages
4629 (P_Api_Version_Number IN NUMBER,
4630 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
4631 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
4632 P_Terr_usg_Id IN NUMBER,
4633 X_Return_Status OUT NOCOPY VARCHAR2,
4634 X_Msg_Count OUT NOCOPY VARCHAR2,
4635 X_Msg_Data OUT NOCOPY VARCHAR2)
4636 AS
4637 l_row_count NUMBER;
4638 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Territory_Usages';
4639 l_api_version_number CONSTANT NUMBER := 1.0;
4640 l_return_status VARCHAR2(1);
4641 BEGIN
4642 --dbms_output('Delete_Territory_Usages: Entering API');
4643
4644 -- Standard start of PAI savepoint
4645 SAVEPOINT Delete_Territory_Usages_Pvt;
4646
4647 -- Standard call to check for call compatibility.
4648 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4649 p_api_version_number,
4650 l_api_name,
4651 G_PKG_NAME)
4652 THEN
4653 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4654 END IF;
4655 -- Initialize message list if p_init_msg_list is set to TRUE.
4656 IF FND_API.to_Boolean( p_init_msg_list )
4657 THEN
4658 FND_MSG_PUB.initialize;
4659 END IF;
4660
4661 -- Debug Message
4662 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4663 THEN
4664 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
4665 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4666 FND_MSG_PUB.Add;
4667 END IF;
4668
4669 --Initialize the return status to success
4670 x_return_status := FND_API.G_RET_STS_SUCCESS;
4671 --
4672 --dbms_output('Delete_Territory_Usages: Before Calling Create_TerrType_Qualifier TBL');
4673 --
4674 JTF_TERR_USGS_PKG.Delete_Row(x_TERR_USG_ID => P_Terr_usg_Id);
4675 --
4676 --Prepare message name
4677 FND_MESSAGE.SET_NAME('JTF','JTF_TERR_RECORD_DELETED');
4678 IF SQL%FOUND THEN
4679 --dbms_output('Delete_Territory_Usages: # Records deleted -' || to_char(SQL%ROWCOUNT));
4680 x_return_status := FND_API.G_RET_STS_SUCCESS;
4681 l_row_count := SQL%ROWCOUNT;
4682 END IF;
4683 --Prepare message token
4684 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
4685 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR_USGS');
4686 FND_MSG_PUB.ADD;
4687
4688 -- Debug Message
4689 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4690 THEN
4691 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
4692 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4693 FND_MSG_PUB.Add;
4694 END IF;
4695
4696
4697 FND_MSG_PUB.Count_And_Get
4698 ( p_count => x_msg_count,
4699 p_data => x_msg_data
4700 );
4701
4702 -- Standard check for p_commit
4703 IF FND_API.to_Boolean( p_commit )
4704 THEN
4705 COMMIT WORK;
4706 END IF;
4707 --dbms_output('Delete_Territory_Usages: Exiting API');
4708 --
4709 EXCEPTION
4710 WHEN NO_DATA_FOUND THEN
4711 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4712 l_row_count := 0;
4713 --Prepare message token
4714 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
4715 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR_USGS');
4716 FND_MSG_PUB.ADD;
4717 --
4718 FND_MSG_PUB.Count_And_Get
4719 ( p_count => x_msg_count,
4720 p_data => x_msg_data
4721 );
4722
4723 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4724 --dbms_output('Delete_Territory_Usages: FND_API.G_EXC_UNEXPECTED_ERROR');
4725 ROLLBACK TO Delete_Territory_Usages_Pvt;
4726 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4727 FND_MSG_PUB.Count_And_Get
4728 ( p_count => x_msg_count,
4729 p_data => x_msg_data
4730 );
4731
4732 WHEN OTHERS THEN
4733 --dbms_output('Delete_Territory_Usages: OTHERS - ' || SQLERRM);
4734 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4735 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
4736 THEN
4737 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Delete error inside Delete_Territory_Usages');
4738 END IF;
4739 END Delete_Territory_Usages;
4740 --
4741 -- *******************************************************
4742 -- Start of Comments
4743 -- *******************************************************
4744 -- API Name: Delete_Terr_QualType_Usage
4745 -- Type :
4746 -- Pre-Req :
4747 -- Parameters
4748 -- IN
4749 -- Required:
4750 -- Parameter Name Data Type Default
4751 -- P_Terr_Qual_Type_Usg_Id NUMBER
4752 --
4753 -- Optional:
4754 -- OUT:
4755 -- Parameter Name Data Type Default
4756 -- X_Return_Status VARCHAR2
4757 --
4758 -- Note:
4759 --
4760 -- End of Comments
4761 --
4762 PROCEDURE Delete_Terr_QualType_Usage
4763 (P_Api_Version_Number IN NUMBER,
4764 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
4765 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
4766 P_Terr_Qual_Type_Usg_Id IN NUMBER,
4767 X_Return_Status OUT NOCOPY VARCHAR2,
4768 X_Msg_Count OUT NOCOPY VARCHAR2,
4769 X_Msg_Data OUT NOCOPY VARCHAR2)
4770 AS
4771 l_row_count NUMBER;
4772 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Terr_QualType_Usage';
4773 l_api_version_number CONSTANT NUMBER := 1.0;
4774 l_return_status VARCHAR2(1);
4775
4776 BEGIN
4777 --dbms_output('Delete_Terr_QualType_Usage: Entering API');
4778
4779 -- Standard start of PAI savepoint
4780 SAVEPOINT Delete_Terr_QualType_Usage_Pvt;
4781
4782 -- Standard call to check for call compatibility.
4783 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4784 p_api_version_number,
4785 l_api_name,
4786 G_PKG_NAME)
4787 THEN
4788 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4789 END IF;
4790 -- Initialize message list if p_init_msg_list is set to TRUE.
4791 IF FND_API.to_Boolean( p_init_msg_list )
4792 THEN
4793 FND_MSG_PUB.initialize;
4794 END IF;
4795
4796 -- Debug Message
4797 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4798 THEN
4799 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
4800 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4801 FND_MSG_PUB.Add;
4802 END IF;
4803
4804 --Initialize the return status to success
4805 x_return_status := FND_API.G_RET_STS_SUCCESS;
4806
4807 --dbms_output('Delete_Terr_QualType_Usage: Before Calling JTF_TERR_QTYPE_USGS_PKG.Delete_Row');
4808 --
4809 JTF_TERR_QTYPE_USGS_PKG.Delete_Row(x_terr_qtype_usg_id => P_Terr_Qual_Type_Usg_Id);
4810 --
4811 --
4812 --Prepare message name
4813 FND_MESSAGE.SET_NAME('JTF','JTF_TERR_RECORD_DELETED');
4814
4815 IF SQL%FOUND THEN
4816 --dbms_output('Delete_Terr_QualType_Usage: # Records deleted -' || to_char(SQL%ROWCOUNT));
4817 x_return_status := FND_API.G_RET_STS_SUCCESS;
4818 l_row_count := SQL%ROWCOUNT;
4819 END IF;
4820
4821 --Prepare message token
4822 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
4823 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR_QTYPE_USGS');
4824 FND_MSG_PUB.ADD;
4825
4826 -- Debug Message
4827 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4828 THEN
4829 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
4830 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4831 FND_MSG_PUB.Add;
4832 END IF;
4833
4834
4835 FND_MSG_PUB.Count_And_Get
4836 ( p_count => x_msg_count,
4837 p_data => x_msg_data
4838 );
4839
4840 -- Standard check for p_commit
4841 IF FND_API.to_Boolean( p_commit )
4842 THEN
4843 COMMIT WORK;
4844 END IF;
4845 --dbms_output('Delete_Terr_QualType_Usage: Exiting API');
4846 --
4847 EXCEPTION
4848 WHEN NO_DATA_FOUND THEN
4849 --dbms_output('Delete_Terr_QualType_Usage: NO_DATA_FOUND');
4850 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4851 l_row_count := 0;
4852
4853 --Prepare message token
4854 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
4855 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR_QTYPE_USGS');
4856 FND_MSG_PUB.ADD;
4857 --
4858 FND_MSG_PUB.Count_And_Get
4859 ( p_count => x_msg_count,
4860 p_data => x_msg_data
4861 );
4862
4863 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4864 --dbms_output('Delete_Terr_QualType_Usage: FND_API.G_EXC_UNEXPECTED_ERROR');
4865 ROLLBACK TO Delete_Terr_QualType_Usage_Pvt;
4866 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4867 FND_MSG_PUB.Count_And_Get
4868 ( p_count => x_msg_count,
4869 p_data => x_msg_data
4870 );
4871
4872 WHEN OTHERS THEN
4873 --dbms_output('Delete_Terr_QualType_Usage: OTHERS - ' || SQLERRM);
4874 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4875
4876 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
4877 THEN
4878 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Delete error inside Delete_Terr_QualType_Usage');
4879 END IF;
4880 END Delete_Terr_QualType_Usage;
4881 --
4882 -- *******************************************************
4883 -- Start of Comments
4884 -- *******************************************************
4885 -- API Name: Delete_Terr_Qualifier
4886 -- Type :
4887 -- Pre-Req :
4888 -- Parameters:
4889 -- IN
4890 -- Required:
4891 -- Parameter Name Data Type Default
4892 -- P_Terr_Qual_Id NUMBER
4893 --
4894 -- Optional:
4895 -- OUT:
4896 -- Parameter Name Data Type Default
4897 -- X_Return_Status VARCHAR2
4898 --
4899 -- Note:
4900 --
4901 -- End of Comments
4902 --
4903 PROCEDURE Delete_Terr_Qualifier
4904 (P_Api_Version_Number IN NUMBER,
4905 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
4906 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
4907 P_Terr_Qual_Id IN NUMBER,
4908 X_Return_Status OUT NOCOPY VARCHAR2,
4909 X_Msg_Count OUT NOCOPY VARCHAR2,
4910 X_Msg_Data OUT NOCOPY VARCHAR2)
4911 AS
4912 l_row_count NUMBER;
4913 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Terr_Qualifier';
4914 l_api_version_number CONSTANT NUMBER := 1.0;
4915 l_return_status VARCHAR2(1);
4916
4917
4918 /* for BULK deletes */
4919 TYPE NumTab IS TABLE OF NUMBER;
4920 deletedIds NUMTAB;
4921
4922 lp_terr_id NUMBER;
4923
4924 BEGIN
4925 --dbms_output('Delete_Terr_Qualifier: Entering API');
4926
4927 -- Standard start of PAI savepoint
4928 SAVEPOINT Delete_Terr_Qualifier_Pvt;
4929
4930 -- Standard call to check for call compatibility.
4931 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
4932 p_api_version_number,
4933 l_api_name,
4934 G_PKG_NAME)
4935 THEN
4936 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4937 END IF;
4938 -- Initialize message list if p_init_msg_list is set to TRUE.
4939 IF FND_API.to_Boolean( p_init_msg_list )
4940 THEN
4941 FND_MSG_PUB.initialize;
4942 END IF;
4943
4944 -- Debug Message
4945 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4946 THEN
4947 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
4948 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
4949 FND_MSG_PUB.Add;
4950 END IF;
4951
4952 --Initialize the return status to success
4953 x_return_status := FND_API.G_RET_STS_SUCCESS;
4954 --
4955 --dbms_output('Delete_Terr_Qualifier: Before Calling Create_TerrType_Qualifier TBL');
4956 --
4957
4958 /* anonymous block to get territory id */
4959 BEGIN
4960 SELECT terr_id
4961 INTO lp_terr_id
4962 FROM jtf_terr_qual_ALL jtq
4963 WHERE jtq.terr_qual_id = p_terr_qual_id;
4964 EXCEPTION
4965 WHEN NO_DATA_FOUND THEN
4966 NULL;
4967 WHEN OTHERS THEN
4968 NULL;
4969 END;
4970
4971 /* Do a bulk delete of Territory Qualifier VALUES */
4972 DELETE jtf_terr_values_ALL
4973 WHERE terr_qual_id = p_terr_qual_id
4974 RETURNING terr_value_id
4975 BULK COLLECT INTO deletedIds;
4976
4977 JTF_TERR_QUAL_PKG.Delete_Row(x_terr_qual_id => P_Terr_Qual_Id );
4978 --
4979 --Prepare message name
4980 FND_MESSAGE.SET_NAME('JTF','JTF_TERR_RECORD_DELETED');
4981 IF SQL%FOUND THEN
4982 --dbms_output('Delete_Terr_Qualifier: # Records deleted -' || to_char(SQL%ROWCOUNT));
4983 x_return_status := FND_API.G_RET_STS_SUCCESS;
4984 l_row_count := SQL%ROWCOUNT;
4985 END IF;
4986
4987 /* update Sales territory's number of Account qualifiers
4988 */
4989 update_terr_num_qual(lp_terr_id, -1002);
4990
4991 --Prepare message token
4992 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
4993 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR_QUALIFIERS');
4994 FND_MSG_PUB.ADD();
4995
4996 -- Debug Message
4997 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4998 THEN
4999 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
5000 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
5001 FND_MSG_PUB.Add;
5002 END IF;
5003
5004
5005 FND_MSG_PUB.Count_And_Get
5006 ( p_count => x_msg_count,
5007 p_data => x_msg_data
5008 );
5009
5010 -- Standard check for p_commit
5011 IF FND_API.to_Boolean( p_commit )
5012 THEN
5013 COMMIT WORK;
5014 END IF;
5015 --
5016 --dbms_output('Delete_Terr_Qualifier: Exiting API');
5017 --
5018 EXCEPTION
5019 WHEN NO_DATA_FOUND THEN
5020 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5021 l_row_count := 0;
5022 --Prepare message token
5023 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
5024 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR_QUALIFIERS');
5025 --Add message to API message list
5026 FND_MSG_PUB.ADD();
5027 --
5028 FND_MSG_PUB.Count_And_Get
5029 ( p_count => x_msg_count,
5030 p_data => x_msg_data
5031 );
5032
5033 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5034 --dbms_output('Delete_Terr_Qualifier: FND_API.G_EXC_UNEXPECTED_ERROR');
5035 ROLLBACK TO Delete_Terr_Qualifier_Pvt;
5036 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5037 FND_MSG_PUB.Count_And_Get
5038 ( p_count => x_msg_count,
5039 p_data => x_msg_data
5040 );
5041
5042 WHEN OTHERS THEN
5043 --dbms_output('Delete_Terr_Qualifier: OTHERS - ' || SQLERRM);
5044 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5045 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
5046 THEN
5047 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Delete error inside Delete_Terr_Qualifier');
5048 END IF;
5049 END Delete_Terr_Qualifier;
5050 --
5051 -- *******************************************************
5052 -- Start of Comments
5053 -- *******************************************************
5054 -- API Name: Delete_Terr_Value
5055 -- Type :
5056 -- Pre-Req :
5057 -- Parameters:
5058 -- IN
5059 -- Required:
5060 -- Parameter Name Data Type Default
5061 -- P_Terr_Value_Id NUMBER
5062 --
5063 -- Optional:
5064 -- OUT:
5065 -- Parameter Name Data Type Default
5066 -- X_Return_Status VARCHAR2
5067 --
5068 -- Note:
5069 --
5070 -- End of Comments
5071 --
5072 PROCEDURE Delete_Terr_Value
5073 (P_Api_Version_Number IN NUMBER,
5074 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
5075 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
5076 P_Terr_Value_Id IN NUMBER,
5077 X_Return_Status OUT NOCOPY VARCHAR2,
5078 X_Msg_Count OUT NOCOPY VARCHAR2,
5079 X_Msg_Data OUT NOCOPY VARCHAR2)
5080 AS
5081 l_row_count NUMBER;
5082 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Terr_Value';
5083 l_api_version_number CONSTANT NUMBER := 1.0;
5084 l_return_status VARCHAR2(1);
5085 BEGIN
5086 --dbms_output('Delete_Terr_Value: Entering API');
5087
5088 -- Standard start of PAI savepoint
5089 SAVEPOINT Delete_Terr_Value_Pvt;
5090
5091 -- Standard call to check for call compatibility.
5092 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
5093 p_api_version_number,
5094 l_api_name,
5095 G_PKG_NAME)
5096 THEN
5097 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5098 END IF;
5099 -- Initialize message list if p_init_msg_list is set to TRUE.
5100 IF FND_API.to_Boolean( p_init_msg_list )
5101 THEN
5102 FND_MSG_PUB.initialize;
5103 END IF;
5104
5105 -- Debug Message
5106 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
5107 THEN
5108 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
5109 FND_MESSAGE.Set_Name('PROC_NAME', l_api_name);
5110 FND_MSG_PUB.Add;
5111 END IF;
5112
5113 --Initialize the return status to success
5114 x_return_status := FND_API.G_RET_STS_SUCCESS;
5115 --
5116 --dbms_output('Delete_Terr_Value: Before Calling JTF_TERR_VALUES_PKG.Delete_Row');
5117
5118 JTF_TERR_VALUES_PKG.Delete_Row(X_TERR_VALUE_ID => P_Terr_Value_Id);
5119 --
5120 --Prepare message name
5121 FND_MESSAGE.SET_NAME('JTF','JTF_TERR_RECORD_DELETED');
5122 IF SQL%FOUND THEN
5123 --dbms_output('Delete_Terr_Value: # Records deleted -' || to_char(SQL%ROWCOUNT));
5124 x_return_status := FND_API.G_RET_STS_SUCCESS;
5125 l_row_count := SQL%ROWCOUNT;
5126 END IF;
5127 --Prepare message token
5128 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
5129 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR_VALUES');
5130 FND_MSG_PUB.ADD();
5131
5132 -- Debug Message
5133 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
5134 THEN
5135 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
5136 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name );
5137 FND_MSG_PUB.Add;
5138 END IF;
5139
5140
5141 FND_MSG_PUB.Count_And_Get
5142 ( p_count => x_msg_count,
5143 p_data => x_msg_data
5144 );
5145
5146 -- Standard check for p_commit
5147 IF FND_API.to_Boolean( p_commit )
5148 THEN
5149 COMMIT WORK;
5150 END IF;
5151 --
5152 --dbms_output('Delete_Terr_Value: Exiting API');
5153 --
5154 EXCEPTION
5155 WHEN NO_DATA_FOUND THEN
5156 --dbms_output('Delete_Terr_Value: NO-DATA-FOUND');
5157 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5158 l_row_count := 0;
5159 --Prepare message token
5160 FND_MESSAGE.SET_TOKEN('NO_OF_REC', TO_CHAR(l_row_count));
5161 FND_MESSAGE.SET_TOKEN('TABLE_NAME', 'JTF_TERR_VALUES');
5162 --Add message to API message list
5163 FND_MSG_PUB.ADD();
5164 --
5165 FND_MSG_PUB.Count_And_Get
5166 ( p_count => x_msg_count,
5167 p_data => x_msg_data
5168 );
5169
5170 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5171 --dbms_output('Delete_Terr_Value: FND_API.G_EXC_UNEXPECTED_ERROR');
5172 ROLLBACK TO Delete_Terr_Value_Pvt;
5173 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5174 FND_MSG_PUB.Count_And_Get
5175 ( p_count => x_msg_count,
5176 p_data => x_msg_data
5177 );
5178
5179 WHEN OTHERS THEN
5180 --dbms_output('Delete_Terr_Value: OTHERS - ' || SQLERRM);
5181 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5182 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
5183 THEN
5184 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, 'Delete error inside Delete_Terr_Value');
5185 END IF;
5186 End Delete_Terr_Value;
5187 --
5188 -- This procedure will check whether the qualifiers passed are
5189 -- valid.
5190 --
5191 PROCEDURE Validate_Qualifier
5192 (p_Terr_Id IN NUMBER,
5193 P_Terr_Qual_Rec IN Terr_Qual_Rec_Type := G_Miss_Terr_Qual_Rec,
5194 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5195 x_Return_Status OUT NOCOPY VARCHAR2,
5196 x_msg_count OUT NOCOPY NUMBER,
5197 x_msg_data OUT NOCOPY VARCHAR2 )
5198 AS
5199 l_Temp VARCHAR2(01);
5200 BEGIN
5201 --dbms_output('Validate_Qualifier: Entering API');
5202
5203 -- Initialize the status to success
5204 x_return_status := FND_API.G_RET_STS_SUCCESS;
5205 --
5206 --dbms_output('Validate P_Terr_Qual_Rec.Qual_Usg_Id - ' || to_char(P_Terr_Qual_Rec.Qual_Usg_Id));
5207 --
5208 -- Check whether the qualfier is enabled and
5209 BEGIN
5210 IF p_Terr_Id is not NULL Then
5211 SELECT 'x'
5212 into l_Temp
5213 from jtf_qual_usgs_ALL jqu,
5214 jtf_qual_type_usgs_ALL jqtu,
5215 jtf_terr_qtype_usgs_ALL jtqu
5216 where jtqu.terr_id = p_Terr_Id and
5217 jqtu.qual_type_usg_id = jtqu.qual_type_usg_id and
5218 jqu.qual_usg_id = P_Terr_Qual_Rec.Qual_Usg_Id and
5219 jqu.enabled_flag = 'Y' and
5220 jqtu.qual_type_id IN ( SELECT related_id
5221 FROM jtf_qual_type_denorm_v
5222 WHERE qual_type_id = jqtu.qual_type_id )
5223 AND ROWNUM < 2;
5224 End If;
5225 EXCEPTION
5226 WHEN NO_DATA_FOUND THEN
5227 --dbms_output('Validate_Qualifier: NO_DATA_FOUND Exception');
5228 x_return_status := FND_API.G_RET_STS_ERROR ;
5229 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_DISABLED_TERR_QUAL');
5230 FND_MSG_PUB.ADD;
5231 FND_MSG_PUB.Count_And_Get
5232 ( P_count => x_msg_count,
5233 P_data => x_msg_data
5234 );
5235 END;
5236
5237 /* org_id is optional
5238 -- Check for ORG_ID - obsolete: org_id is optional
5239 IF (P_Terr_Qual_Rec.ORG_ID is NULL OR
5240 P_Terr_Qual_Rec.ORG_ID = FND_API.G_MISS_NUM ) THEN
5241 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5242 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5243 FND_MESSAGE.Set_Token('COL_NAME', 'ORG_ID' );
5244 FND_MSG_PUB.ADD;
5245 END IF;
5246 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5247 End If;
5248 */
5249
5250 --Check created by
5251 IF ( P_Terr_Qual_Rec.CREATED_BY is NULL OR
5252 P_Terr_Qual_Rec.CREATED_BY = FND_API.G_MISS_NUM ) THEN
5253 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5254 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5255 FND_MESSAGE.Set_Token('COL_NAME', 'CREATED_BY' );
5256 FND_MSG_PUB.ADD;
5257 END IF;
5258 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5259 End If;
5260
5261 --Check creation date
5262 If ( P_Terr_Qual_Rec.CREATION_DATE is NULL OR
5263 P_Terr_Qual_Rec.CREATION_DATE = FND_API.G_MISS_DATE ) THEN
5264 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5265 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5266 FND_MESSAGE.Set_Token('COL_NAME', 'ORG_ID' );
5267 FND_MSG_PUB.ADD;
5268 END IF;
5269 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5270 End If;
5271
5272 -- Validate last updated by
5273 IF ( P_Terr_Qual_Rec.LAST_UPDATED_BY is NULL OR
5274 P_Terr_Qual_Rec.LAST_UPDATED_BY = FND_API.G_MISS_NUM) Then
5275 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5276 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5277 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATED_BY' );
5278 FND_MSG_PUB.ADD;
5279 END IF;
5280 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5281 End If;
5282
5283 -- Check last update date
5284 If ( P_Terr_Qual_Rec.LAST_UPDATE_DATE IS NULL OR
5285 P_Terr_Qual_Rec.LAST_UPDATE_DATE = FND_API.G_MISS_DATE ) THEN
5286 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5287 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5288 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_DATE' );
5289 FND_MSG_PUB.ADD;
5290 END IF;
5291 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5292 End If;
5293
5294 --
5295 --Check last update login
5296 --If ( P_Terr_Qual_Rec.LAST_UPDATE_LOGIN is NULL OR
5297 -- P_Terr_Qual_Rec.LAST_UPDATE_LOGIN = FND_API.G_MISS_NUM ) THEN
5298 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5299 -- FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5300 -- FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_LOGIN' );
5301 -- FND_MSG_PUB.ADD;
5302 -- END IF;
5303 -- x_Return_Status := FND_API.G_RET_STS_ERROR ;
5304 --End If;
5305 --
5306
5307 --
5308 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
5309 p_data => x_msg_data);
5310
5311 --dbms_output('Validate_Qualifier: Exiting API');
5312 EXCEPTION
5313 --
5314 WHEN NO_DATA_FOUND THEN
5315 --dbms_output('Validate_Qualifier: NO_DATA_FOUND Exception');
5316 x_return_status := FND_API.G_RET_STS_ERROR ;
5317 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_DISABLED_TERR_QUAL');
5318 FND_MSG_PUB.ADD;
5319 FND_MSG_PUB.Count_And_Get
5320 ( P_count => x_msg_count,
5321 P_data => x_msg_data
5322 );
5323
5324 WHEN OTHERS THEN
5325 --dbms_output('Validate_Qualifier: Others Exception');
5326 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5327 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
5328 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Qualifer' );
5329 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
5330 FND_MSG_PUB.ADD;
5331 FND_MSG_PUB.Count_And_Get
5332 ( P_count => x_msg_count,
5333 P_data => x_msg_data
5334 );
5335 --
5336 END Validate_Qualifier;
5337
5338 -- Validate the Territory RECORD
5339 -- Validate Territory Name is specified and also check for not null columns
5340 -- If Parent Territory_id, ESCALATION_TERRITORY_ID, territory_type_id is specified
5341 PROCEDURE Validate_Territory_Record
5342 (p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5343 x_Return_Status OUT NOCOPY VARCHAR2,
5344 x_msg_count OUT NOCOPY NUMBER,
5345 x_msg_data OUT NOCOPY VARCHAR2,
5346 p_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec)
5347 AS
5348
5349 l_Return_Status VARCHAR2(1);
5350 l_reason VARCHAR2(1);
5351
5352 BEGIN
5353 --dbms_output('Validate_Territory_Record: Entering API');
5354
5355 -- Initialize the status to success
5356 x_return_status := FND_API.G_RET_STS_SUCCESS;
5357
5358 -- Check whether the territory Name is specified
5359 --
5360 IF (p_Terr_All_Rec.NAME is NULL) OR (p_Terr_All_Rec.NAME = FND_API.G_MISS_CHAR) THEN
5361 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5362 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5363 FND_MESSAGE.Set_Token('COL_NAME', 'NAME' );
5364 FND_MSG_PUB.ADD;
5365 END IF;
5366 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5367 End If;
5368
5369 -- Check whether application short name is specified
5370 --
5371 IF (p_Terr_All_Rec.APPLICATION_SHORT_NAME is NULL) OR
5372 (p_Terr_All_Rec.APPLICATION_SHORT_NAME = FND_API.G_MISS_CHAR) THEN
5373 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5374 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5375 FND_MESSAGE.Set_Token('COL_NAME', 'APPLICATION_SHORT_NAME' );
5376 FND_MSG_PUB.ADD;
5377 END IF;
5378 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5379 End If;
5380
5381 /* Check whether the enabled_flag is specified
5382 -- Obsolete: use date effectivity to determine
5383 -- whether territory is enabled
5384 IF (p_Terr_All_Rec.ENABLED_FLAG is NULL) OR
5385 (p_Terr_All_Rec.ENABLED_FLAG = FND_API.G_MISS_CHAR) THEN
5386 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5387 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5388 FND_MESSAGE.Set_Token('COL_NAME', 'ENABLED_FLAG' );
5389 FND_MSG_PUB.ADD;
5390 END IF;
5391 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5392 End If;
5393 */
5394
5395 /*-- Check for ORG_ID - obsolete org_id is optional
5396 IF (p_Terr_All_Rec.ORG_ID is NULL) OR
5397 (p_Terr_All_Rec.ORG_ID = FND_API.G_MISS_NUM) THEN
5398 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5399 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5400 FND_MESSAGE.Set_Token('COL_NAME', 'ORG_ID' );
5401 FND_MSG_PUB.ADD;
5402 END IF;
5403 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5404 End If;
5405 */
5406
5407 If (p_Terr_All_Rec.ESCALATION_TERRITORY_FLAG = 'Y' and
5408 p_Terr_All_Rec.TEMPLATE_FLAG = 'Y' ) Then
5409 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5410 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_OVERLAPPING_FLAG');
5411 FND_MSG_PUB.ADD;
5412 END IF;
5413 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5414 End If;
5415
5416 --Check created by
5417 IF ( p_Terr_All_Rec.CREATED_BY is NULL OR
5418 p_Terr_All_Rec.CREATED_BY = FND_API.G_MISS_NUM ) THEN
5419 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5420 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5421 FND_MESSAGE.Set_Token('COL_NAME', 'CREATED_BY' );
5422 FND_MSG_PUB.ADD;
5423 END IF;
5424 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5425 End If;
5426
5427 --Check creation date
5428 If ( p_Terr_All_Rec.CREATION_DATE is NULL OR
5429 p_Terr_All_Rec.CREATION_DATE = FND_API.G_MISS_DATE ) THEN
5430 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5431 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5432 FND_MESSAGE.Set_Token('COL_NAME', 'CREATION_DATE' );
5433 FND_MSG_PUB.ADD;
5434 END IF;
5435 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5436 End If;
5437
5438 -- Validate last updated by
5439 IF ( p_Terr_All_Rec.LAST_UPDATED_BY is NULL OR
5440 p_Terr_All_Rec.LAST_UPDATED_BY = FND_API.G_MISS_NUM) Then
5441 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5442 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5443 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATED_BY' );
5444 FND_MSG_PUB.ADD;
5445 END IF;
5446 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5447 End If;
5448
5449 -- Check last update date
5450 If ( p_Terr_All_Rec.LAST_UPDATE_DATE IS NULL OR
5451 p_Terr_All_Rec.LAST_UPDATE_DATE = FND_API.G_MISS_DATE ) THEN
5452 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5453 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5454 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_DATE' );
5455 FND_MSG_PUB.ADD;
5456 END IF;
5457 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5458 End If;
5459
5460 --Check last update login
5461 --If ( p_Terr_All_Rec.LAST_UPDATE_LOGIN is NULL OR
5462 -- p_Terr_All_Rec.LAST_UPDATE_LOGIN = FND_API.G_MISS_NUM ) THEN
5463 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5464 -- FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5465 -- FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_LOGIN' );
5466 -- FND_MSG_PUB.ADD;
5467 -- END IF;
5468 -- x_Return_Status := FND_API.G_RET_STS_ERROR ;
5469 --End If;
5470
5471 --Check start date active
5472 If ( p_Terr_All_Rec.START_DATE_ACTIVE IS NULL OR
5473 p_Terr_All_Rec.START_DATE_ACTIVE = FND_API.G_MISS_DATE ) THEN
5474 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5475 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5476 FND_MESSAGE.Set_Token('COL_NAME', 'START_DATE_ACTIVE' );
5477 FND_MSG_PUB.ADD;
5478 END IF;
5479 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5480 End If;
5481
5482
5483 /* Check Number Of Winners not set at
5484 ** a higher/lower level in the hierarchy
5485 ** 10/04/00 JDOCHERT
5486 */
5487 /* JDOCHERT: 06/27/03: bug#3020630
5488 IF ( p_terr_all_rec.NUM_WINNERS IS NOT NULL AND
5489 p_terr_all_rec.NUM_WINNERS <> FND_API.G_MISS_NUM ) THEN
5490
5491 validate_num_winners(
5492 p_terr_all_rec => p_terr_all_rec,
5493 p_init_msg_list => p_init_msg_list,
5494 x_Return_Status => l_Return_Status,
5495 x_msg_count => x_msg_count,
5496 x_msg_data => x_msg_data,
5497 x_Reason => l_reason );
5498
5499
5500 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
5501 x_Return_Status := l_return_Status;
5502 End If;
5503
5504 End If;
5505 */
5506
5507
5508 --
5509 -- Validate foreign key references
5510 Validate_Foreign_Key(p_Terr_All_Rec => p_Terr_All_Rec,
5511 p_init_msg_list => p_init_msg_list,
5512 x_Return_Status => l_Return_Status,
5513 x_msg_count => x_msg_count,
5514 x_msg_data => x_msg_data);
5515
5516 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5517 x_Return_Status := l_return_Status;
5518 End If;
5519
5520 -- Since the message stack is already set
5521 --
5522 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
5523 p_data => x_msg_data);
5524
5525 EXCEPTION
5526 --
5527 WHEN FND_API.G_EXC_ERROR THEN
5528 --dbms_output('Validate_Territory_Record: FND_API.G_EXC_ERROR');
5529 x_return_status := FND_API.G_RET_STS_ERROR ;
5530 FND_MSG_PUB.Count_And_Get
5531 ( P_count => x_msg_count,
5532 P_data => x_msg_data
5533 );
5534
5535 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5536 --dbms_output('Validate_Territory_Record: FND_API.G_EXC_UNEXPECTED_ERROR');
5537 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5538 FND_MSG_PUB.Count_And_Get
5539 ( P_count => x_msg_count,
5540 P_data => x_msg_data
5541 );
5542
5543 WHEN OTHERS THEN
5544 --dbms_output('Validate_Territory_Record: OTHERS - ' || SQLERRM);
5545 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5546 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
5547 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Territory_Record' );
5548 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
5549 FND_MSG_PUB.ADD;
5550 FND_MSG_PUB.Count_And_Get
5551 ( P_count => x_msg_count,
5552 P_data => x_msg_data
5553 );
5554 --
5555 END Validate_Territory_Record;
5556
5557 --
5558 --
5559 -- Validate Foreign Key references
5560 PROCEDURE Validate_Foreign_Key
5561 (p_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
5562 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5563 x_Return_Status OUT NOCOPY VARCHAR2,
5564 x_msg_count OUT NOCOPY NUMBER,
5565 x_msg_data OUT NOCOPY VARCHAR2 )
5566 AS
5567 l_Status VARCHAR2(01);
5568 l_parent_terr_id NUMBER;
5569 BEGIN
5570 --dbms_output('Validate_Foreign_Key: Entering API');
5571 -- Initialize the status to success
5572 x_return_status := FND_API.G_RET_STS_SUCCESS;
5573 --
5574 --dbms_output('Validate_Foreign_Key: Checking for PARENT Territory' || TO_CHAR(p_Terr_All_Rec.parent_territory_Id));
5575 If (p_Terr_All_Rec.PARENT_TERRITORY_ID is not null) AND
5576 (p_Terr_All_Rec.PARENT_TERRITORY_ID <> FND_API.G_MISS_NUM)
5577 Then
5578 --
5579 l_parent_terr_id := p_Terr_All_Rec.parent_territory_Id;
5580 --dbms_output('Validate_Foreign_Key: Returned from JTF_CTM_UTILITY_PVT.fk_id_is_valid');
5581 IF JTF_CTM_UTILITY_PVT.fk_id_is_valid(l_parent_terr_id, 'TERR_ID', 'JTF_TERR_ALL') <> FND_API.G_TRUE Then
5582 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5583 --dbms_output('PARENT Validate_Foreign_Key: l_status <> FND_API.G_TRUE');
5584 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_PARENT_TERR');
5585 FND_MESSAGE.Set_Token('TERR_ID', to_char(l_parent_terr_id));
5586 FND_MSG_PUB.ADD;
5587 End If;
5588 x_return_status := FND_API.G_RET_STS_ERROR;
5589 End If;
5590 End If;
5591
5592 --
5593 --dbms_output('Validate_Foreign_Key: Checking for Territory Type Id');
5594 --
5595 If (p_Terr_All_Rec.TERRITORY_TYPE_ID is not null) AND
5596 (p_Terr_All_Rec.TERRITORY_TYPE_ID <> FND_API.G_MISS_NUM)
5597 then
5598 l_status := JTF_CTM_UTILITY_PVT.fk_id_is_valid(p_Terr_All_Rec.TERRITORY_TYPE_ID, 'TERR_TYPE_ID', 'JTF_TERR_TYPES_ALL');
5599 If l_status <> FND_API.G_TRUE Then
5600 x_return_status := FND_API.G_RET_STS_ERROR;
5601 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5602 --dbms_output('TERR TYPE: Validate_Foreign_Key: l_status <> FND_API.G_TRUE');
5603 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_TERR_TYPE');
5604 FND_MESSAGE.Set_Token('TERR_TYPE_ID', to_char(p_Terr_All_Rec.TERRITORY_TYPE_ID));
5605 FND_MSG_PUB.ADD;
5606 End If;
5607 End If;
5608 End If;
5609 --
5610 --dbms_output('Validate_Foreign_Key: Checking for TEMPLATE_TERRITORY_ID');
5611 --
5612 iF (p_Terr_All_Rec.TEMPLATE_TERRITORY_ID is not null) AND
5613 (p_Terr_All_Rec.TEMPLATE_TERRITORY_ID <> FND_API.G_MISS_NUM) Then
5614 l_status := JTF_CTM_UTILITY_PVT.fk_id_is_valid(p_Terr_All_Rec.TEMPLATE_TERRITORY_ID, 'TERR_ID', 'JTF_TERR_ALL');
5615 if l_status <> FND_API.G_TRUE Then
5616 x_return_status := FND_API.G_RET_STS_ERROR;
5617 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5618 --dbms_output('TEMP: Validate_Foreign_Key: l_status <> FND_API.G_TRUE');
5619 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_TEMP_TERR');
5620 FND_MESSAGE.Set_Token('TERR_ID', to_char(p_Terr_All_Rec.TEMPLATE_TERRITORY_ID));
5621 FND_MSG_PUB.ADD;
5622 End If;
5623 End If;
5624 End If;
5625 --
5626 --dbms_output('Validate_Foreign_Key: Checking for ESCALATION_TERRITORY_ID');
5627 --
5628 If (p_Terr_All_Rec.ESCALATION_TERRITORY_ID is not null) AND
5629 (p_Terr_All_Rec.ESCALATION_TERRITORY_ID <> FND_API.G_MISS_NUM) Then
5630 l_status := JTF_CTM_UTILITY_PVT.fk_id_is_valid(p_Terr_All_Rec.escalation_territory_id, 'TERR_ID', 'JTF_TERR_ALL');
5631 if l_status <> FND_API.G_TRUE Then
5632 x_return_status := FND_API.G_RET_STS_ERROR;
5633 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5634 --dbms_output('ESC TERR: Validate_Foreign_Key: l_status <> FND_API.G_TRUE');
5635 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_ESC_TERR');
5636 FND_MESSAGE.Set_Token('TERR_ID', to_char(p_Terr_All_Rec.terr_Id));
5637 FND_MSG_PUB.ADD;
5638 End If;
5639 End If;
5640 End If;
5641
5642 --
5643 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
5644 p_data => x_msg_data);
5645 EXCEPTION
5646 --
5647 WHEN OTHERS THEN
5648 --dbms_output('Validate_Foreign_Key: Others exception' || SQLERRM);
5649 X_return_status := FND_API.G_RET_STS_ERROR;
5650 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
5651 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Foreign_Key' );
5652 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
5653 FND_MSG_PUB.ADD;
5654 FND_MSG_PUB.Count_And_Get
5655 ( p_count => x_msg_count,
5656 p_data => x_msg_data
5657 );
5658 --
5659 END Validate_Foreign_Key;
5660
5661
5662 ---------------------------------------------------------------------
5663 -- Validae the Territory Usage
5664 ---------------------------------------------------------------------
5665 -- Columns Validated
5666 -- Make sure a Territory Usage is specified
5667 -- Make sure the Territory Id is valid
5668 -- Make sure the territory usage Id is Valid
5669 ---------------------------------------------------------------------
5670 PROCEDURE Validate_Territory_Usage
5671 (p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5672 x_Return_Status OUT NOCOPY VARCHAR2,
5673 x_msg_count OUT NOCOPY NUMBER,
5674 x_msg_data OUT NOCOPY VARCHAR2,
5675 p_Terr_Usgs_Rec IN Terr_Usgs_Rec_Type := G_MISS_Terr_Usgs_Rec,
5676 p_Terr_Id IN NUMBER)
5677 AS
5678 l_Rec_Counter NUMBER;
5679 l_Validate_id NUMBER;
5680 BEGIN
5681 --dbms_output('Validate_Territory_Usage: Entering API');
5682
5683 -- Initialize the status to success
5684 x_return_status := FND_API.G_RET_STS_SUCCESS;
5685
5686 -- Validate the territory Id
5687 If p_Terr_Id IS NOT NULL THEN
5688 l_Validate_id := p_Terr_Id;
5689 If JTF_CTM_UTILITY_PVT.fk_id_is_valid(l_Validate_id, 'TERR_ID', 'JTF_TERR_ALL') <> FND_API.G_TRUE Then
5690 --dbms_output('Validate_Territory_Usage: l_status <> FND_API.G_TRUE');
5691 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_FOREIGN_KEY');
5692 FND_MESSAGE.Set_Token('TABLE_NAME', 'JTF_TERR');
5693 FND_MESSAGE.Set_Token('COLUMN_NAME', 'TERR_ID');
5694 FND_MSG_PUB.ADD;
5695 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5696 End If;
5697 --dbms_output('Validate_Territory_Usage: TERR_ID(' || to_char(l_Validate_id) || ') is valid');
5698 End If;
5699
5700 -- Validate the source_id
5701 l_Validate_id := p_Terr_Usgs_rec.SOURCE_ID;
5702
5703 -- Make sure the foreign key source_id is valid
5704 If JTF_CTM_UTILITY_PVT.fk_id_is_valid(l_Validate_id, 'SOURCE_ID', 'JTF_SOURCES_ALL') <> FND_API.G_TRUE Then
5705 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5706 --dbms_output('Validate_Territory_Usage: FND_MSG_PUB.ADD');
5707 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_FOREIGN_KEY');
5708 FND_MESSAGE.Set_Token('TABLE_NAME', 'JTF_SOURCES');
5709 FND_MESSAGE.Set_Token('COLUMN_NAME', 'SOURCE_ID');
5710 FND_MSG_PUB.ADD;
5711 End If;
5712 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5713 End If;
5714
5715
5716 /*-- Check for ORG_ID - obsolete: org_id is optional
5717 IF (p_Terr_Usgs_rec.ORG_ID is NULL) OR
5718 (p_Terr_Usgs_rec.ORG_ID = FND_API.G_MISS_NUM) THEN
5719 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5720 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5721 FND_MESSAGE.Set_Token('COL_NAME', 'ORG_ID' );
5722 FND_MSG_PUB.ADD;
5723 END IF;
5724 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5725 End If;
5726 */
5727
5728 --Check created by
5729 IF ( p_Terr_Usgs_rec.CREATED_BY is NULL OR
5730 p_Terr_Usgs_rec.CREATED_BY = FND_API.G_MISS_NUM ) THEN
5731 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5732 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5733 FND_MESSAGE.Set_Token('COL_NAME', 'CREATED_BY' );
5734 FND_MSG_PUB.ADD;
5735 END IF;
5736 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5737 End If;
5738
5739 --Check creation date
5740 If ( p_Terr_Usgs_rec.CREATION_DATE is NULL OR
5741 p_Terr_Usgs_rec.CREATION_DATE = FND_API.G_MISS_DATE ) THEN
5742 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5743 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5744 FND_MESSAGE.Set_Token('COL_NAME', 'CREATION_DATE' );
5745 FND_MSG_PUB.ADD;
5746 END IF;
5747 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5748 End If;
5749
5750 -- Validate last updated by
5751 IF ( p_Terr_Usgs_rec.LAST_UPDATED_BY is NULL OR
5752 p_Terr_Usgs_rec.LAST_UPDATED_BY = FND_API.G_MISS_NUM) Then
5753 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5754 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5755 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATED_BY' );
5756 FND_MSG_PUB.ADD;
5757 END IF;
5758 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5759 End If;
5760
5761 -- Check last update date
5762 If ( p_Terr_Usgs_rec.LAST_UPDATE_DATE IS NULL OR
5763 p_Terr_Usgs_rec.LAST_UPDATE_DATE = FND_API.G_MISS_DATE ) THEN
5764 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5765 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5766 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_DATE' );
5767 FND_MSG_PUB.ADD;
5768 END IF;
5769 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5770 End If;
5771
5772 --Check last update login
5773 --If ( p_Terr_Usgs_rec.LAST_UPDATE_LOGIN is NULL OR
5774 -- p_Terr_Usgs_rec.LAST_UPDATE_LOGIN = FND_API.G_MISS_NUM ) THEN
5775 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5776 -- FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5777 -- FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_LOGIN' );
5778 -- FND_MSG_PUB.ADD;
5779 -- END IF;
5780 -- x_Return_Status := FND_API.G_RET_STS_ERROR ;
5781 --End If;
5782
5783 --
5784 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
5785 p_data => x_msg_data);
5786
5787 EXCEPTION
5788 --
5789 WHEN FND_API.G_EXC_ERROR THEN
5790 --dbms_output('Validate_Territory_Usage: FND_API.G_EXC_ERROR');
5791 x_return_status := FND_API.G_RET_STS_ERROR ;
5792 FND_MSG_PUB.Count_And_Get
5793 ( P_count => x_msg_count,
5794 P_data => x_msg_data
5795 );
5796
5797 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5798 --dbms_output('Validate_Territory_Usage: FND_API.G_EXC_UNEXPECTED_ERROR');
5799 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5800 FND_MSG_PUB.Count_And_Get
5801 ( P_count => x_msg_count,
5802 P_data => x_msg_data
5803 );
5804
5805 WHEN OTHERS THEN
5806 --dbms_output('Validate_Territory_Usage: OTHERS - ' || SQLERRM);
5807 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5808 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
5809 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Territory_Usage' );
5810 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
5811 FND_MSG_PUB.ADD;
5812 FND_MSG_PUB.Count_And_Get
5813 ( P_count => x_msg_count,
5814 P_data => x_msg_data
5815 );
5816 --
5817 END Validate_Territory_Usage;
5818
5819 ---------------------------------------------------------------------
5820 -- Validate the Territory Qualifer Type Usage
5821 ---------------------------------------------------------------------
5822 -- Columns Validated
5823 -- Make sure a Territory Qual Type Usage is specified
5824 -- Make sure the Territory Id is valid
5825 -- Make sure the QUAL_TYPE_USG_ID is valid
5826 ---------------------------------------------------------------------
5827 PROCEDURE Validate_Terr_Qtype_Usage
5828 (p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5829 x_Return_Status OUT NOCOPY VARCHAR2,
5830 x_msg_count OUT NOCOPY NUMBER,
5831 x_msg_data OUT NOCOPY VARCHAR2,
5832 p_Terr_QualTypeUsgs_Rec IN Terr_QualTypeUsgs_Rec_Type := G_Miss_Terr_QualTypeUsgs_Rec,
5833 p_Terr_Id IN NUMBER)
5834 AS
5835 l_Rec_Counter NUMBER;
5836 l_Validate_id NUMBER;
5837 l_dummy NUMBER := NULL;
5838 l_source_id NUMBER;
5839 l_qual_Type_Usg_id NUMBER;
5840 BEGIN
5841 --dbms_output('Validate_Terr_Qtype_Usage: Entering API');
5842
5843 -- Initialize the status to success
5844 x_return_status := FND_API.G_RET_STS_SUCCESS;
5845
5846 -- This block will validate territory
5847 -- qual_Type_Usg_id specified
5848 BEGIN
5849 l_qual_Type_Usg_id := p_Terr_QualTypeUsgs_Rec.QUAL_TYPE_USG_ID;
5850 --Check the qual_type_usg_id specified is valid
5851 Select 1
5852 into l_dummy
5853 From jtf_terr_usgs_ALL jtu, jtf_qual_type_usgs_ALL jqtu
5854 where jtu.terr_id = p_Terr_Id and
5855 jqtu.source_id = jtu.source_id and
5856 jqtu.qual_type_usg_id = l_qual_Type_Usg_id;
5857
5858 EXCEPTION
5859 WHEN NO_DATA_FOUND THEN
5860 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_TERR_QTYPE');
5861 FND_MSG_PUB.ADD;
5862 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5863 END;
5864
5865 -- Validate the territory Id
5866 l_Validate_id := p_Terr_Id;
5867 If p_Terr_Id IS NOT NULL Then
5868 --dbms_output('Validate_Terr_Qtype_Usage: TERR_ID(' || to_char(l_Validate_id) || ')');
5869 If JTF_CTM_UTILITY_PVT.fk_id_is_valid(l_Validate_id, 'TERR_ID', 'JTF_TERR_ALL') <> FND_API.G_TRUE Then
5870 --dbms_output('Validate_Foreign_Key: l_status <> FND_API.G_TRUE');
5871 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5872 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_FOREIGN_KEY');
5873 FND_MESSAGE.Set_Token('TABLE_NAME', 'JTF_TERR');
5874 FND_MESSAGE.Set_Token('COLUMN_NAME', 'TERR_ID');
5875 FND_MSG_PUB.ADD;
5876 END IF;
5877 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5878 End If;
5879 End If;
5880
5881 --
5882 --
5883 /*-- Check for ORG_ID - obsolete: org_id is optional
5884 IF (p_Terr_QualTypeUsgs_Rec.ORG_ID is NULL) OR
5885 (p_Terr_QualTypeUsgs_Rec.ORG_ID = FND_API.G_MISS_NUM) THEN
5886 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5887 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5888 FND_MESSAGE.Set_Token('COL_NAME', 'ORG_ID' );
5889 FND_MSG_PUB.ADD;
5890 END IF;
5891 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5892 End If;
5893 */
5894
5895 --Check created by
5896 IF ( p_Terr_QualTypeUsgs_Rec.CREATED_BY is NULL OR
5897 p_Terr_QualTypeUsgs_Rec.CREATED_BY = FND_API.G_MISS_NUM ) THEN
5898 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5899 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5900 FND_MESSAGE.Set_Token('COL_NAME', 'CREATED_BY' );
5901 FND_MSG_PUB.ADD;
5902 END IF;
5903 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5904 End If;
5905
5906 --Check creation date
5907 If ( p_Terr_QualTypeUsgs_Rec.CREATION_DATE is NULL OR
5908 p_Terr_QualTypeUsgs_Rec.CREATION_DATE = FND_API.G_MISS_DATE ) THEN
5909 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5910 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5911 FND_MESSAGE.Set_Token('COL_NAME', 'CREATION_DATE' );
5912 FND_MSG_PUB.ADD;
5913 END IF;
5914 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5915 End If;
5916
5917 -- Validate last updated by
5918 IF ( p_Terr_QualTypeUsgs_Rec.LAST_UPDATED_BY is NULL OR
5919 p_Terr_QualTypeUsgs_Rec.LAST_UPDATED_BY = FND_API.G_MISS_NUM) Then
5920 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5921 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5922 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATED_BY' );
5923 FND_MSG_PUB.ADD;
5924 END IF;
5925 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5926 End If;
5927
5928 -- Check last update date
5929 If ( p_Terr_QualTypeUsgs_Rec.LAST_UPDATE_DATE IS NULL OR
5930 p_Terr_QualTypeUsgs_Rec.LAST_UPDATE_DATE = FND_API.G_MISS_DATE ) THEN
5931 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5932 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5933 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_DATE' );
5934 FND_MSG_PUB.ADD;
5935 END IF;
5936 x_Return_Status := FND_API.G_RET_STS_ERROR ;
5937 End If;
5938
5939 --Check last update login
5940 --If ( p_Terr_QualTypeUsgs_Rec.LAST_UPDATE_LOGIN is NULL OR
5941 -- p_Terr_QualTypeUsgs_Rec.LAST_UPDATE_LOGIN = FND_API.G_MISS_NUM ) THEN
5942 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5943 -- FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
5944 -- FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_LOGIN' );
5945 -- FND_MSG_PUB.ADD;
5946 -- END IF;
5947 -- x_Return_Status := FND_API.G_RET_STS_ERROR ;
5948 --End If;
5949
5950 --
5951 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
5952 p_data => x_msg_data);
5953 EXCEPTION
5954 --
5955 WHEN FND_API.G_EXC_ERROR THEN
5956 --dbms_output('Validate_Terr_Qtype_Usage: FND_API.G_EXC_ERROR');
5957 x_return_status := FND_API.G_RET_STS_ERROR ;
5958 FND_MSG_PUB.Count_And_Get
5959 ( P_count => x_msg_count,
5960 P_data => x_msg_data
5961 );
5962
5963 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5964 --dbms_output('Validate_Terr_Qtype_Usage: FND_API.G_EXC_UNEXPECTED_ERROR');
5965 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5966 FND_MSG_PUB.Count_And_Get
5967 ( P_count => x_msg_count,
5968 P_data => x_msg_data
5969 );
5970
5971 WHEN OTHERS THEN
5972 --dbms_output.put_line('Validate_Terr_Qtype_Usage: OTHERS - ' || SQLERRM);
5973 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5974
5975 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
5976 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Terr_Qtype_Usage' );
5977 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
5978 FND_MSG_PUB.ADD;
5979 FND_MSG_PUB.Count_And_Get
5980 ( P_count => x_msg_count,
5981 P_data => x_msg_data
5982 );
5983 --
5984 END Validate_Terr_Qtype_Usage;
5985
5986
5987 ---------------------------------------------------------------------
5988 -- Validate the Territory Qualifer Values passed in
5989 ---------------------------------------------------------------------
5990 -- Columns Validated
5991 -- Make sure the values are in the right columns as per the
5992 -- qualifer setup
5993 -- Eg:
5994 -- If the qualifer, diplay_type = 'CHAR' and
5995 -- col1_data_type = 'NUMBER'
5996 -- then make sure the ID is passed in LOW_VALUE_CHAR_ID
5997 --
5998 --
5999 ---------------------------------------------------------------------
6000 PROCEDURE Validate_terr_Value_Rec
6001 (p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6002 x_Return_Status OUT NOCOPY VARCHAR2,
6003 x_msg_count OUT NOCOPY NUMBER,
6004 x_msg_data OUT NOCOPY VARCHAR2,
6005 p_Terr_Qual_Id IN NUMBER,
6006 p_Terr_Value_Rec IN Terr_Values_Rec_Type := G_Miss_Terr_Values_Rec)
6007 AS
6008 Cursor C_QualDef1 IS
6009 -- Get the qualifier usage related information
6010 select jqu.qual_col1_datatype, jqu.display_type, jqu.convert_to_id_flag
6011 from jtf_qual_usgs_ALL jqu, jtf_terr_qual_ALL jtq
6012 where jqu.qual_usg_id = jtq.qual_Usg_Id and
6013 jqu.org_id = jtq.org_id AND
6014 jtq.terr_qual_id = p_Terr_Qual_Id;
6015
6016 l_display_type VARCHAR2(30);
6017 l_qual_col1_datatype VARCHAR2(30);
6018 l_convert_to_id_flag VARCHAR2(01);
6019 BEGIN
6020 --dbms_output('Validate_terr_Value_Rec: - terr_qual_id' || to_char(p_Terr_Qual_Id) );
6021
6022 -- Initialize the status to success
6023 x_return_status := FND_API.G_RET_STS_SUCCESS;
6024
6025 OPEN C_QualDef1;
6026 FETCH C_QualDef1 INTO l_qual_col1_datatype, l_display_type, l_convert_to_id_flag;
6027 CLOSE C_QualDef1;
6028
6029 --dbms_output('l_display_type - ' || l_display_type );
6030 --dbms_output('l_qual_col1_datatype - ' || l_qual_col1_datatype );
6031 --dbms_output('l_convert_to_id_flag - ' || l_convert_to_id_flag );
6032
6033 /*-- Check for ORG_ID - obsolete: org_id is optional
6034 IF (p_Terr_Value_Rec.ORG_ID is NULL) OR
6035 (p_Terr_Value_Rec.ORG_ID = FND_API.G_MISS_NUM) THEN
6036 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6037 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
6038 FND_MESSAGE.Set_Token('COL_NAME', 'ORG_ID' );
6039 FND_MSG_PUB.ADD;
6040 END IF;
6041 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6042 End If;
6043 */
6044
6045
6046 /* ----- ARPATEL 041101 Bug#1508750 FIX -----------------------------------
6047
6048 If ( p_Terr_Value_Rec.ID_USED_FLAG IS NULL OR
6049 p_Terr_Value_Rec.ID_USED_FLAG = FND_API.G_MISS_CHAR ) Then
6050 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6051 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
6052 FND_MESSAGE.Set_Token('COL_NAME', 'ID_USED_FLAG' );
6053 FND_MSG_PUB.ADD;
6054 END IF;
6055 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6056 End If;
6057 -------------------------------------------------------------------------*/
6058
6059
6060 --Check created by
6061 IF ( p_Terr_Value_Rec.CREATED_BY is NULL OR
6062 p_Terr_Value_Rec.CREATED_BY = FND_API.G_MISS_NUM ) THEN
6063 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6064 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
6065 FND_MESSAGE.Set_Token('COL_NAME', 'CREATED_BY' );
6066 FND_MSG_PUB.ADD;
6067 END IF;
6068 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6069 End If;
6070
6071 --Check creation date
6072 If ( p_Terr_Value_Rec.CREATION_DATE is NULL OR
6073 p_Terr_Value_Rec.CREATION_DATE = FND_API.G_MISS_DATE ) THEN
6074 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6075 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
6076 FND_MESSAGE.Set_Token('COL_NAME', 'CREATION_DATE' );
6077 FND_MSG_PUB.ADD;
6078 END IF;
6079 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6080 End If;
6081
6082 -- Validate last updated by
6083 IF ( p_Terr_Value_Rec.LAST_UPDATED_BY is NULL OR
6084 p_Terr_Value_Rec.LAST_UPDATED_BY = FND_API.G_MISS_NUM) Then
6085 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6086 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
6087 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATED_BY' );
6088 FND_MSG_PUB.ADD;
6089 END IF;
6090 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6091 End If;
6092
6093 -- Check last update date
6094 If ( p_Terr_Value_Rec.LAST_UPDATE_DATE IS NULL OR
6095 p_Terr_Value_Rec.LAST_UPDATE_DATE = FND_API.G_MISS_DATE ) THEN
6096 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6097 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
6098 FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_DATE' );
6099 FND_MSG_PUB.ADD;
6100 END IF;
6101 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6102 End If;
6103
6104 --Check last update login
6105 --If ( p_Terr_Value_Rec.LAST_UPDATE_LOGIN is NULL OR
6106 -- p_Terr_Value_Rec.LAST_UPDATE_LOGIN = FND_API.G_MISS_NUM ) THEN
6107 -- IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6108 -- FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_MISSING_COL_VALUE');
6109 -- FND_MESSAGE.Set_Token('COL_NAME', 'LAST_UPDATE_LOGIN' );
6110 -- FND_MSG_PUB.ADD;
6111 -- END IF;
6112 -- x_Return_Status := FND_API.G_RET_STS_ERROR ;
6113 --End If;
6114
6115 --dbms_output('Before the main validation.');
6116
6117 -- Character Type
6118 IF ( l_display_type = 'CHAR' AND
6119 ( l_convert_to_id_flag = 'N' or l_convert_to_id_flag is NULL ) ) THEN
6120
6121 --dbms_output('Inside first if statement');
6122 If ( ( p_Terr_Value_Rec.LOW_VALUE_CHAR IS NULL or
6123 p_Terr_Value_Rec.LOW_VALUE_CHAR = FND_API.G_MISS_CHAR ) OR
6124 p_Terr_Value_Rec.ID_USED_FLAG = 'Y' OR
6125 ( p_Terr_Value_Rec.COMPARISON_OPERATOR IS NULL OR
6126 p_Terr_Value_Rec.COMPARISON_OPERATOR = FND_API.G_MISS_CHAR ) OR
6127 ( p_Terr_Value_Rec.LOW_VALUE_CHAR_ID IS NOT NULL and
6128 p_Terr_Value_Rec.LOW_VALUE_CHAR_ID <> FND_API.G_MISS_NUM ) OR
6129 ( p_Terr_Value_Rec.LOW_VALUE_NUMBER IS NOT NULL and
6130 p_Terr_Value_Rec.LOW_VALUE_NUMBER <> FND_API.G_MISS_NUM ) OR
6131 ( p_Terr_Value_Rec.HIGH_VALUE_NUMBER IS NOT NULL and
6132 p_Terr_Value_Rec.HIGH_VALUE_NUMBER <> FND_API.G_MISS_NUM ) OR
6133 ( p_Terr_Value_Rec.INTEREST_TYPE_ID IS NOT NULL and
6134 p_Terr_Value_Rec.INTEREST_TYPE_ID <> FND_API.G_MISS_NUM ) ) THEN
6135
6136 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6137 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_TERR_VALUE');
6138 FND_MSG_PUB.ADD;
6139 END IF;
6140
6141 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6142
6143 END IF;
6144
6145 -- Numeric with CHAR dsiplay as in Customer Name
6146 ElsIf ( l_display_type = 'CHAR' AND
6147 ( l_convert_to_id_flag = 'Y' or l_convert_to_id_flag is NULL ) ) Then
6148
6149 --dbms_output('Inside CHAR');
6150 -- If the Id is not specified in low_value_char_id or
6151 -- id_used_flag is not null or the operation is not
6152 -- specified, then flag exception
6153 If ( (p_Terr_Value_Rec.LOW_VALUE_CHAR_ID IS NULL or
6154 p_Terr_Value_Rec.LOW_VALUE_CHAR_ID = FND_API.G_MISS_NUM ) OR
6155 (p_Terr_Value_Rec.COMPARISON_OPERATOR IS NULL OR
6156 p_Terr_Value_Rec.COMPARISON_OPERATOR = FND_API.G_MISS_CHAR ) OR
6157 -- Description may be null
6158 -- 08/08/00 Change jdochert
6159 --p_Terr_Value_Rec.LOW_VALUE_CHAR = FND_API.G_MISS_CHAR OR
6160 (p_Terr_Value_Rec.ID_USED_FLAG IS NULL OR
6161 p_Terr_Value_Rec.ID_USED_FLAG = FND_API.G_MISS_CHAR OR
6162 p_Terr_Value_Rec.ID_USED_FLAG <> 'Y' ) OR
6163 (p_Terr_Value_Rec.LOW_VALUE_NUMBER IS NOT NULL and
6164 p_Terr_Value_Rec.LOW_VALUE_NUMBER <> FND_API.G_MISS_NUM ) OR
6165 (p_Terr_Value_Rec.HIGH_VALUE_NUMBER IS NOT NULL and
6166 p_Terr_Value_Rec.LOW_VALUE_NUMBER <> FND_API.G_MISS_NUM ) OR
6167 (p_Terr_Value_Rec.INTEREST_TYPE_ID IS NOT NULL and
6168 p_Terr_Value_Rec.INTEREST_TYPE_ID <> FND_API.G_MISS_NUM ) ) THEN
6169
6170 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6171 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_TERR_VALUE');
6172 FND_MSG_PUB.ADD;
6173 END IF;
6174
6175 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6176
6177 END IF;
6178
6179 ElsIf ( l_display_type = 'NUMERIC' ) Then
6180
6181 --dbms_output('Inside NUMERIC');
6182 -- Check whether the atleast LOW_VALUE_NUMBER, operator
6183 -- is specified
6184 If ( (p_Terr_Value_Rec.LOW_VALUE_NUMBER IS NULL OR
6185 p_Terr_Value_Rec.LOW_VALUE_NUMBER = FND_API.G_MISS_NUM ) OR
6186 (p_Terr_Value_Rec.COMPARISON_OPERATOR IS NULL OR
6187 p_Terr_Value_Rec.COMPARISON_OPERATOR = FND_API.G_MISS_CHAR ) ) THEN
6188
6189 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6190 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_TERR_VALUE');
6191 FND_MSG_PUB.ADD;
6192 END IF;
6193
6194 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6195
6196 END IF;
6197
6198 ElsIf ( l_display_type = 'CURRENCY' ) Then
6199
6200 --dbms_output('Inside CURRENCY');
6201 -- Check whether the atleast LOW_VALUE_NUMBER, operator
6202 -- is specified
6203 If ( (p_Terr_Value_Rec.LOW_VALUE_NUMBER IS NULL OR
6204 p_Terr_Value_Rec.LOW_VALUE_NUMBER = FND_API.G_MISS_NUM ) OR
6205 (p_Terr_Value_Rec.COMPARISON_OPERATOR IS NULL OR
6206 p_Terr_Value_Rec.COMPARISON_OPERATOR = FND_API.G_MISS_CHAR ) OR
6207 (p_Terr_Value_Rec.CURRENCY_CODE IS NULL OR
6208 p_Terr_Value_Rec.CURRENCY_CODE = FND_API.G_MISS_CHAR ) OR
6209 (p_Terr_Value_Rec.LOW_VALUE_CHAR IS NOT NULL and
6210 p_Terr_Value_Rec.LOW_VALUE_CHAR <> FND_API.G_MISS_CHAR ) OR
6211 (p_Terr_Value_Rec.INTEREST_TYPE_ID IS NOT NULL and
6212 p_Terr_Value_Rec.INTEREST_TYPE_ID <> FND_API.G_MISS_NUM ) ) THEN
6213
6214 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6215 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_TERR_VALUE');
6216 FND_MSG_PUB.ADD;
6217 END IF;
6218
6219 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6220
6221 END IF;
6222
6223 ElsIf ( l_display_type = 'INTEREST_TYPE' ) Then
6224
6225 --dbms_output('Inside INTEREST_TYPE');
6226 -- Check whether the atleast LOW_VALUE_NUMBER, operator
6227 -- is specified
6228 If ( (p_Terr_Value_Rec.INTEREST_TYPE_ID IS NULL OR
6229 p_Terr_Value_Rec.INTEREST_TYPE_ID = FND_API.G_MISS_NUM ) OR
6230 (p_Terr_Value_Rec.COMPARISON_OPERATOR IS NULL OR
6231 p_Terr_Value_Rec.COMPARISON_OPERATOR = FND_API.G_MISS_CHAR ) OR
6232 (p_Terr_Value_Rec.LOW_VALUE_NUMBER IS NOT NULL and
6233 p_Terr_Value_Rec.LOW_VALUE_NUMBER <> FND_API.G_MISS_NUM ) OR
6234 (p_Terr_Value_Rec.LOW_VALUE_CHAR IS NOT NULL and
6235 p_Terr_Value_Rec.LOW_VALUE_CHAR <> FND_API.G_MISS_CHAR ) ) THEN
6236
6237 --dbms_output('Error INTEREST_TYPE');
6238 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6239 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_INVALID_TERR_VALUE');
6240 FND_MSG_PUB.ADD;
6241 END IF;
6242
6243 x_Return_Status := FND_API.G_RET_STS_ERROR ;
6244
6245 END IF;
6246 End If;
6247
6248 --
6249 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6250 p_data => x_msg_data);
6251
6252 EXCEPTION
6253 --
6254 WHEN FND_API.G_EXC_ERROR THEN
6255 --dbms_output('Validate_Terr_Qtype_Usage: FND_API.G_EXC_ERROR');
6256 x_return_status := FND_API.G_RET_STS_ERROR ;
6257 FND_MSG_PUB.Count_And_Get
6258 ( P_count => x_msg_count,
6259 P_data => x_msg_data
6260 );
6261
6262 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6263 --dbms_output('Validate_Terr_Qtype_Usage: FND_API.G_EXC_UNEXPECTED_ERROR');
6264 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6265 FND_MSG_PUB.Count_And_Get
6266 ( P_count => x_msg_count,
6267 P_data => x_msg_data
6268 );
6269
6270 WHEN OTHERS THEN
6271 --dbms_output('Validate_Terr_Qtype_Usage: OTHERS - ' || SQLERRM);
6272 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6273
6274 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
6275 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_terr_Value_Rec' );
6276 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
6277 FND_MSG_PUB.ADD;
6278
6279 FND_MSG_PUB.Count_And_Get
6280 ( P_count => x_msg_count,
6281 P_data => x_msg_data
6282 );
6283
6284 End Validate_terr_Value_Rec;
6285
6286 ---------------------------------------------------------------------
6287 -- Get_Max_Rank
6288 ---------------------------------------------------------------------
6289 --
6290 -- Gets the maximum rank at a particular Level
6291 ---------------------------------------------------------------------
6292 PROCEDURE Get_Max_Rank
6293 (p_Parent_Terr_Id IN NUMBER,
6294 p_Source_Id IN NUMBER,
6295 X_Rank OUT NOCOPY NUMBER)
6296 AS
6297 BEGIN
6298 Select Max(rank)
6299 into x_Rank
6300 from jtf_terr_ALL jt, jtf_terr_usgs_ALL jtu
6301 where jt.Parent_Territory_id = p_Parent_Terr_Id and
6302 jt.Terr_Id = jtu.Terr_Id and
6303 jtu.source_id = p_Source_Id;
6304
6305 If x_Rank is NULL Then
6306 x_Rank := 0;
6307 End If;
6308
6309 Exception
6310 When NO_DATA_FOUND Then
6311 x_Rank := 0;
6312 END Get_Max_Rank;
6313 --
6314 --
6315 --
6316 --
6317 ---------------------------------------
6318 ---------------------------------------
6319 -- MASS CREATE TERRITORY FUNCTIONALITY
6320 ---------------------------------------
6321 ---------------------------------------
6322 --
6323 /*--------------------------------------------------------------------------------------*/
6324 /* This function does validation checks for the template territory record
6325 ** Validations:
6326 ** 1. id passed is a valid template id
6327 ** 2. At least 1 qualifier should be specified for use in generation.
6328 ** 3. lock the template so that no other user can use that template for
6329 ** generation or update the template.
6330 */
6331 PROCEDURE Validate_Template_Record (
6332 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6333 p_template_terr_id IN NUMBER,
6334 x_Return_Status OUT NOCOPY VARCHAR2,
6335 x_msg_count OUT NOCOPY NUMBER,
6336 x_msg_data OUT NOCOPY VARCHAR2
6337 )
6338 AS
6339
6340 /* (1) check template exists */
6341 CURSOR c_chk_template (p_template_terr_id NUMBER) IS
6342 SELECT 'X'
6343 FROM jtf_terr_ALL j
6344 WHERE j.terr_id = p_template_terr_id
6345 AND j.template_flag = 'Y';
6346
6347
6348 /* (2) check that at least 1 dynamic is specified for use in generation */
6349 CURSOR c_chk_qual_mode (p_template_terr_id NUMBER) IS
6350 SELECT COUNT(*)
6351 FROM jtf_terr_qual j
6352 WHERE j.terr_id = p_template_terr_id
6353 AND j.qualifier_mode = 'DYNAMIC';
6354
6355 l_terr_id NUMBER := 0;
6356 l_qualifier_code VARCHAR2(30);
6357 l_qualifier_name VARCHAR2(60);
6358
6359 l_csr_rtn VARCHAR2(1);
6360 l_use_to_name_count NUMBER := 0;
6361 l_dynamic_qual_count NUMBER := 0;
6362
6363 BEGIN
6364
6365 --dbms_output('Validate_Template_Record: Entering API');
6366
6367 -- Initialize the status to success
6368 x_return_status := FND_API.G_RET_STS_SUCCESS;
6369
6370 /* (1) check template exists */
6371 OPEN c_chk_template (p_template_terr_id);
6372 FETCH c_chk_template INTO l_csr_rtn;
6373 IF (c_chk_template%NOTFOUND) THEN
6374
6375 fnd_message.set_name('JTF', 'JTF_TERR_INVALID_TEMPLATE');
6376 --fnd_msg_pub.add;
6377 x_return_status := FND_API.G_RET_STS_ERROR;
6378
6379 END IF;
6380 CLOSE c_chk_template;
6381
6382 /* (3) check that at least 1 qualifier is specified for use in generation */
6383 OPEN c_chk_qual_mode(p_template_terr_id);
6384 FETCH c_chk_qual_mode INTO l_dynamic_qual_count;
6385
6386 --arpatel 07/13 bug#1872642
6387 --IF (c_chk_qual_mode%NOTFOUND) THEN
6388
6389 IF (l_dynamic_qual_count = 0) THEN
6390 fnd_message.set_name ('JTF', 'JTF_TERR_NO_DYNAMIC_QUALIFIERS');
6391 fnd_msg_pub.add;
6392 x_return_status := FND_API.G_RET_STS_ERROR;
6393
6394 END IF;
6395 CLOSE c_chk_qual_mode;
6396
6397 /* (4) lock the template so that no other user can use that template for
6398 ** generation or update the template
6399 */
6400 BEGIN
6401
6402 --OPEN c_lock_template (p_template_terr_id);
6403
6404 SELECT j1.terr_id
6405 INTO l_terr_id
6406 FROM jtf_terr j1
6407 WHERE j1.terr_id = p_template_terr_id
6408 FOR UPDATE NOWAIT;
6409
6410 EXCEPTION
6411 WHEN OTHERS THEN
6412 fnd_message.set_name('JTF','JTF_TERR_TEMPLATE_LOCKED');
6413 x_return_status := FND_API.G_RET_STS_ERROR;
6414 END; /* block for validation (4) */
6415
6416 --dbms_output('Validate_Template_Record: x_return_status = '|| x_return_status);
6417
6418 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6419 RAISE FND_API.G_EXC_ERROR;
6420 END IF;
6421
6422 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
6423 p_data => x_msg_data);
6424
6425 EXCEPTION
6426 WHEN FND_API.G_EXC_ERROR THEN
6427 --dbms_output('Validate_Template_Record: FND_API.G_EXC_ERROR');
6428 x_return_status := FND_API.G_RET_STS_ERROR ;
6429 FND_MSG_PUB.Count_And_Get
6430 ( P_count => x_msg_count,
6431 P_data => x_msg_data
6432 );
6433
6434 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6435 --dbms_output('Validate_Template_Record: FND_API.G_EXC_UNEXPECTED_ERROR');
6436 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6437 FND_MSG_PUB.Count_And_Get
6438 ( P_count => x_msg_count,
6439 P_data => x_msg_data
6440 );
6441
6442 WHEN OTHERS THEN
6443 --dbms_output('Validate_Template_Record: OTHERS - ' || SQLERRM);
6444 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6445 FND_MSG_PUB.Count_And_Get
6446 ( P_count => x_msg_count,
6447 P_data => x_msg_data
6448 );
6449
6450 END validate_template_record;
6451
6452 /*--------------------------------------------------------------------------------------*/
6453 /* 1. returns template territory record
6454 ** 2. returns number of territories that will be generated
6455 ** 3. returns a table of terr usages for the territory
6456 ** 4. returns a table of terr qual type usgs for the territory
6457 */
6458 PROCEDURE initialise ( p_template_terr_id IN NUMBER
6459 , x_tmpl_terr_rec OUT NOCOPY Terr_All_Rec_Type
6460 , x_num_gen_terr OUT NOCOPY NUMBER
6461 , x_tmpl_usgs_tbl OUT NOCOPY Terr_Usgs_Tbl_Type
6462 , x_tmpl_qtype_usgs_tbl OUT NOCOPY Terr_QualTypeUsgs_Tbl_Type) IS
6463
6464 /* cursor to get template territory's setails */
6465 CURSOR c_get_terr ( p_template_terr_id NUMBER ) IS
6466 SELECT j1.TERR_ID
6467 , j1.LAST_UPDATE_DATE
6468 , j1.LAST_UPDATED_BY
6469 , j1.CREATION_DATE
6470 , j1.CREATED_BY
6471 , j1.LAST_UPDATE_LOGIN
6472 , j1.APPLICATION_SHORT_NAME
6473 , j1.NAME
6474 , j1.ENABLED_FLAG
6475 , j1.REQUEST_ID
6476 , j1.PROGRAM_APPLICATION_ID
6477 , j1.PROGRAM_ID
6478 , j1.PROGRAM_UPDATE_DATE
6479 , j1.START_DATE_ACTIVE
6480 , j1.RANK
6481 , j1.END_DATE_ACTIVE
6482 , j1.DESCRIPTION
6483 , j1.UPDATE_FLAG
6484 , j1.AUTO_ASSIGN_RESOURCES_FLAG
6485 , j1.PLANNED_FLAG
6486 , j1.TERRITORY_TYPE_ID
6487 , j1.PARENT_TERRITORY_ID
6488 , j1.TEMPLATE_FLAG
6489 , j1.TEMPLATE_TERRITORY_ID
6490 , j1.ESCALATION_TERRITORY_FLAG
6491 , j1.ESCALATION_TERRITORY_ID
6492 , j1.OVERLAP_ALLOWED_FLAG
6493 , j1.ATTRIBUTE_CATEGORY
6494 , j1.ATTRIBUTE1
6495 , j1.ATTRIBUTE2
6496 , j1.ATTRIBUTE3
6497 , j1.ATTRIBUTE4
6498 , j1.ATTRIBUTE5
6499 , j1.ATTRIBUTE6
6500 , j1.ATTRIBUTE7
6501 , j1.ATTRIBUTE8
6502 , j1.ATTRIBUTE9
6503 , j1.ATTRIBUTE10
6504 , j1.ATTRIBUTE11
6505 , j1.ATTRIBUTE12
6506 , j1.ATTRIBUTE13
6507 , j1.ATTRIBUTE14
6508 , j1.ATTRIBUTE15
6509 , j1.ORG_ID
6510 , j1.NUM_WINNERS
6511 FROM jtf_terr j1
6512 WHERE j1.terr_id = p_template_terr_id;
6513
6514 /* cursor to get the number of territories that will be generated */
6515 CURSOR c_get_max_value_set (p_template_terr_id NUMBER) IS
6516 SELECT MAX (j1.VALUE_SET)
6517 FROM jtf_terr_values j1, jtf_terr_qual j2, jtf_terr j3
6518 WHERE j1.terr_qual_id = j2.terr_qual_id
6519 AND j2.terr_id = j3.terr_id
6520 AND j3.terr_id = p_template_terr_id
6521 AND j2.qualifier_mode = 'DYNAMIC'
6522 GROUP BY j2.qual_usg_id;
6523
6524 /* cursor to get territory's usages */
6525 CURSOR c_get_terr_usgs (p_template_terr_id NUMBER) IS
6526 SELECT j1.TERR_USG_ID
6527 , j1.SOURCE_ID
6528 , j1.TERR_ID
6529 , j1.LAST_UPDATE_DATE
6530 , j1.LAST_UPDATED_BY
6531 , j1.CREATION_DATE
6532 , j1.CREATED_BY
6533 , j1.LAST_UPDATE_LOGIN
6534 , j1.ORG_ID
6535 FROM jtf_terr_usgs j1
6536 WHERE j1.terr_id = p_template_terr_id;
6537
6538 /* cursor to get territory's qual type usages */
6539 CURSOR c_get_terr_qtype_usgs (p_template_terr_id NUMBER) IS
6540 SELECT j1.TERR_QTYPE_USG_ID
6541 , j1.TERR_ID
6542 , j1.QUAL_TYPE_USG_ID
6543 , j1.LAST_UPDATE_DATE
6544 , j1.LAST_UPDATED_BY
6545 , j1.CREATION_DATE
6546 , j1.CREATED_BY
6547 , j1.LAST_UPDATE_LOGIN
6548 , j1.ORG_ID
6549 from jtf_terr_qtype_usgs j1
6550 WHERE j1.terr_id = p_template_terr_id;
6551
6552 l_product NUMBER := 1;
6553 l_num_gen_terr NUMBER := 1;
6554
6555 /* table counters */
6556 i NUMBER := 0;
6557 j NUMBER := 0;
6558
6559 BEGIN
6560
6561
6562 --dbms_output('Initialise: start');
6563
6564 /* load the template record */
6565 OPEN c_get_terr (p_template_terr_id);
6566 FETCH c_get_terr INTO
6567 x_tmpl_terr_rec.TERR_ID
6568 , x_tmpl_terr_rec.LAST_UPDATE_DATE
6569 , x_tmpl_terr_rec.LAST_UPDATED_BY
6570 , x_tmpl_terr_rec.CREATION_DATE
6571 , x_tmpl_terr_rec.CREATED_BY
6572 , x_tmpl_terr_rec.LAST_UPDATE_LOGIN
6573 , x_tmpl_terr_rec.APPLICATION_SHORT_NAME
6574 , x_tmpl_terr_rec.NAME
6575 , x_tmpl_terr_rec.ENABLED_FLAG
6576 , x_tmpl_terr_rec.REQUEST_ID
6577 , x_tmpl_terr_rec.PROGRAM_APPLICATION_ID
6578 , x_tmpl_terr_rec.PROGRAM_ID
6579 , x_tmpl_terr_rec.PROGRAM_UPDATE_DATE
6580 , x_tmpl_terr_rec.START_DATE_ACTIVE
6581 , x_tmpl_terr_rec.RANK
6582 , x_tmpl_terr_rec.END_DATE_ACTIVE
6583 , x_tmpl_terr_rec.DESCRIPTION
6584 , x_tmpl_terr_rec.UPDATE_FLAG
6585 , x_tmpl_terr_rec.AUTO_ASSIGN_RESOURCES_FLAG
6586 , x_tmpl_terr_rec.PLANNED_FLAG
6587 , x_tmpl_terr_rec.TERRITORY_TYPE_ID
6588 , x_tmpl_terr_rec.PARENT_TERRITORY_ID
6589 , x_tmpl_terr_rec.TEMPLATE_FLAG
6590 , x_tmpl_terr_rec.TEMPLATE_TERRITORY_ID
6591 , x_tmpl_terr_rec.ESCALATION_TERRITORY_FLAG
6592 , x_tmpl_terr_rec.ESCALATION_TERRITORY_ID
6593 , x_tmpl_terr_rec.OVERLAP_ALLOWED_FLAG
6594 , x_tmpl_terr_rec.ATTRIBUTE_CATEGORY
6595 , x_tmpl_terr_rec.ATTRIBUTE1
6596 , x_tmpl_terr_rec.ATTRIBUTE2
6597 , x_tmpl_terr_rec.ATTRIBUTE3
6598 , x_tmpl_terr_rec.ATTRIBUTE4
6599 , x_tmpl_terr_rec.ATTRIBUTE5
6600 , x_tmpl_terr_rec.ATTRIBUTE6
6601 , x_tmpl_terr_rec.ATTRIBUTE7
6602 , x_tmpl_terr_rec.ATTRIBUTE8
6603 , x_tmpl_terr_rec.ATTRIBUTE9
6604 , x_tmpl_terr_rec.ATTRIBUTE10
6605 , x_tmpl_terr_rec.ATTRIBUTE11
6606 , x_tmpl_terr_rec.ATTRIBUTE12
6607 , x_tmpl_terr_rec.ATTRIBUTE13
6608 , x_tmpl_terr_rec.ATTRIBUTE14
6609 , x_tmpl_terr_rec.ATTRIBUTE15
6610 , x_tmpl_terr_rec.ORG_ID
6611 , x_tmpl_terr_rec.NUM_WINNERS;
6612
6613 CLOSE c_get_terr;
6614
6615 --dbms_output('Initialise: [1]');
6616
6617 /* get the number of territories that will be generated
6618 ** this is the product (X) of the maximum value_sets for
6619 ** each dynamic qualifier
6620 */
6621 OPEN c_get_max_value_set (p_template_terr_id);
6622 LOOP
6623
6624 FETCH c_get_max_value_set INTO l_product;
6625 EXIT WHEN c_get_max_value_set%NOTFOUND;
6626
6627 l_num_gen_terr := l_num_gen_terr * l_product;
6628
6629 END LOOP;
6630 CLOSE c_get_max_value_set;
6631
6632 x_num_gen_terr := l_num_gen_terr;
6633
6634 --dbms_output('Initialise: Value of x_num_gen_terr = '||TO_CHAR(x_num_gen_terr));
6635
6636 /* load terr usages */
6637 OPEN c_get_terr_usgs (p_template_terr_id);
6638 LOOP
6639 FETCH c_get_terr_usgs INTO
6640 x_tmpl_usgs_tbl(i).TERR_USG_ID
6641 , x_tmpl_usgs_tbl(i).SOURCE_ID
6642 , x_tmpl_usgs_tbl(i).TERR_ID
6643 , x_tmpl_usgs_tbl(i).LAST_UPDATE_DATE
6644 , x_tmpl_usgs_tbl(i).LAST_UPDATED_BY
6645 , x_tmpl_usgs_tbl(i).CREATION_DATE
6646 , x_tmpl_usgs_tbl(i).CREATED_BY
6647 , x_tmpl_usgs_tbl(i).LAST_UPDATE_LOGIN
6648 , x_tmpl_usgs_tbl(i).ORG_ID;
6649
6650 EXIT WHEN c_get_terr_usgs%NOTFOUND;
6651 --dbms_output('Initialise: Value of i = '||TO_CHAR(i) || ' source_id = ' || x_tmpl_usgs_tbl(i).source_id);
6652 i := i + 1;
6653 END LOOP;
6654 CLOSE c_get_terr_usgs;
6655
6656 /* load terr qual type usages */
6657 OPEN c_get_terr_qtype_usgs (p_template_terr_id);
6658 LOOP
6659 FETCH c_get_terr_qtype_usgs INTO
6660 x_tmpl_qtype_usgs_tbl(j).TERR_QUAL_TYPE_USG_ID
6661 , x_tmpl_qtype_usgs_tbl(j).TERR_ID
6662 , x_tmpl_qtype_usgs_tbl(j).QUAL_TYPE_USG_ID
6663 , x_tmpl_qtype_usgs_tbl(j).LAST_UPDATE_DATE
6664 , x_tmpl_qtype_usgs_tbl(j).LAST_UPDATED_BY
6665 , x_tmpl_qtype_usgs_tbl(j).CREATION_DATE
6666 , x_tmpl_qtype_usgs_tbl(j).CREATED_BY
6667 , x_tmpl_qtype_usgs_tbl(j).LAST_UPDATE_LOGIN
6668 , x_tmpl_qtype_usgs_tbl(j).ORG_ID;
6669
6670 EXIT WHEN c_get_terr_qtype_usgs%NOTFOUND;
6671 --dbms_output('Initialise: Value of j = '||TO_CHAR(j) || ' qual_type_usg_id = ' || x_tmpl_qtype_usgs_tbl(j).qual_type_usg_id);
6672 j := j + 1;
6673 END LOOP;
6674 CLOSE c_get_terr_qtype_usgs;
6675
6676
6677 END initialise;
6678
6679
6680 /*--------------------------------------------------------------------------------------*/
6681 PROCEDURE create_new_terr( p_template_terr_rec IN Terr_All_Rec_Type
6682 , p_num IN NUMBER
6683 , x_new_terr_id OUT NOCOPY NUMBER )
6684 IS
6685
6686 /* local standard API variables */
6687 l_return_status VARCHAR2(200);
6688 l_msg_count NUMBER;
6689 l_msg_data VARCHAR2(2000);
6690
6691 /* local variables */
6692 l_new_terr_rec Terr_All_Rec_Type;
6693 l_terr_out_rec Terr_All_Out_Rec_Type;
6694 l_new_terr_id NUMBER;
6695
6696 BEGIN
6697
6698 --dbms_output('create_new_terr START');
6699
6700 l_new_terr_rec.TERR_ID := FND_API.G_MISS_NUM;
6701 l_new_terr_rec.LAST_UPDATE_DATE := SYSDATE;
6702 l_new_terr_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
6703 l_new_terr_rec.CREATION_DATE := SYSDATE;
6704 l_new_terr_rec.CREATED_BY := FND_GLOBAL.USER_ID;
6705 l_new_terr_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
6706 l_new_terr_rec.APPLICATION_SHORT_NAME := FND_GLOBAL.APPLICATION_SHORT_NAME;
6707
6708 /* name of new territory is derived from template name */
6709 l_new_terr_rec.NAME := p_template_terr_rec.name ||
6710 ' - ' || ' #';
6711
6712 l_new_terr_rec.ENABLED_FLAG := 'Y';
6713 l_new_terr_rec.REQUEST_ID := FND_API.G_MISS_NUM;
6714 l_new_terr_rec.PROGRAM_APPLICATION_ID := FND_API.G_MISS_NUM;
6715 l_new_terr_rec.PROGRAM_ID := FND_API.G_MISS_NUM;
6716 l_new_terr_rec.PROGRAM_UPDATE_DATE := FND_API.G_MISS_DATE;
6717 l_new_terr_rec.START_DATE_ACTIVE := p_template_terr_rec.start_date_active;
6718 l_new_terr_rec.RANK := p_template_terr_rec.rank;
6719 l_new_terr_rec.END_DATE_ACTIVE := p_template_terr_rec.end_date_active;
6720 l_new_terr_rec.DESCRIPTION := p_template_terr_rec.description;
6721 l_new_terr_rec.ORG_ID := p_template_terr_rec.org_id;
6722 l_new_terr_rec.UPDATE_FLAG := p_template_terr_rec.update_flag;
6723 l_new_terr_rec.AUTO_ASSIGN_RESOURCES_FLAG := p_template_terr_rec.auto_assign_resources_flag;
6724 l_new_terr_rec.PLANNED_FLAG := p_template_terr_rec.planned_flag;
6725 l_new_terr_rec.TERRITORY_TYPE_ID := p_template_terr_rec.territory_type_id;
6726 l_new_terr_rec.PARENT_TERRITORY_ID := p_template_terr_rec.parent_territory_id;
6727 l_new_terr_rec.TEMPLATE_FLAG := 'N';
6728 l_new_terr_rec.TEMPLATE_TERRITORY_ID := p_template_terr_rec.terr_id;
6729 l_new_terr_rec.ESCALATION_TERRITORY_FLAG := p_template_terr_rec.escalation_territory_flag;
6730 l_new_terr_rec.ESCALATION_TERRITORY_ID := p_template_terr_rec.escalation_territory_id;
6731 l_new_terr_rec.OVERLAP_ALLOWED_FLAG := p_template_terr_rec.overlap_allowed_flag;
6732 l_new_terr_rec.ATTRIBUTE_CATEGORY := p_template_terr_rec.attribute_category;
6733 l_new_terr_rec.ATTRIBUTE1 := p_template_terr_rec.attribute1;
6734 l_new_terr_rec.ATTRIBUTE2 := p_template_terr_rec.attribute2;
6735 l_new_terr_rec.ATTRIBUTE3 := p_template_terr_rec.attribute3;
6736 l_new_terr_rec.ATTRIBUTE4 := p_template_terr_rec.attribute4;
6737 l_new_terr_rec.ATTRIBUTE5 := p_template_terr_rec.attribute5;
6738 l_new_terr_rec.ATTRIBUTE6 := p_template_terr_rec.attribute6;
6739 l_new_terr_rec.ATTRIBUTE7 := p_template_terr_rec.attribute7;
6740 l_new_terr_rec.ATTRIBUTE8 := p_template_terr_rec.attribute8;
6741 l_new_terr_rec.ATTRIBUTE9 := p_template_terr_rec.attribute9;
6742 l_new_terr_rec.ATTRIBUTE10 := p_template_terr_rec.attribute10;
6743 l_new_terr_rec.ATTRIBUTE11 := p_template_terr_rec.attribute11;
6744 l_new_terr_rec.ATTRIBUTE12 := p_template_terr_rec.attribute12;
6745 l_new_terr_rec.ATTRIBUTE13 := p_template_terr_rec.attribute13;
6746 l_new_terr_rec.ATTRIBUTE14 := p_template_terr_rec.attribute14;
6747 l_new_terr_rec.ATTRIBUTE15 := p_template_terr_rec.attribute15;
6748 l_new_terr_rec.ORG_ID := p_template_terr_rec.org_id;
6749 l_new_terr_rec.NUM_WINNERS := p_template_terr_rec.NUM_WINNERS;
6750
6751 /* create the territory record */
6752 create_territory_record (
6753 P_Api_Version_Number => 1.0,
6754 P_Init_Msg_List => FND_API.G_TRUE,
6755 P_Commit => FND_API.G_FALSE,
6756 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
6757 P_Terr_All_Rec => l_new_terr_rec,
6758 X_Return_Status => l_return_status,
6759 X_Msg_Count => l_msg_count,
6760 X_Msg_Data => l_msg_data,
6761 X_Terr_Id => l_new_terr_id,
6762 X_Terr_All_Out_Rec => l_terr_out_rec );
6763
6764 /* store the terr_id */
6765 l_new_terr_rec.TERR_ID := l_new_terr_id;
6766 /* update the territory's name */
6767 l_new_terr_rec.NAME := l_new_terr_rec.name || TO_CHAR(l_new_terr_id);
6768
6769 update_territory_record (
6770 P_Api_Version_Number => 1.0,
6771 P_Init_Msg_List => FND_API.G_TRUE,
6772 P_Commit => FND_API.G_FALSE,
6773 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
6774 P_Terr_All_Rec => l_new_terr_rec,
6775 X_Return_Status => l_return_status,
6776 X_Msg_Count => l_msg_count,
6777 X_Msg_Data => l_msg_data,
6778 X_Terr_All_Out_Rec => l_terr_out_rec );
6779
6780 x_new_terr_id := l_new_terr_id;
6781
6782 --dbms_output( 'create_new_terr END => l_return_status = ' || l_return_status || ' name = ' || l_new_terr_rec.NAME ||' x_new_terr_id = ' || TO_CHAR (x_new_terr_id));
6783
6784 END create_new_terr;
6785
6786 /*--------------------------------------------------------------------------------------*/
6787 PROCEDURE create_copied_terr( p_copied_terr_rec IN Terr_All_Rec_Type
6788 , p_new_terr_rec IN Terr_All_Rec_Type
6789 , p_num IN NUMBER
6790 , p_copy_hierarchy_flag IN VARCHAR2
6791 , p_first_terr_node_flag IN VARCHAR2
6792 , x_new_terr_id OUT NOCOPY NUMBER )
6793 IS
6794
6795 /* local standard API variables */
6796 l_return_status VARCHAR2(200);
6797 l_msg_count NUMBER;
6798 l_msg_data VARCHAR2(2000);
6799
6800 /* local variables */
6801 l_new_terr_rec Terr_All_Rec_Type;
6802 l_terr_out_rec Terr_All_Out_Rec_Type;
6803 l_new_terr_id NUMBER;
6804
6805 BEGIN
6806
6807 --dbms_output('create_copied_terr START');
6808
6809 l_new_terr_rec.TERR_ID := FND_API.G_MISS_NUM;
6810 l_new_terr_rec.LAST_UPDATE_DATE := SYSDATE;
6811 l_new_terr_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
6812 l_new_terr_rec.CREATION_DATE := SYSDATE;
6813 l_new_terr_rec.CREATED_BY := FND_GLOBAL.USER_ID;
6814 l_new_terr_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
6815 l_new_terr_rec.APPLICATION_SHORT_NAME := FND_GLOBAL.APPLICATION_SHORT_NAME;
6816
6817 -- dbms_output.put_line('JTF_TERRITORY_PVT:create_copied_terr:l_new_terr_rec.APPLICATION_SHORT_NAME-' || l_new_terr_rec.APPLICATION_SHORT_NAME);
6818
6819 -- 04/06/01 ARPATEL - START
6820 IF (p_copy_hierarchy_flag = 'Y') THEN
6821
6822 IF (p_first_terr_node_flag = 'Y') THEN
6823 l_new_terr_rec.NAME := p_new_terr_rec.name;
6824 l_new_terr_rec.START_DATE_ACTIVE := p_new_terr_rec.start_date_active;
6825 l_new_terr_rec.END_DATE_ACTIVE := p_new_terr_rec.end_date_active;
6826 l_new_terr_rec.DESCRIPTION := p_new_terr_rec.description;
6827 l_new_terr_rec.RANK := p_new_terr_rec.rank;
6828 ELSE
6829 l_new_terr_rec.NAME := p_copied_terr_rec.name;
6830 l_new_terr_rec.RANK := p_copied_terr_rec.rank;
6831 l_new_terr_rec.DESCRIPTION := p_copied_terr_rec.description;
6832 l_new_terr_rec.START_DATE_ACTIVE := p_copied_terr_rec.start_date_active;
6833 l_new_terr_rec.END_DATE_ACTIVE := p_copied_terr_rec.end_date_active;
6834 END IF;
6835
6836 ELSE
6837
6838 /* set new territory record details */
6839 l_new_terr_rec.NAME := p_new_terr_rec.name;
6840 l_new_terr_rec.START_DATE_ACTIVE := p_new_terr_rec.start_date_active;
6841 l_new_terr_rec.END_DATE_ACTIVE := p_new_terr_rec.end_date_active;
6842 l_new_terr_rec.DESCRIPTION := p_new_terr_rec.description;
6843 l_new_terr_rec.RANK := p_new_terr_rec.rank;
6844 END IF;
6845 -- 04/06/01 ARPATEL - END
6846
6847 l_new_terr_rec.ENABLED_FLAG := 'Y';
6848 l_new_terr_rec.REQUEST_ID := FND_API.G_MISS_NUM;
6849 l_new_terr_rec.PROGRAM_APPLICATION_ID := FND_API.G_MISS_NUM;
6850 l_new_terr_rec.PROGRAM_ID := FND_API.G_MISS_NUM;
6851 l_new_terr_rec.PROGRAM_UPDATE_DATE := FND_API.G_MISS_DATE;
6852
6853 l_new_terr_rec.ORG_ID := p_copied_terr_rec.org_id;
6854 l_new_terr_rec.UPDATE_FLAG := 'Y'; --- p_copied_terr_rec.update_flag;
6855 l_new_terr_rec.AUTO_ASSIGN_RESOURCES_FLAG := p_copied_terr_rec.auto_assign_resources_flag;
6856 l_new_terr_rec.PLANNED_FLAG := p_copied_terr_rec.planned_flag;
6857 l_new_terr_rec.TERRITORY_TYPE_ID := p_copied_terr_rec.territory_type_id;
6858 l_new_terr_rec.PARENT_TERRITORY_ID := p_copied_terr_rec.parent_territory_id;
6859 l_new_terr_rec.TEMPLATE_FLAG := p_copied_terr_rec.template_flag;
6860 l_new_terr_rec.TEMPLATE_TERRITORY_ID := FND_API.G_MISS_NUM;
6861 l_new_terr_rec.ESCALATION_TERRITORY_FLAG := p_copied_terr_rec.escalation_territory_flag;
6862 l_new_terr_rec.ESCALATION_TERRITORY_ID := p_copied_terr_rec.escalation_territory_id;
6863 l_new_terr_rec.OVERLAP_ALLOWED_FLAG := p_copied_terr_rec.overlap_allowed_flag;
6864 l_new_terr_rec.ATTRIBUTE_CATEGORY := p_copied_terr_rec.attribute_category;
6865 l_new_terr_rec.ATTRIBUTE1 := p_copied_terr_rec.attribute1;
6866 l_new_terr_rec.ATTRIBUTE2 := p_copied_terr_rec.attribute2;
6867 l_new_terr_rec.ATTRIBUTE3 := p_copied_terr_rec.attribute3;
6868 l_new_terr_rec.ATTRIBUTE4 := p_copied_terr_rec.attribute4;
6869 l_new_terr_rec.ATTRIBUTE5 := p_copied_terr_rec.attribute5;
6870 l_new_terr_rec.ATTRIBUTE6 := p_copied_terr_rec.attribute6;
6871 l_new_terr_rec.ATTRIBUTE7 := p_copied_terr_rec.attribute7;
6872 l_new_terr_rec.ATTRIBUTE8 := p_copied_terr_rec.attribute8;
6873 l_new_terr_rec.ATTRIBUTE9 := p_copied_terr_rec.attribute9;
6874 l_new_terr_rec.ATTRIBUTE10 := p_copied_terr_rec.attribute10;
6875 l_new_terr_rec.ATTRIBUTE11 := p_copied_terr_rec.attribute11;
6876 l_new_terr_rec.ATTRIBUTE12 := p_copied_terr_rec.attribute12;
6877 l_new_terr_rec.ATTRIBUTE13 := p_copied_terr_rec.attribute13;
6878 l_new_terr_rec.ATTRIBUTE14 := p_copied_terr_rec.attribute14;
6879 l_new_terr_rec.ATTRIBUTE15 := p_copied_terr_rec.attribute15;
6880 l_new_terr_rec.ORG_ID := p_copied_terr_rec.org_id;
6881 l_new_terr_rec.NUM_WINNERS := p_copied_terr_rec.NUM_WINNERS;
6882
6883 /* create the territory record */
6884 create_territory_record (
6885 P_Api_Version_Number => 1.0,
6886 P_Init_Msg_List => FND_API.G_TRUE,
6887 P_Commit => FND_API.G_FALSE,
6888 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
6889 P_Terr_All_Rec => l_new_terr_rec,
6890 X_Return_Status => l_return_status,
6891 X_Msg_Count => l_msg_count,
6892 X_Msg_Data => l_msg_data,
6893 X_Terr_Id => l_new_terr_id,
6894 X_Terr_All_Out_Rec => l_terr_out_rec );
6895
6896
6897 /* update the territory's name */
6898 l_new_terr_rec.NAME := l_new_terr_rec.name || TO_CHAR(l_new_terr_id);
6899
6900 x_new_terr_id := l_new_terr_id;
6901
6902 --dbms_output( 'create_copied_terr END => l_return_status = ' || l_return_status || ' name = ' || l_new_terr_rec.NAME || ' x_new_terr_id = ' || TO_CHAR (x_new_terr_id));
6903
6904 END create_copied_terr;
6905
6906
6907 /*--------------------------------------------------------------------------------------*/
6908 PROCEDURE create_new_terr_usgs( p_new_terr_id IN NUMBER
6909 , p_terr_usgs_tbl IN Terr_Usgs_Tbl_Type )
6910 IS
6911 /* local standard API variables */
6912 l_api_version_number NUMBER := 1.0;
6913 l_return_status VARCHAR2(200);
6914 l_msg_count NUMBER;
6915 l_msg_data VARCHAR2(2000);
6916
6917 /* local record variables */
6918 l_terr_usgs_rec Terr_Usgs_Rec_Type;
6919 l_terr_usgs_tbl Terr_Usgs_Tbl_Type;
6920 l_terr_usgs_out_tbl Terr_Usgs_Out_Tbl_Type;
6921
6922 BEGIN
6923
6924 --dbms_output('create_new_terr_usgs_rec START');
6925
6926 FOR i IN 0..p_terr_usgs_tbl.COUNT-1 LOOP
6927
6928 /* Instantiate record items from FORM items */
6929 l_terr_usgs_rec.TERR_USG_ID := FND_API.G_MISS_NUM;
6930 l_terr_usgs_rec.LAST_UPDATE_DATE := SYSDATE;
6931 l_terr_usgs_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
6932 l_terr_usgs_rec.CREATION_DATE := SYSDATE;
6933 l_terr_usgs_rec.CREATED_BY := FND_GLOBAL.USER_ID;
6934 l_terr_usgs_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
6935 l_terr_usgs_rec.TERR_ID := p_new_terr_id;
6936
6937 l_terr_usgs_rec.SOURCE_ID := p_terr_usgs_tbl(i).source_id;
6938 l_terr_usgs_rec.ORG_ID := p_terr_usgs_tbl(i).org_id;
6939
6940 --dbms_output( ' Value of p_terr_usgs_tbl(i).source_id = ' || TO_CHAR(p_terr_usgs_tbl(i).source_id));
6941
6942 l_terr_usgs_tbl(1) := l_terr_usgs_rec;
6943
6944 /* 11i - territory can only have one usage */
6945 create_territory_usages (
6946 P_Api_Version_Number => l_api_version_number,
6947 P_Init_Msg_List => FND_API.G_TRUE,
6948 P_Commit => FND_API.G_FALSE,
6949 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
6950 P_Terr_id => p_new_terr_id,
6951 P_Terr_Usgs_Tbl => l_terr_usgs_tbl,
6952 X_Return_Status => l_return_status,
6953 X_Msg_Count => l_msg_count,
6954 X_Msg_Data => l_msg_data,
6955 X_Terr_Usgs_Out_Tbl => l_terr_usgs_out_Tbl );
6956
6957 --dbms_output( 'create_new_terr_usgs_rec END: l_return_status = ' || l_return_status || ' terr_usg_id = ' || TO_CHAR(l_terr_usgs_out_tbl(1).terr_usg_id));
6958
6959 END LOOP;
6960
6961 END create_new_terr_usgs;
6962
6963 /*--------------------------------------------------------------------------------------*/
6964 PROCEDURE create_new_terr_qtype_usgs (
6965 p_new_terr_id IN NUMBER
6966 , p_terr_qtype_usgs_tbl IN Terr_QualTypeUsgs_Tbl_Type ) IS
6967
6968 /* local standard API variables */
6969 l_api_version_number NUMBER := 1.0;
6970 l_return_status VARCHAR2(200);
6971 l_msg_count NUMBER;
6972 l_msg_data VARCHAR2(2000);
6973
6974 /* local record variables */
6975 l_terr_qtype_usgs_rec Terr_QualTypeUsgs_Rec_Type;
6976 l_terr_qtype_usgs_out_rec Terr_QualTypeUsgs_Out_Rec_Type;
6977 l_terr_qtype_usg_id NUMBER;
6978
6979 BEGIN
6980
6981 --dbms_output('create_new_terr_qtype_usg_rec START');
6982
6983 FOR i IN 0..p_terr_qtype_usgs_tbl.COUNT-1 LOOP
6984
6985 /* Instantiate record items from appropriate items */
6986 l_terr_qtype_usgs_rec.TERR_QUAL_TYPE_USG_ID := FND_API.G_MISS_NUM;
6987 l_terr_qtype_usgs_rec.TERR_ID := p_new_terr_id;
6988 l_terr_qtype_usgs_rec.QUAL_TYPE_USG_ID := p_terr_qtype_usgs_tbl(i).qual_type_usg_id;
6989 l_terr_qtype_usgs_rec.LAST_UPDATE_DATE := SYSDATE;
6990 l_terr_qtype_usgs_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
6991 l_terr_qtype_usgs_rec.CREATION_DATE := SYSDATE;
6992 l_terr_qtype_usgs_rec.CREATED_BY := FND_GLOBAL.USER_ID;
6993 l_terr_qtype_usgs_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
6994 l_terr_qtype_usgs_rec.ORG_ID := p_terr_qtype_usgs_tbl(i).org_id;
6995
6996
6997 create_terr_qualtype_usage(
6998 P_Api_Version_Number => l_api_version_number,
6999 P_Init_Msg_List => FND_API.G_TRUE,
7000 P_Commit => FND_API.G_FALSE,
7001 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
7002 P_Terr_Id => p_new_terr_id,
7003 P_Terr_QualTypeUsgs_Rec => l_terr_qtype_usgs_rec,
7004 X_Return_Status => l_return_status,
7005 X_Msg_Count => l_msg_count,
7006 X_Msg_Data => l_msg_data,
7007 X_Terr_QualTypeUsgs_Id => l_terr_qtype_usg_id,
7008 X_Terr_QualTypeUsgs_Out_Rec => l_terr_qtype_usgs_out_rec);
7009
7010 --dbms_output( 'create_new_terr_qtype_usgs END: l_return_status = ' ||l_return_status || ' terr_qtype_usg_id = ' || TO_CHAR(l_terr_qtype_usgs_out_rec.terr_qual_type_usg_id));
7011
7012 END LOOP;
7013
7014 --dbms_output('create_new_terr_qtype_usg_rec END');
7015
7016 END create_new_terr_qtype_usgs;
7017
7018 /*--------------------------------------------------------------------------------------*/
7019 PROCEDURE create_new_terr_qual_rec( p_new_terr_id IN NUMBER
7020 , p_terr_qual_rec IN Terr_Qual_Rec_Type
7021 , x_new_terr_qual_id OUT NOCOPY NUMBER )
7022 IS
7023 /* local standard API variables */
7024 l_api_version_number NUMBER := 1.0;
7025 l_return_status VARCHAR2(200);
7026 l_msg_count NUMBER;
7027 l_msg_data VARCHAR2(2000);
7028
7029 /* local record variables */
7030 l_new_terr_qual_rec Terr_Qual_Rec_Type;
7031 l_terr_qual_out_rec Terr_Qual_Out_Rec_Type;
7032
7033 l_new_terr_qual_id NUMBER;
7034
7035 /* START OF 1520656 BUG FIX - JDOCHERT 12/07 */
7036 CURSOR c_get_terr(lp_terr_id NUMBER)
7037 IS SELECT 'Y'
7038 FROM jtf_terr_ALL
7039 WHERE template_flag = 'Y'
7040 AND terr_id = lp_terr_id;
7041
7042 l_template_flag VARCHAR2(1);
7043 /* END OF 1520656 BUG FIX - JDOCHERT 12/07 */
7044
7045 BEGIN
7046
7047 --dbms_output('create_new_terr_qual_rec START');
7048
7049 /* Instantiate record items from appropriate template items */
7050 l_new_terr_qual_rec.Rowid := NULL;
7051 l_new_terr_qual_rec.TERR_QUAL_ID := FND_API.G_MISS_NUM;
7052 l_new_terr_qual_rec.LAST_UPDATE_DATE := SYSDATE;
7053 l_new_terr_qual_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
7054 l_new_terr_qual_rec.CREATION_DATE := SYSDATE;
7055 l_new_terr_qual_rec.CREATED_BY := FND_GLOBAL.USER_ID;
7056 l_new_terr_qual_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
7057
7058 /* this value is passed into procedure */
7059 l_new_terr_qual_rec.TERR_ID := p_new_terr_id;
7060
7061 l_new_terr_qual_rec.QUAL_USG_ID := p_terr_qual_rec.qual_usg_id;
7062 l_new_terr_qual_rec.USE_TO_NAME_FLAG := p_terr_qual_rec.use_to_name_flag;
7063 l_new_terr_qual_rec.GENERATE_FLAG := p_terr_qual_rec.generate_flag;
7064 l_new_terr_qual_rec.OVERLAP_ALLOWED_FLAG := p_terr_qual_rec.overlap_allowed_flag;
7065 l_new_terr_qual_rec.QUALIFIER_MODE := '';
7066 l_new_terr_qual_rec.ORG_ID := p_terr_qual_rec.org_id;
7067
7068
7069 /* START OF 1520656 BUG FIX - JDOCHERT 12/07 */
7070 OPEN c_get_terr(p_new_terr_id);
7071 FETCH c_get_terr INTO l_template_flag;
7072 CLOSE c_get_terr;
7073
7074 IF (l_template_flag = 'Y') THEN
7075 l_new_terr_qual_rec.QUALIFIER_MODE := p_terr_qual_rec.qualifier_mode;
7076 ELSE
7077 l_new_terr_qual_rec.QUALIFIER_MODE := NULL;
7078 END IF;
7079 /* END OF 1520656 BUG FIX - JDOCHERT 12/07 */
7080
7081 create_terr_qualifier(
7082 P_Api_Version_Number => l_api_version_number,
7083 P_Init_Msg_List => FND_API.G_TRUE,
7084 P_Commit => FND_API.G_FALSE,
7085 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
7086 P_Terr_Id => l_new_terr_qual_rec.terr_id,
7087 P_Terr_Qual_rec => l_new_terr_qual_rec,
7088 X_Return_Status => l_return_status,
7089 X_Msg_Count => l_msg_count,
7090 X_Msg_Data => l_msg_data,
7091 X_Terr_Qual_Id => l_new_terr_qual_id,
7092 X_Terr_Qual_Out_Rec => l_terr_qual_out_rec);
7093
7094
7095 x_new_terr_qual_id := l_new_terr_qual_id;
7096
7097 --dbms_output('create_new_terr_qual_rec END: l_return_status = ' || l_return_status);
7098 --dbms_output('create_new_terr_qual_rec END: terr_qual_id = ' || TO_CHAR(x_new_terr_qual_id));
7099
7100 END create_new_terr_qual_rec;
7101
7102
7103 /*--------------------------------------------------------------------------------------*/
7104 PROCEDURE create_new_terr_value_rec( p_new_terr_id IN NUMBER
7105 , p_new_terr_qual_id IN NUMBER
7106 , p_terr_value_rec IN Terr_Values_Rec_Type
7107 , x_new_terr_value_id OUT NOCOPY NUMBER )
7108 IS
7109 /* local standard API variables */
7110 l_api_version_number NUMBER := 1.0;
7111 l_return_status VARCHAR2(200);
7112 l_msg_count NUMBER;
7113 l_msg_data VARCHAR2(2000);
7114
7115 /* local record variables */
7116 l_new_terr_value_rec Terr_Values_Rec_Type;
7117 l_terr_value_out_rec Terr_Values_Out_Rec_Type;
7118
7119 l_new_terr_value_id NUMBER;
7120
7121 /* START OF 1520656 BUG FIX - JDOCHERT 12/07 */
7122 CURSOR c_get_terr(lp_terr_id NUMBER)
7123 IS SELECT 'Y'
7124 FROM jtf_terr
7125 WHERE template_flag = 'Y'
7126 AND terr_id = lp_terr_id;
7127
7128 l_template_flag VARCHAR2(1);
7129 /* END OF 1520656 BUG FIX - JDOCHERT 12/07 */
7130
7131 BEGIN
7132
7133 --dbms_output('create_new_terr_value_rec START');
7134
7135 /* Instantiate record items from template qualifier value record */
7136 l_new_terr_value_rec.TERR_VALUE_ID := NULL;
7137 l_new_terr_value_rec.LAST_UPDATE_DATE := SYSDATE;
7138 l_new_terr_value_rec.LAST_UPDATED_BY := fnd_global.user_id;
7139 l_new_terr_value_rec.CREATION_DATE := SYSDATE;
7140 l_new_terr_value_rec.CREATED_BY := fnd_global.user_id;
7141 l_new_terr_value_rec.LAST_UPDATE_LOGIN := fnd_global.login_id;
7142
7143 /* this value comes from newly created territory qualifier (above) */
7144 l_new_terr_value_rec.TERR_QUAL_ID := p_new_terr_qual_id;
7145
7146 l_new_terr_value_rec.INCLUDE_FLAG := p_terr_value_rec.include_flag;
7147 l_new_terr_value_rec.COMPARISON_OPERATOR := p_terr_value_rec.comparison_operator;
7148 l_new_terr_value_rec.LOW_VALUE_CHAR := p_terr_value_rec.low_value_char;
7149 l_new_terr_value_rec.HIGH_VALUE_CHAR := p_terr_value_rec.high_value_char;
7150 l_new_terr_value_rec.LOW_VALUE_NUMBER := p_terr_value_rec.low_value_number;
7151 l_new_terr_value_rec.HIGH_VALUE_NUMBER := p_terr_value_rec.high_value_number;
7152 l_new_terr_value_rec.VALUE_SET := NULL;
7153 l_new_terr_value_rec.INTEREST_TYPE_ID := p_terr_value_rec.interest_type_id;
7154 l_new_terr_value_rec.PRIMARY_INTEREST_CODE_ID := p_terr_value_rec.primary_interest_code_id;
7155 l_new_terr_value_rec.SECONDARY_INTEREST_CODE_ID := p_terr_value_rec.secondary_interest_code_id;
7156 l_new_terr_value_rec.CURRENCY_CODE := p_terr_value_rec.currency_code;
7157 l_new_terr_value_rec.ID_USED_FLAG := p_terr_value_rec.id_used_flag;
7158 l_new_terr_value_rec.LOW_VALUE_CHAR_ID := p_terr_value_rec.low_value_char_id;
7159 --l_new_terr_value_rec.QUALIFIER_TBL_INDEX := p_terr_value_rec.qualifier_tbl_index;
7160 l_new_terr_value_rec.ORG_ID := p_terr_value_rec.org_id;
7161 l_new_terr_value_rec.CNR_GROUP_ID := p_terr_value_rec.cnr_group_id;
7162
7163 --arpatel 09/06
7164 l_new_terr_value_rec.VALUE1_ID := p_terr_value_rec.value1_id;
7165 l_new_terr_value_rec.VALUE2_ID := p_terr_value_rec.value2_id;
7166 l_new_terr_value_rec.VALUE3_ID := p_terr_value_rec.value3_id;
7167 l_new_terr_value_rec.VALUE4_ID := p_terr_value_rec.value4_id;
7168
7169 /* START OF 1520656 BUG FIX - JDOCHERT 12/07 */
7170 OPEN c_get_terr(p_new_terr_id);
7171 FETCH c_get_terr INTO l_template_flag;
7172 CLOSE c_get_terr;
7173
7174 IF (l_template_flag = 'Y') THEN
7175 l_new_terr_value_rec.value_set := p_terr_value_rec.value_set;
7176 ELSE
7177 l_new_terr_value_rec.value_set := NULL;
7178 END IF;
7179 /* END OF 1520656 BUG FIX - JDOCHERT 12/07 */
7180
7181 /* insert value */
7182 create_terr_value(
7183 P_Api_Version_Number => 1.0,
7184 P_Init_Msg_List => FND_API.G_TRUE,
7185 P_Commit => FND_API.G_FALSE,
7186 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
7187 P_Terr_Id => p_new_terr_id,
7188 P_Terr_Qual_id => l_new_terr_value_rec.terr_qual_id,
7189 P_Terr_Value_Rec => l_new_terr_value_rec,
7190 X_Return_Status => l_return_status,
7191 X_Msg_Count => l_msg_count,
7192 X_Msg_Data => l_msg_data,
7193 X_Terr_Value_Id => l_new_terr_value_id,
7194 X_Terr_Value_Out_Rec => l_terr_value_out_rec);
7195
7196
7197 x_new_terr_value_id := l_new_terr_value_id;
7198
7199 --dbms_output('create_new_terr_value_rec END: terr_value_id = ' || TO_CHAR(x_new_terr_value_id));
7200
7201 END create_new_terr_value_rec;
7202
7203 /*--------------------------------------------------------------------------------------*/
7204 -- inserts the constant qualifiers and values for copied territories
7205 PROCEDURE insert_copied_qual_values ( p_template_terr_id NUMBER
7206 , p_new_terr_id NUMBER ) IS
7207
7208 /* local standard API variables */
7209 l_api_version_number NUMBER := 1.0;
7210 l_return_status VARCHAR2(200);
7211 l_msg_count NUMBER;
7212 l_msg_data VARCHAR2(2000);
7213
7214 /* cursor to get STATIC qualifiers */
7215 CURSOR c_get_terr_qual (p_template_terr_id NUMBER) IS
7216 SELECT j1.rowid
7217 , j1.TERR_QUAL_ID
7218 , j1.LAST_UPDATE_DATE
7219 , j1.LAST_UPDATED_BY
7220 , j1.CREATION_DATE
7221 , j1.CREATED_BY
7222 , j1.LAST_UPDATE_LOGIN
7223 , j1.TERR_ID
7224 , j1.QUAL_USG_ID
7225 , j1.USE_TO_NAME_FLAG
7226 , j1.GENERATE_FLAG
7227 , j1.OVERLAP_ALLOWED_FLAG
7228 , j1.QUALIFIER_MODE
7229 , j1.ORG_ID
7230 FROM jtf_terr_qual j1
7231 WHERE j1.terr_id = p_template_terr_id;
7232
7233 /* cursor to get values for STATIC qualifiers' values */
7234 CURSOR c_get_terr_value (p_terr_qual_id NUMBER) IS
7235 SELECT j1.TERR_VALUE_ID
7236 , j1.LAST_UPDATE_DATE
7237 , j1.LAST_UPDATED_BY
7238 , j1.CREATION_DATE
7239 , j1.CREATED_BY
7240 , j1.LAST_UPDATE_LOGIN
7241 , j1.TERR_QUAL_ID
7242 , j1.INCLUDE_FLAG
7243 , j1.COMPARISON_OPERATOR
7244 , j1.LOW_VALUE_CHAR
7245 , j1.HIGH_VALUE_CHAR
7246 , j1.LOW_VALUE_NUMBER
7247 , j1.HIGH_VALUE_NUMBER
7248 , j1.VALUE_SET
7249 , j1.INTEREST_TYPE_ID
7250 , j1.PRIMARY_INTEREST_CODE_ID
7251 , j1.SECONDARY_INTEREST_CODE_ID
7252 , j1.CURRENCY_CODE
7253 , j1.ORG_ID
7254 , j1.ID_USED_FLAG
7255 , j1.LOW_VALUE_CHAR_ID
7256 , NULL QUALIFIER_TBL_INDEX
7257 , j1.CNR_GROUP_ID
7258 , j1.VALUE1_ID
7259 , j1.VALUE2_ID
7260 , j1.VALUE3_ID
7261 , j1.VALUE4_ID
7262 FROM jtf_terr_values j1
7263 WHERE j1.terr_qual_id = p_terr_qual_id;
7264
7265 /* local record variables */
7266 l_tmpl_terr_qual_rec Terr_Qual_Rec_Type;
7267
7268 l_tmpl_terr_value_rec Terr_Values_Rec_Type;
7269 l_terr_value_out_rec Terr_Values_Out_Rec_Type;
7270
7271 l_new_terr_qual_id NUMBER;
7272 l_new_terr_value_id NUMBER;
7273
7274 BEGIN
7275
7276 --dbms_output('insert_copied_qual_values START');
7277
7278 /* get the STATIC qualifiers for this template */
7279 OPEN c_get_terr_qual (p_template_terr_id);
7280 LOOP
7281
7282 FETCH c_get_terr_qual INTO
7283 l_tmpl_terr_qual_rec.rowid
7284 , l_tmpl_terr_qual_rec.TERR_QUAL_ID
7285 , l_tmpl_terr_qual_rec.LAST_UPDATE_DATE
7286 , l_tmpl_terr_qual_rec.LAST_UPDATED_BY
7287 , l_tmpl_terr_qual_rec.CREATION_DATE
7288 , l_tmpl_terr_qual_rec.CREATED_BY
7289 , l_tmpl_terr_qual_rec.LAST_UPDATE_LOGIN
7290 , l_tmpl_terr_qual_rec.TERR_ID
7291 , l_tmpl_terr_qual_rec.QUAL_USG_ID
7292 , l_tmpl_terr_qual_rec.USE_TO_NAME_FLAG
7293 , l_tmpl_terr_qual_rec.GENERATE_FLAG
7294 , l_tmpl_terr_qual_rec.OVERLAP_ALLOWED_FLAG
7295 , l_tmpl_terr_qual_rec.QUALIFIER_MODE
7296 , l_tmpl_terr_qual_rec.ORG_ID;
7297
7298 EXIT WHEN c_get_terr_qual%NOTFOUND;
7299
7300 --dbms_output('qual id = ' || l_tmpl_terr_qual_rec.QUAL_USG_ID);
7301
7302 create_new_terr_qual_rec( p_new_terr_id, l_tmpl_terr_qual_rec, l_new_terr_qual_id);
7303
7304 /* get the values for this template qualifier */
7305 OPEN c_get_terr_value (l_tmpl_terr_qual_rec.terr_qual_id);
7306 LOOP
7307
7308 FETCH c_get_terr_value INTO
7309 l_tmpl_terr_value_rec.TERR_VALUE_ID
7310 , l_tmpl_terr_value_rec.LAST_UPDATE_DATE
7311 , l_tmpl_terr_value_rec.LAST_UPDATED_BY
7312 , l_tmpl_terr_value_rec.CREATION_DATE
7313 , l_tmpl_terr_value_rec.CREATED_BY
7314 , l_tmpl_terr_value_rec.LAST_UPDATE_LOGIN
7315 , l_tmpl_terr_value_rec.TERR_QUAL_ID
7316 , l_tmpl_terr_value_rec.INCLUDE_FLAG
7317 , l_tmpl_terr_value_rec.COMPARISON_OPERATOR
7318 , l_tmpl_terr_value_rec.LOW_VALUE_CHAR
7319 , l_tmpl_terr_value_rec.HIGH_VALUE_CHAR
7320 , l_tmpl_terr_value_rec.LOW_VALUE_NUMBER
7321 , l_tmpl_terr_value_rec.HIGH_VALUE_NUMBER
7322 , l_tmpl_terr_value_rec.VALUE_SET
7323 , l_tmpl_terr_value_rec.INTEREST_TYPE_ID
7324 , l_tmpl_terr_value_rec.PRIMARY_INTEREST_CODE_ID
7325 , l_tmpl_terr_value_rec.SECONDARY_INTEREST_CODE_ID
7326 , l_tmpl_terr_value_rec.CURRENCY_CODE
7327 , l_tmpl_terr_value_rec.ORG_ID
7328 , l_tmpl_terr_value_rec.ID_USED_FLAG
7329 , l_tmpl_terr_value_rec.LOW_VALUE_CHAR_ID
7330 , l_tmpl_terr_value_rec.QUALIFIER_TBL_INDEX
7331 , l_tmpl_terr_value_rec.CNR_GROUP_ID
7332 , l_tmpl_terr_value_rec.VALUE1_ID
7333 , l_tmpl_terr_value_rec.VALUE2_ID
7334 , l_tmpl_terr_value_rec.VALUE3_ID
7335 , l_tmpl_terr_value_rec.VALUE4_ID;
7336
7337 EXIT WHEN c_get_terr_value%NOTFOUND;
7338
7339 create_new_terr_value_rec( p_new_terr_id
7340 , l_new_terr_qual_id
7341 , l_tmpl_terr_value_rec
7342 , l_new_terr_value_id);
7343
7344 END LOOP;
7345 CLOSE c_get_terr_value;
7346
7347 END LOOP;
7348 CLOSE c_get_terr_qual;
7349
7350 --dbms_output('insert_copied_qual_values END');
7351
7352 END insert_copied_qual_values;
7353
7354
7355 /*--------------------------------------------------------------------------------------*/
7356 -- inserts the constant qualifiers and values
7357 PROCEDURE insert_static_qual_values ( p_template_terr_id NUMBER
7358 , p_new_terr_id NUMBER ) IS
7359
7360 /* local standard API variables */
7361 l_api_version_number NUMBER := 1.0;
7362 l_return_status VARCHAR2(200);
7363 l_msg_count NUMBER;
7364 l_msg_data VARCHAR2(2000);
7365
7366
7367 /* cursor to get STATIC qualifiers */
7368 CURSOR c_get_terr_qual (p_template_terr_id NUMBER) IS
7369 SELECT j1.rowid
7370 , j1.TERR_QUAL_ID
7371 , j1.LAST_UPDATE_DATE
7372 , j1.LAST_UPDATED_BY
7373 , j1.CREATION_DATE
7374 , j1.CREATED_BY
7375 , j1.LAST_UPDATE_LOGIN
7376 , j1.TERR_ID
7377 , j1.QUAL_USG_ID
7378 , j1.USE_TO_NAME_FLAG
7379 , j1.GENERATE_FLAG
7380 , j1.OVERLAP_ALLOWED_FLAG
7381 , j1.QUALIFIER_MODE
7382 , j1.ORG_ID
7383 FROM jtf_terr_qual j1
7384 WHERE j1.terr_id = p_template_terr_id
7385 AND j1.qualifier_mode = 'STATIC';
7386
7387 /* cursor to get values for STATIC qualifiers' values */
7388 CURSOR c_get_terr_value (p_terr_qual_id NUMBER) IS
7389 SELECT j1.TERR_VALUE_ID
7390 , j1.LAST_UPDATE_DATE
7391 , j1.LAST_UPDATED_BY
7392 , j1.CREATION_DATE
7393 , j1.CREATED_BY
7394 , j1.LAST_UPDATE_LOGIN
7395 , j1.TERR_QUAL_ID
7396 , j1.INCLUDE_FLAG
7397 , j1.COMPARISON_OPERATOR
7398 , j1.LOW_VALUE_CHAR
7399 , j1.HIGH_VALUE_CHAR
7400 , j1.LOW_VALUE_NUMBER
7401 , j1.HIGH_VALUE_NUMBER
7402 , j1.VALUE_SET
7403 , j1.INTEREST_TYPE_ID
7404 , j1.PRIMARY_INTEREST_CODE_ID
7405 , j1.SECONDARY_INTEREST_CODE_ID
7406 , j1.CURRENCY_CODE
7407 , j1.ORG_ID
7408 , j1.ID_USED_FLAG
7409 , j1.LOW_VALUE_CHAR_ID
7410 , NULL QUALIFIER_TBL_INDEX
7411 , j1.CNR_GROUP_ID
7412 , j1.VALUE1_ID
7413 , j1.VALUE2_ID
7414 , j1.VALUE3_ID
7415 , j1.VALUE4_ID
7416 FROM jtf_terr_values j1
7417 WHERE j1.terr_qual_id = p_terr_qual_id;
7418
7419 /* local record variables */
7420 l_tmpl_terr_qual_rec Terr_Qual_Rec_Type;
7421
7422 l_tmpl_terr_value_rec Terr_Values_Rec_Type;
7423 l_terr_value_out_rec Terr_Values_Out_Rec_Type;
7424
7425 l_new_terr_qual_id NUMBER;
7426 l_new_terr_value_id NUMBER;
7427
7428 BEGIN
7429
7430 --dbms_output('insert_static_qual_values START');
7431
7432 /* get the STATIC qualifiers for this template */
7433 OPEN c_get_terr_qual (p_template_terr_id);
7434 LOOP
7435
7436 FETCH c_get_terr_qual INTO
7437 l_tmpl_terr_qual_rec.rowid
7438 , l_tmpl_terr_qual_rec.TERR_QUAL_ID
7439 , l_tmpl_terr_qual_rec.LAST_UPDATE_DATE
7440 , l_tmpl_terr_qual_rec.LAST_UPDATED_BY
7441 , l_tmpl_terr_qual_rec.CREATION_DATE
7442 , l_tmpl_terr_qual_rec.CREATED_BY
7443 , l_tmpl_terr_qual_rec.LAST_UPDATE_LOGIN
7444 , l_tmpl_terr_qual_rec.TERR_ID
7445 , l_tmpl_terr_qual_rec.QUAL_USG_ID
7446 , l_tmpl_terr_qual_rec.USE_TO_NAME_FLAG
7447 , l_tmpl_terr_qual_rec.GENERATE_FLAG
7448 , l_tmpl_terr_qual_rec.OVERLAP_ALLOWED_FLAG
7449 , l_tmpl_terr_qual_rec.QUALIFIER_MODE
7450 , l_tmpl_terr_qual_rec.ORG_ID;
7451
7452 EXIT WHEN c_get_terr_qual%NOTFOUND;
7453
7454 create_new_terr_qual_rec( p_new_terr_id, l_tmpl_terr_qual_rec, l_new_terr_qual_id);
7455
7456 /* get the values for this template qualifier */
7457 OPEN c_get_terr_value (l_tmpl_terr_qual_rec.terr_qual_id);
7458 LOOP
7459
7460 FETCH c_get_terr_value INTO
7461 l_tmpl_terr_value_rec.TERR_VALUE_ID
7462 , l_tmpl_terr_value_rec.LAST_UPDATE_DATE
7463 , l_tmpl_terr_value_rec.LAST_UPDATED_BY
7464 , l_tmpl_terr_value_rec.CREATION_DATE
7465 , l_tmpl_terr_value_rec.CREATED_BY
7466 , l_tmpl_terr_value_rec.LAST_UPDATE_LOGIN
7467 , l_tmpl_terr_value_rec.TERR_QUAL_ID
7468 , l_tmpl_terr_value_rec.INCLUDE_FLAG
7469 , l_tmpl_terr_value_rec.COMPARISON_OPERATOR
7470 , l_tmpl_terr_value_rec.LOW_VALUE_CHAR
7471 , l_tmpl_terr_value_rec.HIGH_VALUE_CHAR
7472 , l_tmpl_terr_value_rec.LOW_VALUE_NUMBER
7473 , l_tmpl_terr_value_rec.HIGH_VALUE_NUMBER
7474 , l_tmpl_terr_value_rec.VALUE_SET
7475 , l_tmpl_terr_value_rec.INTEREST_TYPE_ID
7476 , l_tmpl_terr_value_rec.PRIMARY_INTEREST_CODE_ID
7477 , l_tmpl_terr_value_rec.SECONDARY_INTEREST_CODE_ID
7478 , l_tmpl_terr_value_rec.CURRENCY_CODE
7479 , l_tmpl_terr_value_rec.ORG_ID
7480 , l_tmpl_terr_value_rec.ID_USED_FLAG
7481 , l_tmpl_terr_value_rec.LOW_VALUE_CHAR_ID
7482 , l_tmpl_terr_value_rec.QUALIFIER_TBL_INDEX
7483 , l_tmpl_terr_value_rec.CNR_GROUP_ID
7484 , l_tmpl_terr_value_rec.VALUE1_ID
7485 , l_tmpl_terr_value_rec.VALUE2_ID
7486 , l_tmpl_terr_value_rec.VALUE3_ID
7487 , l_tmpl_terr_value_rec.VALUE4_ID;
7488
7489 EXIT WHEN c_get_terr_value%NOTFOUND;
7490
7491 create_new_terr_value_rec( p_new_terr_id
7492 , l_new_terr_qual_id
7493 , l_tmpl_terr_value_rec
7494 , l_new_terr_value_id);
7495
7496 END LOOP;
7497 CLOSE c_get_terr_value;
7498
7499 END LOOP;
7500 CLOSE c_get_terr_qual;
7501
7502 --dbms_output('insert_static_qual_values END');
7503
7504 END insert_static_qual_values;
7505
7506
7507 /*--------------------------------------------------------------------------------------*/
7508 -- loads the values for generation into a PL/SQL table
7509 PROCEDURE load_dynamic_qual_values ( p_template_terr_id IN NUMBER
7510 , x_qual_tbl OUT NOCOPY Dynamic_Qual_Tbl_Type
7511 , x_val_tbl OUT NOCOPY Terr_Values_Tbl_Type ) IS
7512
7513 /* cursor to get dynamic qualifiers */
7514 CURSOR c_get_terr_qual (p_template_terr_id NUMBER) IS
7515 SELECT j1.rowid
7516 , j1.TERR_QUAL_ID
7517 , j1.LAST_UPDATE_DATE
7518 , j1.LAST_UPDATED_BY
7519 , j1.CREATION_DATE
7520 , j1.CREATED_BY
7521 , j1.LAST_UPDATE_LOGIN
7522 , j1.TERR_ID
7523 , j1.QUAL_USG_ID
7524 , j1.USE_TO_NAME_FLAG
7525 , j1.GENERATE_FLAG
7526 , j1.OVERLAP_ALLOWED_FLAG
7527 , j1.QUALIFIER_MODE
7528 , j1.ORG_ID
7529 FROM jtf_terr_qual j1
7530 WHERE j1.terr_id = p_template_terr_id
7531 AND j1.qualifier_mode = 'DYNAMIC';
7532
7533 /* cursor to get values for dynamic qualifier values */
7534 CURSOR c_get_terr_values (p_terr_qual_id NUMBER) IS
7535 SELECT j1.TERR_VALUE_ID
7536 , j1.LAST_UPDATE_DATE
7537 , j1.LAST_UPDATED_BY
7538 , j1.CREATION_DATE
7539 , j1.CREATED_BY
7540 , j1.LAST_UPDATE_LOGIN
7541 , j1.TERR_QUAL_ID
7542 , j1.INCLUDE_FLAG
7543 , j1.COMPARISON_OPERATOR
7544 , j1.LOW_VALUE_CHAR
7545 , j1.HIGH_VALUE_CHAR
7546 , j1.LOW_VALUE_NUMBER
7547 , j1.HIGH_VALUE_NUMBER
7548 , j1.VALUE_SET
7549 , j1.INTEREST_TYPE_ID
7550 , j1.PRIMARY_INTEREST_CODE_ID
7551 , j1.SECONDARY_INTEREST_CODE_ID
7552 , j1.CURRENCY_CODE
7553 , j1.ID_USED_FLAG
7554 , j1.LOW_VALUE_CHAR_ID
7555 , NULL QUALIFIER_TBL_INDEX
7556 , j1.ORG_ID
7557 , j1.CNR_GROUP_ID
7558 , j1.VALUE1_ID
7559 , j1.VALUE2_ID
7560 , j1.VALUE3_ID
7561 , j1.VALUE4_ID
7562 FROM jtf_terr_values j1
7563 WHERE j1.terr_qual_id = p_terr_qual_id
7564 ORDER BY j1.value_set;
7565
7566 l_tmpl_terr_qual_rec Terr_Qual_Rec_Type;
7567
7568 l_qual_curr_rec_num NUMBER := 0;
7569 l_val_curr_rec_num NUMBER := 0;
7570
7571 BEGIN
7572
7573 --dbms_output('[1] load_dynamic_qual_values');
7574
7575 /* get the DYNAMIC qualifiers for this template territory */
7576 OPEN c_get_terr_qual(p_template_terr_id);
7577 LOOP
7578 FETCH c_get_terr_qual INTO
7579 l_tmpl_terr_qual_rec.rowid
7580 , l_tmpl_terr_qual_rec.TERR_QUAL_ID
7581 , l_tmpl_terr_qual_rec.LAST_UPDATE_DATE
7582 , l_tmpl_terr_qual_rec.LAST_UPDATED_BY
7583 , l_tmpl_terr_qual_rec.CREATION_DATE
7584 , l_tmpl_terr_qual_rec.CREATED_BY
7585 , l_tmpl_terr_qual_rec.LAST_UPDATE_LOGIN
7586 , l_tmpl_terr_qual_rec.TERR_ID
7587 , l_tmpl_terr_qual_rec.QUAL_USG_ID
7588 , l_tmpl_terr_qual_rec.USE_TO_NAME_FLAG
7589 , l_tmpl_terr_qual_rec.GENERATE_FLAG
7590 , l_tmpl_terr_qual_rec.OVERLAP_ALLOWED_FLAG
7591 , l_tmpl_terr_qual_rec.QUALIFIER_MODE
7592 , l_tmpl_terr_qual_rec.ORG_ID;
7593
7594 EXIT WHEN c_get_terr_qual%NOTFOUND;
7595
7596 --dbms_output('[2] load_dynamic_qual_values');
7597
7598 x_qual_tbl(l_qual_curr_rec_num).QUAL_USG_ID := l_tmpl_terr_qual_rec.qual_usg_id;
7599
7600 x_qual_tbl(l_qual_curr_rec_num).USE_TO_NAME_FLAG := l_tmpl_terr_qual_rec.use_to_name_flag;
7601 x_qual_tbl(l_qual_curr_rec_num).GENERATE_FLAG := l_tmpl_terr_qual_rec.generate_flag;
7602 x_qual_tbl(l_qual_curr_rec_num).OVERLAP_ALLOWED_FLAG := l_tmpl_terr_qual_rec.overlap_allowed_flag;
7603 x_qual_tbl(l_qual_curr_rec_num).QUALIFIER_MODE := '';
7604 x_qual_tbl(l_qual_curr_rec_num).ORG_ID := l_tmpl_terr_qual_rec.org_id;
7605
7606
7607 x_qual_tbl(l_qual_curr_rec_num).start_record := l_val_curr_rec_num;
7608 x_qual_tbl(l_qual_curr_rec_num).current_record := 0;
7609
7610 x_qual_tbl(l_qual_curr_rec_num).current_value_set := 1;
7611
7612 --dbms_output('[3] load_dynamic_qual_values');
7613
7614 /* get the values for this territory qualifier */
7615 OPEN c_get_terr_values(l_tmpl_terr_qual_rec.terr_qual_id);
7616 LOOP
7617 FETCH c_get_terr_values INTO
7618 x_val_tbl(l_val_curr_rec_num).TERR_VALUE_ID
7619 , x_val_tbl(l_val_curr_rec_num).LAST_UPDATE_DATE
7620 , x_val_tbl(l_val_curr_rec_num).LAST_UPDATED_BY
7621 , x_val_tbl(l_val_curr_rec_num).CREATION_DATE
7622 , x_val_tbl(l_val_curr_rec_num).CREATED_BY
7623 , x_val_tbl(l_val_curr_rec_num).LAST_UPDATE_LOGIN
7624 , x_val_tbl(l_val_curr_rec_num).TERR_QUAL_ID
7625 , x_val_tbl(l_val_curr_rec_num).INCLUDE_FLAG
7626 , x_val_tbl(l_val_curr_rec_num).COMPARISON_OPERATOR
7627 , x_val_tbl(l_val_curr_rec_num).LOW_VALUE_CHAR
7628 , x_val_tbl(l_val_curr_rec_num).HIGH_VALUE_CHAR
7629 , x_val_tbl(l_val_curr_rec_num).LOW_VALUE_NUMBER
7630 , x_val_tbl(l_val_curr_rec_num).HIGH_VALUE_NUMBER
7631 , x_val_tbl(l_val_curr_rec_num).VALUE_SET
7632 , x_val_tbl(l_val_curr_rec_num).INTEREST_TYPE_ID
7633 , x_val_tbl(l_val_curr_rec_num).PRIMARY_INTEREST_CODE_ID
7634 , x_val_tbl(l_val_curr_rec_num).SECONDARY_INTEREST_CODE_ID
7635 , x_val_tbl(l_val_curr_rec_num).CURRENCY_CODE
7636 , x_val_tbl(l_val_curr_rec_num).ID_USED_FLAG
7637 , x_val_tbl(l_val_curr_rec_num).LOW_VALUE_CHAR_ID
7638 , x_val_tbl(l_val_curr_rec_num).QUALIFIER_TBL_INDEX
7639 , x_val_tbl(l_val_curr_rec_num).ORG_ID
7640 , x_val_tbl(l_val_curr_rec_num).CNR_GROUP_ID
7641 , x_val_tbl(l_val_curr_rec_num).VALUE1_ID
7642 , x_val_tbl(l_val_curr_rec_num).VALUE2_ID
7643 , x_val_tbl(l_val_curr_rec_num).VALUE3_ID
7644 , x_val_tbl(l_val_curr_rec_num).VALUE4_ID;
7645
7646 EXIT WHEN c_get_terr_values%NOTFOUND;
7647
7648 /* increment loop counter */
7649 l_val_curr_rec_num := l_val_curr_rec_num + 1;
7650
7651 --dbms_output('Value of l_val_curr_rec_num = '||TO_CHAR(l_val_curr_rec_num ));
7652
7653 END LOOP;
7654
7655 /* get number of value records for this qualifier */
7656 x_qual_tbl(l_qual_curr_rec_num).num_records := c_get_terr_values%ROWCOUNT;
7657
7658 CLOSE c_get_terr_values;
7659
7660 /* increment loop counter */
7661 l_qual_curr_rec_num := l_qual_curr_rec_num + 1;
7662
7663 END LOOP;
7664
7665 CLOSE c_get_terr_qual;
7666
7667 END load_dynamic_qual_values;
7668
7669
7670 /*--------------------------------------------------------------------------------------*/
7671 /* increments counter for the values used in generation
7672 ** THis is called after generation of each territory.
7673 ** Works like a digital counter where the last (right-most) digit is
7674 ** incremented. If it reaches its max value, it is set to zero and the
7675 ** previous digit is incremented. THis is done recursively until you reach
7676 ** a digit which has not reached its max value.
7677 ** THe number of digits here is the number of qualifiers used in generation.
7678 ** THe max value for each digit is the number of values for each qualifier.
7679 */
7680 FUNCTION increment_counter( p_dyn_qual_tbl IN OUT NOCOPY Dynamic_Qual_Tbl_Type
7681 , p_qual_index IN NUMBER
7682 , p_dyn_qual_val_tbl IN Terr_Values_Tbl_Type)
7683 RETURN BOOLEAN
7684 IS
7685
7686 i NUMBER;
7687 l_start_rec NUMBER;
7688 l_rec_counter NUMBER := 0;
7689
7690 BEGIN
7691
7692 --dbms_output( '[1]Increment Counter: p_qual_index = ' || p_qual_index);
7693
7694 --dbms_output( '[2]Increment Counter: p_dyn_qual_tbl(i).current_record = ' || TO_char(p_dyn_qual_tbl(p_qual_index).current_record));
7695
7696 --dbms_output( '[3]Increment Counter:p_dyn_qual_tbl(i).start_record = ' || TO_CHAR(p_dyn_qual_tbl(p_qual_index).start_record));
7697
7698 /**/
7699 l_start_rec := p_dyn_qual_tbl(p_qual_index).start_record +
7700 p_dyn_qual_tbl(p_qual_index).current_record;
7701
7702 i := l_start_rec;
7703
7704 --dbms_output( '[4]Increment Counter: l_start_rec = ' || TO_CHAR(l_start_rec));
7705
7706 FOR i in l_start_rec .. p_dyn_qual_val_tbl.COUNT-1 LOOP
7707
7708 /* added March 4 */
7709 EXIT WHEN ( p_dyn_qual_val_tbl(i).value_set <>
7710 p_dyn_qual_tbl(p_qual_index).current_value_set );
7711
7712 l_rec_counter := l_rec_counter + 1;
7713
7714 --dbms_output( '[5]Increment Counter: value_set = ' || TO_CHAR(p_dyn_qual_val_tbl(i).value_set) || ' l_rec_counter = ' || l_rec_counter );
7715
7716 END LOOP;
7717 /**/
7718
7719 /* move current record pointer to start of next value set */
7720 p_dyn_qual_tbl(p_qual_index).current_record :=
7721 p_dyn_qual_tbl(p_qual_index).current_record + l_rec_counter;
7722 /**/
7723
7724 --dbms_output( '[6]Increment Counter: p_dyn_qual_tbl(i).current_record = ' || TO_char(p_dyn_qual_tbl(p_qual_index).current_record));
7725
7726 /* increment current value_set counter */
7727 p_dyn_qual_tbl(p_qual_index).current_value_set :=
7728 p_dyn_qual_tbl(p_qual_index).current_value_set + 1;
7729 /**/
7730
7731 --dbms_output( '[7]Increment Counter: value_set = ' || TO_CHAR(p_dyn_qual_tbl(p_qual_index).current_value_set));
7732
7733 /* last value for qualifier reached, so reset and increment previous qualifier */
7734 IF ( p_dyn_qual_tbl(p_qual_index).current_record =
7735 p_dyn_qual_tbl(p_qual_index).num_records ) THEN
7736
7737 --dbms_output( '[-]last value for the CURRENT qualifier reached');
7738 p_dyn_qual_tbl(p_qual_index).current_record := 0;
7739
7740 /* added March 3 */
7741 p_dyn_qual_tbl(p_qual_index).current_value_set := 1;
7742 /**/
7743
7744 IF (p_qual_index = 0) THEN
7745 --dbms_output( '[-]last value for the first qualifier reached');
7746
7747 -- last value for the first qualifier reached
7748 RETURN FALSE;
7749 ELSE
7750 --dbms_output( '[-]Recursively calling increment_counter');
7751
7752 RETURN increment_counter(p_dyn_qual_tbl, p_qual_index -1, p_dyn_qual_val_tbl);
7753 END IF;
7754
7755 ELSE
7756 RETURN TRUE;
7757 END IF;
7758
7759 END increment_counter;
7760
7761 /* for debugging */
7762 --PROCEDURE print_qual_table (p_qualifier_table Dynamic_Qual_Tbl_Type) IS
7763 --BEGIN
7764 -- dbms_output.put_line('--------');
7765 -- FOR i IN 0 .. p_qualifier_table.COUNT-1 LOOP
7766 -- dbms_output.put_line('Qual_Usg_Id: ' || to_char(p_qualifier_table(i).qual_usg_id));
7767 -- dbms_output.put_line('Start_record: '||to_char(p_qualifier_table(i).start_record)
7768 -- ||' Number of records: '||to_char(p_qualifier_table(i).num_records)
7769 -- ||' Current record: '||to_char(p_qualifier_table(i).current_record));
7770 -- END LOOP;
7771 --END print_qual_table;
7772
7773
7774 /*--------------------------------------------------------------------------------------*/
7775 PROCEDURE Gen_Template_Territories (
7776 p_Api_Version_Number IN NUMBER,
7777 p_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
7778 p_Commit IN VARCHAR2 := FND_API.G_FALSE,
7779 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7780 p_Template_Terr_Id IN NUMBER,
7781 x_Return_Status OUT NOCOPY VARCHAR2,
7782 x_Msg_Count OUT NOCOPY NUMBER,
7783 x_Msg_Data OUT NOCOPY VARCHAR2,
7784 x_num_gen_terr OUT NOCOPY NUMBER
7785 )
7786 AS
7787
7788 /* local standard API variables */
7789 l_api_name CONSTANT VARCHAR2(30) := 'Generate_Template_Territories';
7790 l_api_version_number CONSTANT NUMBER := 1.0;
7791 l_return_status VARCHAR2(200);
7792 l_msg_count NUMBER;
7793 l_msg_data VARCHAR2(2000);
7794
7795 /* local variables */
7796 l_template_terr_rec Terr_All_Rec_Type;
7797 l_new_terr_id NUMBER;
7798
7799 l_tmpl_usgs_tbl Terr_Usgs_Tbl_Type;
7800 l_tmpl_qtype_usgs_tbl Terr_QualTypeUsgs_Tbl_Type;
7801
7802 l_dyn_qual_tbl Dynamic_Qual_Tbl_Type;
7803 l_tmpl_terr_qual_rec Terr_Qual_Rec_Type;
7804 l_new_terr_qual_id NUMBER;
7805
7806 l_dyn_qual_val_tbl Terr_Values_Tbl_Type;
7807 l_new_terr_value_id NUMBER;
7808
7809 l_num_gen_terr NUMBER := 0;
7810 l_rec_index NUMBER := 0;
7811 l_terr_count NUMBER := 0;
7812 l_tbl_count NUMBER;
7813
7814 BEGIN
7815
7816 -- Standard Start of API savepoint
7817 SAVEPOINT GEN_TEMPLATE_TERR_PVT;
7818
7819 -- Standard call to check for call compatibility.
7820 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
7821 p_api_version_number,
7822 l_api_name,
7823 G_PKG_NAME)
7824 THEN
7825 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7826 END IF;
7827
7828 -- Initialize message list if p_init_msg_list is set to TRUE.
7829 IF FND_API.to_Boolean( p_init_msg_list ) THEN
7830 FND_MSG_PUB.initialize;
7831 END IF;
7832
7833 -- Debug Message
7834 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
7835 THEN
7836 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
7837 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
7838 FND_MSG_PUB.Add;
7839 END IF;
7840
7841 -- Initialize API return status to success
7842 x_return_status := FND_API.G_RET_STS_SUCCESS;
7843
7844
7845 /* ===================== */
7846 /* API BODY START */
7847 /* ======================*/
7848
7849 --arpatel 07/13 bug#1872642
7850 --IF (p_validation_level >= FND_API.G_VALID_LEVEL_FULL) THEN
7851
7852 /* Debug message */
7853 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
7854 THEN
7855 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_VALIDATE_MSG');
7856 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Template_Record');
7857 FND_MSG_PUB.Add;
7858 END IF;
7859
7860 /* Invoke validation procedures */
7861 Validate_Template_Record( p_init_msg_list => FND_API.G_FALSE
7862 , p_Template_Terr_Id => p_template_terr_id
7863 , x_Return_Status => x_return_status
7864 , x_msg_count => x_msg_count
7865 , x_msg_data => x_msg_data );
7866
7867 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
7868 RAISE FND_API.G_EXC_ERROR;
7869 END IF;
7870
7871 --END IF;
7872
7873 initialise( p_template_terr_id
7874 , l_template_terr_rec
7875 , l_num_gen_terr
7876 , l_tmpl_usgs_tbl
7877 , l_tmpl_qtype_usgs_tbl);
7878
7879 --dbms_output( '[1] After Initialize: l_num_gen_terr = ' || TO_CHAR(l_num_gen_terr) );
7880
7881 load_dynamic_qual_values(p_template_terr_id, l_dyn_qual_tbl, l_dyn_qual_val_tbl);
7882
7883 /* for debugging purposes */
7884 --print_qual_table(l_dyn_qual_tbl);
7885
7886 LOOP
7887
7888 /* create new territory record */
7889 create_new_terr(l_template_terr_rec, l_terr_count, l_new_terr_id);
7890
7891 --dbms_output('------------------------------------------------------');
7892 --dbms_output('------------------------------------------------------');
7893 --dbms_output( '[' || l_terr_count || '] AFTER create_new_terr PVT: l_new_terr_id = ' || TO_CHAR(l_new_terr_id));
7894
7895 /* create new territory usages record(s) */
7896 create_new_terr_usgs(l_new_terr_id, l_tmpl_usgs_tbl);
7897
7898 /* create new territory qual type usages record(s) */
7899 create_new_terr_qtype_usgs(l_new_terr_id, l_tmpl_qtype_usgs_tbl);
7900
7901 /* for all STATIC qualifier values */
7902 insert_static_qual_values(p_template_terr_id, l_new_terr_id);
7903
7904 FOR i IN 0 .. l_dyn_qual_tbl.COUNT-1 LOOP
7905
7906 /* Instantiate record items from appropriate items */
7907 l_tmpl_terr_qual_rec.qual_usg_id := l_dyn_qual_tbl(i).QUAL_USG_ID;
7908 l_tmpl_terr_qual_rec.use_to_name_flag := l_dyn_qual_tbl(i).USE_TO_NAME_FLAG;
7909 l_tmpl_terr_qual_rec.generate_flag := l_dyn_qual_tbl(i).GENERATE_FLAG;
7910 l_tmpl_terr_qual_rec.overlap_allowed_flag := l_dyn_qual_tbl(i).OVERLAP_ALLOWED_FLAG;
7911 l_tmpl_terr_qual_rec.qualifier_mode := l_dyn_qual_tbl(i).QUALIFIER_MODE;
7912 l_tmpl_terr_qual_rec.org_id := l_dyn_qual_tbl(i).ORG_ID;
7913
7914 /* insert record IN JTF_TERR_QUAL_ALL */
7915 create_new_terr_qual_rec(l_new_terr_id, l_tmpl_terr_qual_rec, l_new_terr_qual_id);
7916
7917 l_rec_index := l_dyn_qual_tbl(i).start_record + l_dyn_qual_tbl(i).current_record;
7918
7919 --dbms_output( ' Inserting Terr Qual: Qual_Usg_id = ' || TO_CHAR(l_dyn_qual_tbl(i).QUAL_USG_ID) || ' L_REC_INDEX = ' || l_rec_index);
7920
7921 /*******************************************************************************************/
7922 LOOP
7923
7924 /* exit if last qualifier's last value is reached - */
7925 /* prevents NO_DATA_FOUND exception being raised */
7926 /* by referring to a non-existent table element */
7927 EXIT WHEN ( l_tbl_count = l_rec_index );
7928
7929 --EXIT WHEN ( l_dyn_qual_val_tbl(l_rec_index).value_set =
7930 -- l_dyn_qual_tbl(i).current_value_set + 1);
7931
7932 /* added March 3rd - JDOCHERT */
7933 /* exit when value set changes */
7934 EXIT WHEN ( l_dyn_qual_val_tbl(l_rec_index).value_set <>
7935 l_dyn_qual_tbl(i).current_value_set);
7936
7937 --OR l_dyn_qual_val_tbl(l_rec_index).qual_usg_id
7938 -- <> l_dyn_qual_tbl(i).qual_usg_id
7939
7940 create_new_terr_value_rec( l_new_terr_id
7941 , l_new_terr_qual_id
7942 , l_dyn_qual_val_tbl(l_rec_index)
7943 , l_new_terr_value_id );
7944 /*
7945 --dbms_output( ' Inserting Terr Val: Value_Set = ' ||
7946 -- TO_CHAR(l_dyn_qual_val_tbl(l_rec_index).value_set) ||
7947 -- ' l_rec_index = ' || l_rec_index ||
7948 -- ' table_count = ' || l_dyn_qual_val_tbl.COUNT);
7949 */
7950
7951 l_tbl_count := l_dyn_qual_val_tbl.COUNT;
7952
7953 /* increment counter to point to next value in value set */
7954 l_rec_index := l_rec_index + 1;
7955 --dbms_output('l_tbl_count = ' || l_tbl_count);
7956
7957 --IF (l_tbl_count = l_rec_index) THEN
7958 -- dbms_output.put_line('l_rec_index = l_tbl_count = ' || l_tbl_count);
7959 --END IF;
7960
7961 END LOOP;
7962
7963 --dbms_output('exited values inner loop');
7964
7965
7966 /*******************************************************************************************/
7967
7968 END LOOP;
7969
7970 l_terr_count := l_terr_count + 1;
7971
7972 IF (increment_counter( l_dyn_qual_tbl
7973 , l_dyn_qual_tbl.COUNT-1
7974 , l_dyn_qual_val_tbl) = FALSE) THEN
7975 EXIT;
7976 END IF;
7977
7978 ----dbms_output( 'Generate_Template_Territories PVT: l_terr_count = ' || TO_CHAR(l_terr_count));
7979
7980 --EXIT WHEN l_terr_count = l_num_gen_terr;
7981
7982 END LOOP;
7983
7984 /* return number of territories that
7985 ** were generated from template
7986 */
7987 x_num_gen_terr := l_terr_count;
7988
7989 IF (l_terr_count <> l_num_gen_terr) THEN
7990 x_return_status := FND_API.G_RET_STS_ERROR ;
7991 END IF;
7992
7993 /* ===================== */
7994 /* API BODY END */
7995 /* ======================*/
7996
7997 -- Debug Message
7998 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
7999 THEN
8000 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
8001 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
8002 FND_MSG_PUB.Add;
8003 END IF;
8004
8005 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8006 RAISE FND_API.G_EXC_ERROR;
8007 END IF;
8008
8009 FND_MSG_PUB.Count_And_Get
8010 ( p_count => x_msg_count,
8011 p_data => x_msg_data
8012 );
8013
8014 -- Standard check for p_commit
8015 IF FND_API.to_Boolean( p_commit )
8016 THEN
8017 COMMIT WORK;
8018 END IF;
8019 EXCEPTION
8020
8021 WHEN FND_API.G_EXC_ERROR THEN
8022 --dbms_output('Generate_Template_Territories PVT: FND_API.G_EXC_ERROR');
8023 ROLLBACK TO GEN_TEMPLATE_TERR_PVT;
8024 x_return_status := FND_API.G_RET_STS_ERROR ;
8025 FND_MSG_PUB.Count_And_Get
8026 ( p_count => x_msg_count,
8027 p_data => x_msg_data
8028 );
8029
8030 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8031 --dbms_output('Generate_Template_Territories PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
8032 ROLLBACK TO GEN_TEMPLATE_TERR_PVT;
8033 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8034 FND_MSG_PUB.Count_And_Get
8035 ( p_count => x_msg_count,
8036 p_data => x_msg_data
8037 );
8038
8039 WHEN OTHERS THEN
8040 --dbms_output('Generate_Template_Territories PVT: OTHERS - ' || SQLERRM);
8041 ROLLBACK TO GEN_TEMPLATE_TERR_PVT;
8042 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8043 FND_MSG_PUB.Count_And_Get
8044 ( p_count => x_msg_count,
8045 p_data => x_msg_data
8046 );
8047
8048 END Gen_Template_Territories;
8049
8050
8051
8052 /*--------------------------------------------------------------------------------------*/
8053 -- eihsu100
8054 PROCEDURE Copy_Territory (
8055 p_Api_Version_Number IN NUMBER,
8056 p_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
8057 p_Commit IN VARCHAR2 := FND_API.G_FALSE,
8058 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
8059 p_copy_source_terr_Id IN NUMBER,
8060 p_new_terr_rec IN Terr_All_Rec_Type,
8061 p_copy_rsc_flag IN VARCHAR2 := 'N',
8062 p_copy_hierarchy_flag IN VARCHAR2 := 'N',
8063 p_first_terr_node_flag IN VARCHAR2 := 'N',
8064 x_Return_Status OUT NOCOPY VARCHAR2,
8065 x_Msg_Count OUT NOCOPY NUMBER,
8066 x_Msg_Data OUT NOCOPY VARCHAR2,
8067 x_Terr_Id OUT NOCOPY NUMBER
8068 )
8069 AS
8070 /* local standard API variables */
8071 l_api_name CONSTANT VARCHAR2(30) := 'Copy_Territory';
8072 l_api_version_number CONSTANT NUMBER := 1.0;
8073 l_return_status VARCHAR2(200);
8074 l_msg_count NUMBER;
8075 l_msg_data VARCHAR2(2000);
8076
8077 /* local variables */
8078 l_copy_source_terr_rec Terr_All_Rec_Type;
8079 l_new_terr_id NUMBER;
8080 l_terr_id NUMBER;
8081
8082 l_tmpl_usgs_tbl Terr_Usgs_Tbl_Type;
8083 l_tmpl_qtype_usgs_tbl Terr_QualTypeUsgs_Tbl_Type;
8084
8085 l_dyn_qual_tbl Dynamic_Qual_Tbl_Type;
8086 l_tmpl_terr_qual_rec Terr_Qual_Rec_Type;
8087 l_new_terr_qual_id NUMBER;
8088
8089 l_dyn_qual_val_tbl Terr_Values_Tbl_Type;
8090 l_new_terr_value_id NUMBER;
8091
8092 l_num_gen_terr NUMBER := 0;
8093 l_rec_index NUMBER := 0;
8094 l_terr_count NUMBER := 0;
8095 l_tbl_count NUMBER;
8096
8097 CURSOR csr_child_terrs (p_terr_id NUMBER) IS
8098 select jta.terr_id
8099 from JTF_TERR_ALL jta
8100 where jta.parent_territory_id = p_terr_Id;
8101
8102 BEGIN
8103
8104 -- Standard Start of API savepoint
8105 SAVEPOINT COPY_TERR_PVT;
8106
8107 -- Standard call to check for call compatibility.
8108 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
8109 p_api_version_number,
8110 l_api_name,
8111 G_PKG_NAME)
8112 THEN
8113 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8114 END IF;
8115
8116 -- Initialize message list if p_init_msg_list is set to TRUE.
8117 IF FND_API.to_Boolean( p_init_msg_list ) THEN
8118 FND_MSG_PUB.initialize;
8119 END IF;
8120
8121 -- Debug Message
8122 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
8123 THEN
8124 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_START_MSG');
8125 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
8126 FND_MSG_PUB.Add;
8127 END IF;
8128
8129 -- Initialize API return status to success
8130 x_return_status := FND_API.G_RET_STS_SUCCESS;
8131
8132
8133 /* ===================== */
8134 /* API BODY START */
8135 /* ======================*/
8136
8137 /* (validation procedures not necessary) */
8138
8139 --dbms_output('JTF_TERRITORY_PVT:gen_dupliacte_territory: - BEGIN');
8140 -- get table of terr usages and terr qual type usages for the source territory
8141 initialise( p_copy_source_terr_id -- input TERR_ID
8142 , l_copy_source_terr_rec -- output desc
8143 , l_num_gen_terr -- output (irrelevant)
8144 , l_tmpl_usgs_tbl -- output usages
8145 , l_tmpl_qtype_usgs_tbl); -- output transaction types
8146
8147 --dbms_output( '[1] After Initialize: l_num_gen_terr = ' || TO_CHAR(l_num_gen_terr) );
8148
8149 /* create new territory record */
8150 -- (l_copy_source_terr_rec, l_terr_count, l_new_terr_id);
8151 create_copied_terr(l_copy_source_terr_rec, p_new_terr_rec, 1, p_copy_hierarchy_flag, p_first_terr_node_flag, l_new_terr_id);
8152
8153 /* create new territory usages record(s) */
8154 create_new_terr_usgs(l_new_terr_id, l_tmpl_usgs_tbl);
8155
8156 /* create new territory qual type usages record(s) */
8157 create_new_terr_qtype_usgs(l_new_terr_id, l_tmpl_qtype_usgs_tbl);
8158
8159 /* for all qualifier values */
8160 insert_copied_qual_values(p_copy_source_terr_id, l_new_terr_id);
8161 --dbms_output('JTF_TERRITORY_PVT:gen_dupliacte_territory: - END');
8162
8163 /* START: 09/17/00 - JDOCHERT */
8164 IF (p_copy_rsc_flag = 'Y') THEN
8165
8166 JTF_TERRITORY_RESOURCE_PVT.copy_terr_resources( p_Api_Version_Number => p_Api_Version_Number,
8167 p_Init_Msg_List => p_Init_Msg_List,
8168 p_Commit => p_Commit,
8169 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
8170 p_source_terr_id => p_copy_source_terr_id,
8171 p_dest_terr_id => l_new_terr_id,
8172 x_msg_count => x_msg_count,
8173 x_msg_data => x_msg_data,
8174 x_return_status => x_return_status );
8175
8176 END IF;
8177 /* END: 09/17/00 - JDOCHERT */
8178
8179 /* START: 04/05/01 - ARPATEL */
8180 IF (p_copy_hierarchy_flag = 'Y') THEN
8181
8182
8183 for terr_rec in csr_child_terrs(p_copy_Source_terr_id)
8184 loop
8185
8186 --p_new_terr_rec.parent_territory_id := l_new_terr_id;
8187
8188 JTF_TERRITORY_PVT.Copy_Territory (
8189 p_Api_Version_Number => p_Api_Version_Number,
8190 p_Init_Msg_List => p_Init_Msg_List,
8191 p_Commit => p_Commit,
8192 p_validation_level => p_validation_level,
8193 p_copy_source_terr_Id => terr_rec.terr_id,
8194 p_new_terr_rec => p_new_terr_rec,
8195 p_copy_rsc_flag => p_copy_rsc_flag,
8196 p_copy_hierarchy_flag => p_copy_hierarchy_flag,
8197 p_first_terr_node_flag => 'N',
8198 x_Return_Status => l_return_status,
8199 x_Msg_Count => l_msg_count,
8200 x_Msg_Data => l_msg_data,
8201 x_terr_id => l_terr_id );
8202
8203 update JTF_TERR_ALL
8204 set parent_territory_id = l_new_terr_id
8205 where terr_id = l_terr_id;
8206
8207 end loop;
8208
8209 END IF;
8210
8211 /* END: 04/05/01 - ARPATEL */
8212
8213 /* return new territory id */
8214 x_terr_id := l_new_terr_id;
8215
8216 /* ===================== */
8217 /* API BODY END */
8218 /* ======================*/
8219
8220 -- Debug Message
8221 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
8222 THEN
8223 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_END_MSG');
8224 FND_MESSAGE.Set_Token('PROC_NAME', l_api_name);
8225 FND_MSG_PUB.Add;
8226 END IF;
8227
8228 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
8229 RAISE FND_API.G_EXC_ERROR;
8230 END IF;
8231
8232 FND_MSG_PUB.Count_And_Get
8233 ( p_count => x_msg_count,
8234 p_data => x_msg_data
8235 );
8236
8237 -- Standard check for p_commit
8238 IF FND_API.to_Boolean( p_commit )
8239 THEN
8240 COMMIT WORK;
8241 END IF;
8242 EXCEPTION
8243
8244 WHEN FND_API.G_EXC_ERROR THEN
8245 --dbms_output('Generate_Duplicate_Territory PVT: FND_API.G_EXC_ERROR');
8246 ROLLBACK TO COPY_TERR_PVT;
8247 x_return_status := FND_API.G_RET_STS_ERROR ;
8248 FND_MSG_PUB.Count_And_Get
8249 ( p_count => x_msg_count,
8250 p_data => x_msg_data
8251 );
8252
8253 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8254 --dbms_output('Generate_Duplicate_Territory PVT: FND_API.G_EXC_UNEXPECTED_ERROR');
8255 ROLLBACK TO COPY_TERR_PVT;
8256 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8257 FND_MSG_PUB.Count_And_Get
8258 ( p_count => x_msg_count,
8259 p_data => x_msg_data
8260 );
8261
8262 WHEN OTHERS THEN
8263 --dbms_output('Generate_Duplicate_Territory PVT: OTHERS - ' || SQLERRM);
8264 ROLLBACK TO COPY_TERR_PVT;
8265 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8266 FND_MSG_PUB.Count_And_Get
8267 ( p_count => x_msg_count,
8268 p_data => x_msg_data
8269 );
8270
8271 END Copy_Territory;
8272
8273
8274 ---------------------------------------------------------------------
8275 -- overlap_exists
8276 ---------------------------------------------------------------------
8277 --
8278 -- Check whether overlap exists for a
8279 -- qualifier usage value passed in. Overlap is
8280 -- checked only under a single parent.
8281 ---------------------------------------------------------------------
8282 FUNCTION Overlap_Exists(p_Parent_Terr_Id IN NUMBER,
8283 p_Qual_Usg_Id IN NUMBER,
8284 p_terr_value_record IN jtf_terr_values%ROWTYPE )
8285 RETURN VARCHAR2
8286 AS
8287 dummy NUMBER := 0;
8288 l_found NUMBER := 0;
8289 l_qual_col1_datatype VARCHAR2(25);
8290 l_display_type VARCHAR2(25);
8291 l_convert_to_id_flag VARCHAR2(2);
8292 BEGIN
8293 -- Get the qualifier usage related information
8294 select jqu.qual_col1_datatype, jqu.display_type, jqu.convert_to_id_flag
8295 into l_qual_col1_datatype, l_display_type, l_convert_to_id_flag
8296 from jtf_qual_usgs jqu
8297 where jqu.qual_usg_id = p_Qual_Usg_Id;
8298
8299 -- Character
8300 -- low value char
8301 IF ( l_display_type = 'CHAR' and
8302 l_qual_col1_datatype = 'VARCHAR2' and
8303 ( l_convert_to_id_flag IN ('N', FND_API.G_MISS_CHAR) or
8304 l_convert_to_id_flag is NULL ) )
8305 Then
8306 If p_terr_value_record.low_value_char is NOT NULL Then
8307 Select count(*)
8308 into dummy
8309 from jtf_terr_values jtv, jtf_terr_qual jtq, jtf_terr jt
8310 Where jt.parent_territory_id = p_Parent_Terr_Id
8311 and jtq.terr_id = jt.terr_id
8312 and jtq.qual_usg_id = p_Qual_Usg_Id
8313 and jtv.terr_qual_id = jtq.terr_qual_id
8314 and ( ( jtv.COMPARISON_OPERATOR = '<' and p_terr_value_record.low_value_char < jtv.low_value_char )
8315 or ( jtv.COMPARISON_OPERATOR = '<=' and p_terr_value_record.low_value_char <= jtv.low_value_char )
8316 or ( jtv.COMPARISON_OPERATOR IN ('!=', '<>') and p_terr_value_record.low_value_char <> jtv.low_value_char )
8317 or ( jtv.COMPARISON_OPERATOR = '=' and p_terr_value_record.low_value_char = jtv.low_value_char )
8318 or ( jtv.COMPARISON_OPERATOR = '=' and jtv.low_value_char
8319 between p_terr_value_record.low_value_char and p_terr_value_record.high_value_char )
8320 or ( jtv.COMPARISON_OPERATOR = '>' and p_terr_value_record.low_value_char > jtv.low_value_char )
8321 or ( jtv.COMPARISON_OPERATOR = '>=' and p_terr_value_record.low_value_char >= jtv.low_value_char )
8322 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'BETWEEN' and p_terr_value_record.low_value_char between jtv.low_value_char and jtv.high_value_char )
8323 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'LIKE' and p_terr_value_record.low_value_char LIKE jtv.low_value_char )
8324 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'NOT BETWEEN' and p_terr_value_record.low_value_char not between jtv.low_value_char and jtv.high_value_char )
8325 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'NOT LIKE' and p_terr_value_record.low_value_char NOT LIKE jtv.low_value_char ) )
8326 and rownum < 2;
8327 If dummy > 0 Then
8328 l_found := dummy;
8329 End If;
8330 End If;
8331
8332 -- Check the high_value_char
8333 If p_terr_value_record.high_value_char is NOT NULL Then
8334 Select count(*)
8335 into dummy
8336 from jtf_terr_values jtv, jtf_terr_qual jtq, jtf_terr jt
8337 Where jt.parent_territory_id = p_Parent_Terr_Id
8338 and jtq.terr_id = jt.terr_id
8339 and jtq.qual_usg_id = p_Qual_Usg_Id
8340 and jtv.terr_qual_id = jtq.terr_qual_id
8341 and ( ( jtv.COMPARISON_OPERATOR = '<' and p_terr_value_record.high_value_char < jtv.high_value_char )
8342 or ( jtv.COMPARISON_OPERATOR = '<=' and p_terr_value_record.high_value_char <= jtv.high_value_char )
8343 or ( jtv.COMPARISON_OPERATOR IN ('!=', '<>') and p_terr_value_record.high_value_char <> jtv.high_value_char )
8344 or ( jtv.COMPARISON_OPERATOR = '=' and p_terr_value_record.high_value_char = jtv.high_value_char )
8345 or ( jtv.COMPARISON_OPERATOR = '>' and p_terr_value_record.high_value_char > jtv.high_value_char )
8346 or ( jtv.COMPARISON_OPERATOR = '>=' and p_terr_value_record.high_value_char >= jtv.high_value_char )
8347 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'BETWEEN' and p_terr_value_record.high_value_char between jtv.low_value_char and jtv.high_value_char )
8348 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'LIKE' and p_terr_value_record.high_value_char LIKE jtv.low_value_char )
8349 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'NOT BETWEEN' and p_terr_value_record.high_value_char not between jtv.low_value_char and jtv.high_value_char )
8350 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'NOT LIKE' and p_terr_value_record.high_value_char NOT LIKE jtv.low_value_char ) )
8351 and rownum < 2;
8352 If dummy > 0 Then
8353 l_found := dummy;
8354 End If;
8355 End If;
8356
8357 -- Numeric with CHAR display WHERE id is stored, e.g., Company Name
8358 ElsIf ( l_qual_col1_datatype = 'NUMBER' AND
8359 l_display_type = 'CHAR' AND
8360 l_convert_to_id_flag = 'Y' )
8361 Then
8362
8363 -- only check for a subset of the availabel operator as these are the only
8364 -- available one for this combination
8365 Select count(*)
8366 into dummy
8367 from jtf_terr_values jtv, jtf_terr_qual jtq, jtf_terr jt
8368 Where jt.parent_territory_id = p_Parent_Terr_Id
8369 and jtq.terr_id = jt.terr_id
8370 and jtq.qual_usg_id = p_Qual_Usg_Id
8371 and jtv.terr_qual_id = jtq.terr_qual_id
8372 and jtv.LOW_VALUE_CHAR_ID = p_terr_value_record.LOW_VALUE_CHAR_ID
8373 and rownum < 2;
8374 If dummy > 0 Then
8375 l_found := dummy;
8376 End If;
8377
8378 ElsIf ( l_qual_col1_datatype = 'NUMBER' and l_display_type = 'NUMERIC'
8379 and ( l_convert_to_id_flag = 'N' or l_convert_to_id_flag is NULL ) )
8380 Then
8381
8382 If p_terr_value_record.low_value_number is NOT NULL Then
8383 Select 1
8384 into dummy
8385 from jtf_terr_values jtv, jtf_terr_qual jtq, jtf_terr jt
8386 Where jt.parent_territory_id = p_Parent_Terr_Id
8387 and jtq.terr_id = jt.terr_id
8388 and jtq.qual_usg_id = p_Qual_Usg_Id
8389 and jtv.terr_qual_id = jtq.terr_qual_id
8390 and ( ( jtv.COMPARISON_OPERATOR = '<' and p_terr_value_record.LOW_VALUE_number < jtv.low_value_number )
8391 or ( jtv.COMPARISON_OPERATOR = '<=' and p_terr_value_record.LOW_VALUE_number <= jtv.low_value_number )
8392 or ( jtv.COMPARISON_OPERATOR IN ('!=', '<>') and p_terr_value_record.LOW_VALUE_number <> jtv.low_value_number )
8393 or ( jtv.COMPARISON_OPERATOR = '=' and p_terr_value_record.LOW_VALUE_number = jtv.low_value_number )
8394 or ( jtv.COMPARISON_OPERATOR = '>' and p_terr_value_record.LOW_VALUE_number > jtv.low_value_number )
8395 or ( jtv.COMPARISON_OPERATOR = '>=' and p_terr_value_record.LOW_VALUE_number >= jtv.low_value_number )
8396 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'BETWEEN' and p_terr_value_record.LOW_VALUE_number between jtv.low_value_number and jtv.high_value_number )
8397 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'NOT BETWEEN' and p_terr_value_record.LOW_VALUE_number not between jtv.low_value_number and jtv.high_value_number ))
8398 and rownum < 2;
8399 If dummy > 0 Then
8400 l_found := dummy;
8401 End If;
8402 End If;
8403
8404 If p_terr_value_record.high_value_number is NOT NULL Then
8405 Select 1
8406 into dummy
8407 from jtf_terr_values jtv, jtf_terr_qual jtq, jtf_terr jt
8408 Where jt.parent_territory_id = p_Parent_Terr_Id
8409 and jtq.terr_id = jt.terr_id
8410 and jtq.qual_usg_id = p_Qual_Usg_Id
8411 and jtv.terr_qual_id = jtq.terr_qual_id
8412 and ( ( jtv.COMPARISON_OPERATOR = '<' and p_terr_value_record.high_value_number < jtv.high_value_number )
8413 or ( jtv.COMPARISON_OPERATOR = '<=' and p_terr_value_record.high_value_number <= jtv.high_value_number )
8414 or ( jtv.COMPARISON_OPERATOR IN ('!=', '<>') and p_terr_value_record.high_value_number <> jtv.high_value_number )
8415 or ( jtv.COMPARISON_OPERATOR = '=' and p_terr_value_record.high_value_number = jtv.high_value_number )
8416 or ( jtv.COMPARISON_OPERATOR = '>' and p_terr_value_record.high_value_number > jtv.high_value_number )
8417 or ( jtv.COMPARISON_OPERATOR = '>=' and p_terr_value_record.high_value_number >= jtv.high_value_number )
8418 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'BETWEEN' and p_terr_value_record.high_value_number between jtv.low_value_number and jtv.high_value_number )
8419 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'NOT BETWEEN' and p_terr_value_record.high_value_number not between jtv.low_value_number and jtv.high_value_number ))
8420 and rownum < 2;
8421 If dummy > 0 Then
8422 l_found := dummy;
8423 End If;
8424 End If;
8425
8426 ElsIf ( l_qual_col1_datatype = 'NUMBER' AND
8427 l_display_type = 'CURRENCY' AND
8428 ( l_convert_to_id_flag IN ('N', FND_API.G_MISS_CHAR) OR
8429 l_convert_to_id_flag is NULL ) )
8430 Then
8431
8432 If p_terr_value_record.low_value_number is NOT NULL Then
8433 Select count(*)
8434 into dummy
8435 from jtf_terr_values jtv, jtf_terr_qual jtq, jtf_terr jt
8436 Where jt.parent_territory_id = p_Parent_Terr_Id
8437 and jtq.terr_id = jt.terr_id
8438 and jtq.qual_usg_id = p_Qual_Usg_Id
8439 and jtv.terr_qual_id = jtq.terr_qual_id
8440 and ( ( jtv.COMPARISON_OPERATOR = '<' and p_terr_value_record.LOW_VALUE_number < jtv.low_value_number )
8441 or ( jtv.COMPARISON_OPERATOR = '<=' and p_terr_value_record.LOW_VALUE_number <= jtv.low_value_number )
8442 or ( jtv.COMPARISON_OPERATOR IN ('!=', '<>') and p_terr_value_record.LOW_VALUE_number <> jtv.low_value_number )
8443 or ( jtv.COMPARISON_OPERATOR = '=' and p_terr_value_record.LOW_VALUE_number = jtv.low_value_number )
8444 or ( jtv.COMPARISON_OPERATOR = '>' and p_terr_value_record.LOW_VALUE_number > jtv.low_value_number )
8445 or ( jtv.COMPARISON_OPERATOR = '>=' and p_terr_value_record.LOW_VALUE_number >= jtv.low_value_number )
8446 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'BETWEEN' and p_terr_value_record.LOW_VALUE_number between jtv.low_value_number and jtv.high_value_number )
8447 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'NOT BETWEEN' and p_terr_value_record.LOW_VALUE_number not between jtv.low_value_number and jtv.high_value_number ))
8448 and rownum < 2;
8449 If dummy > 0 Then
8450 l_found := dummy;
8451 End If;
8452 End If;
8453
8454 If p_terr_value_record.high_value_number is NOT NULL Then
8455 Select count(*)
8456 into dummy
8457 from jtf_terr_values jtv, jtf_terr_qual jtq, jtf_terr jt
8458 Where jt.parent_territory_id = p_Parent_Terr_Id
8459 and jtq.terr_id = jt.terr_id
8460 and jtq.qual_usg_id = p_Qual_Usg_Id
8461 and jtv.terr_qual_id = jtq.terr_qual_id
8462 and ( ( jtv.COMPARISON_OPERATOR = '<' and p_terr_value_record.HIGH_VALUE_number < jtv.high_value_number )
8463 or ( jtv.COMPARISON_OPERATOR = '<=' and p_terr_value_record.HIGH_VALUE_number <= jtv.high_value_number )
8464 or ( jtv.COMPARISON_OPERATOR IN ('!=', '<>') and p_terr_value_record.HIGH_VALUE_number <> jtv.high_value_number )
8465 or ( jtv.COMPARISON_OPERATOR = '=' and p_terr_value_record.HIGH_VALUE_number = jtv.high_value_number )
8466 or ( jtv.COMPARISON_OPERATOR = '>' and p_terr_value_record.HIGH_VALUE_number > jtv.high_value_number )
8467 or ( jtv.COMPARISON_OPERATOR = '>=' and p_terr_value_record.HIGH_VALUE_number >= jtv.high_value_number )
8468 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'BETWEEN' and p_terr_value_record.HIGH_VALUE_number between jtv.low_value_number and jtv.high_value_number )
8469 or ( UPPER(jtv.COMPARISON_OPERATOR) = 'NOT BETWEEN' and p_terr_value_record.HIGH_VALUE_number not between jtv.low_value_number and jtv.high_value_number ))
8470 and rownum < 2;
8471 If dummy > 0 Then
8472 l_found := dummy;
8473 End If;
8474 End If;
8475
8476 ElsIf ( l_qual_col1_datatype = 'NUMBER' AND
8477 l_display_type = 'INTEREST_TYPE'AND
8478 ( l_convert_to_id_flag IN ('N', FND_API.G_MISS_CHAR) OR
8479 l_convert_to_id_flag is NULL ) )
8480 Then
8481 Select count(*)
8482 into dummy
8483 from jtf_terr_values jtv, jtf_terr_qual jtq, jtf_terr jt
8484 Where jt.parent_territory_id = p_Parent_Terr_Id
8485 and jtq.terr_id = jt.terr_id
8486 and jtq.qual_usg_id = p_Qual_Usg_Id
8487 and jtv.terr_qual_id = jtq.terr_qual_id
8488 and ( ( jtv.interest_type_id = p_terr_value_record.interest_type_id )
8489 and ( jtv.primary_interest_code_id = p_terr_value_record.primary_interest_code_id or
8490 ( jtv.primary_interest_code_id IS NULL and p_terr_value_record.primary_interest_code_id is NULL) )
8491 and ( jtv.secondary_interest_code_id = p_terr_value_record.secondary_interest_code_id or
8492 ( jtv.secondary_interest_code_id is NULL and p_terr_value_record.secondary_interest_code_id is NULL) ) )
8493 and rownum < 2;
8494 If dummy > 0 Then
8495 l_found := dummy;
8496 End If;
8497 End If;
8498
8499 If l_found > 0 Then
8500 RETURN FND_API.G_TRUE;
8501 Else
8502 RETURN FND_API.G_FALSE;
8503 End If;
8504 EXCEPTION
8505 WHEN NO_DATA_FOUND Then
8506 RETURN FND_API.G_FALSE;
8507
8508 WHEN OTHERS THEN
8509 RETURN FND_API.G_FALSE;
8510
8511 END Overlap_Exists;
8512
8513 -- jdochert 09/09
8514 -- check for Unique Key constraint violation on JTF_TERR_USGS table
8515 PROCEDURE validate_terr_usgs_UK(
8516 p_Terr_Id IN NUMBER,
8517 p_Source_Id IN NUMBER,
8518 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
8519 x_Return_Status OUT NOCOPY VARCHAR2,
8520 x_msg_count OUT NOCOPY NUMBER,
8521 x_msg_data OUT NOCOPY VARCHAR2 )
8522 AS
8523
8524 -- cursor to check that Unique Key constraint not violated
8525 CURSOR csr_chk_uk_violation ( lp_terr_id NUMBER
8526 , lp_source_id NUMBER) IS
8527 SELECT 'X'
8528 FROM JTF_TERR_USGS_ALL
8529 WHERE terr_id = lp_terr_id
8530 AND source_id = lp_source_id;
8531
8532 l_return_csr VARCHAR2(1);
8533
8534 BEGIN
8535
8536 --dbms_output.put_line('Validate TERR USGS Unique_Key: Entering API ' || p_terr_id || ' ' || p_source_id);
8537 -- Initialize the status to success
8538 x_return_status := FND_API.G_RET_STS_SUCCESS;
8539
8540 /* check that Unique Key constraint not violated */
8541 IF ( p_terr_id IS NOT NULL AND p_terr_id <> FND_API.G_MISS_NUM AND
8542 p_source_id IS NOT NULL AND p_source_id <> FND_API.G_MISS_NUM ) THEN
8543
8544 /* check if rec already exists */
8545 OPEN csr_chk_uk_violation (p_terr_id, p_source_id);
8546 FETCH csr_chk_uk_violation INTO l_return_csr;
8547
8548 IF csr_chk_uk_violation%FOUND THEN
8549
8550 --dbms_output.put_line('Validate_Unique_Key: jtf_terr_usgs: VIOLATION');
8551
8552 x_return_status := FND_API.G_RET_STS_ERROR;
8553
8554 /* Debug message */
8555 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
8556 FND_MESSAGE.Set_Name ('JTF', 'JTF_TERR_USGS_UK_CON');
8557 FND_MSG_PUB.ADD;
8558 END IF;
8559
8560 END IF; /* c_chk_uk_violation%FOUND */
8561 CLOSE csr_chk_uk_violation;
8562
8563 END IF;
8564
8565 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
8566 p_data => x_msg_data);
8567
8568 EXCEPTION
8569
8570 WHEN OTHERS THEN
8571 --dbms_output('Validate_Foreign_Key: Others exception' || SQLERRM);
8572 X_return_status := FND_API.G_RET_STS_ERROR;
8573 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
8574 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Unique_Key' );
8575 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
8576 FND_MSG_PUB.ADD;
8577 FND_MSG_PUB.Count_And_Get
8578 ( p_count => x_msg_count,
8579 p_data => x_msg_data
8580 );
8581
8582 END validate_terr_usgs_UK;
8583
8584 -- jdochert 09/09
8585 -- check for Unique Key constraint violation on JTF_TERR_QTYPE_USGS table
8586 PROCEDURE validate_terr_qtype_usgs_UK(
8587 p_Terr_Id IN NUMBER,
8588 p_Qual_Type_Usg_Id IN NUMBER,
8589 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
8590 x_Return_Status OUT NOCOPY VARCHAR2,
8591 x_msg_count OUT NOCOPY NUMBER,
8592 x_msg_data OUT NOCOPY VARCHAR2 )
8593 AS
8594
8595 -- cursor to check that Unique Key constraint not violated
8596 CURSOR csr_chk_uk_violation ( lp_terr_id NUMBER
8597 , lp_qual_type_usg_id NUMBER) IS
8598 SELECT 'X'
8599 FROM JTF_TERR_QTYPE_USGS_ALL
8600 WHERE terr_id = lp_terr_id
8601 AND qual_type_usg_id = lp_qual_type_usg_id;
8602
8603 l_return_csr VARCHAR2(1);
8604
8605 BEGIN
8606
8607 --dbms_output.put_line('Validate QUAL_TYPE_USGS Unique_Key: Entering API');
8608 -- Initialize the status to success
8609 x_return_status := FND_API.G_RET_STS_SUCCESS;
8610
8611 /* check that Unique Key constraint not violated */
8612 IF ( p_terr_id IS NOT NULL AND p_terr_id <> FND_API.G_MISS_NUM AND
8613 p_qual_type_usg_id IS NOT NULL AND p_qual_type_usg_id <> FND_API.G_MISS_NUM ) THEN
8614
8615 /* check if rec already exists */
8616 OPEN csr_chk_uk_violation ( p_terr_id
8617 , p_qual_type_usg_id);
8618 FETCH csr_chk_uk_violation INTO l_return_csr;
8619
8620 IF csr_chk_uk_violation%FOUND THEN
8621 --dbms_output.put_line('Validate QUAL_TYPE_USGS Unique_Key Violation');
8622
8623 x_return_status := FND_API.G_RET_STS_ERROR;
8624
8625 /* Debug message */
8626 --arpatel 09/18 - set message for form to pick up.
8627 --IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
8628 FND_MESSAGE.Set_Name ('JTF', 'JTF_TERR_QTYPE_USGS_UK_CON');
8629 FND_MSG_PUB.ADD;
8630
8631 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
8632 p_data => x_msg_data);
8633
8634 --END IF;
8635
8636 END IF; /* c_chk_uk_violation%FOUND */
8637 CLOSE csr_chk_uk_violation;
8638
8639 END IF;
8640
8641 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
8642 p_data => x_msg_data);
8643
8644 EXCEPTION
8645
8646 WHEN OTHERS THEN
8647 --dbms_output('Validate_Foreign_Key: Others exception' || SQLERRM);
8648 X_return_status := FND_API.G_RET_STS_ERROR;
8649 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
8650 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Unique_Key' );
8651 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
8652 FND_MSG_PUB.ADD;
8653 FND_MSG_PUB.Count_And_Get
8654 ( p_count => x_msg_count,
8655 p_data => x_msg_data
8656 );
8657
8658 END validate_terr_qtype_usgs_UK;
8659
8660
8661 -- jdochert 10/04
8662 -- check that Number of Winners is valid for this territory
8663 PROCEDURE validate_num_winners(
8664 p_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
8665 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
8666 x_Return_Status OUT NOCOPY VARCHAR2,
8667 x_msg_count OUT NOCOPY NUMBER,
8668 x_msg_data OUT NOCOPY VARCHAR2,
8669 x_reason OUT NOCOPY VARCHAR2 )
8670 AS
8671
8672 /* Check Number Of Winners not set ABOVE
8673 ** this territory in the hierarchy
8674 ** 09/17/00 JDOCHERT BUG#1408610 FIX
8675 */
8676 CURSOR csr_chk_num_winners (lp_terr_id NUMBER) IS
8677 SELECT 'X'
8678 FROM jtf_terr_ALL j
8679 WHERE j.parent_territory_id = 1
8680 AND j.terr_id = lp_terr_id;
8681
8682 l_return_csr VARCHAR2(1);
8683
8684 BEGIN
8685
8686 --dbms_output.put_line('Validate_Num_Winners: Entering API ' || p_terr_id || ' ' || p_source_id);
8687 -- Initialize the status to success
8688 x_return_status := FND_API.G_RET_STS_SUCCESS;
8689
8690 If ( p_terr_all_rec.parent_territory_id <> 1 AND
8691 p_terr_all_rec.num_winners IS NOT NULL AND
8692 p_terr_all_rec.num_winners <> FND_API.G_MISS_NUM ) THEN
8693
8694 IF ( p_terr_all_rec.template_flag = 'Y' OR
8695 p_terr_all_rec.escalation_territory_flag = 'Y' ) THEN
8696
8697 x_reason := 'F';
8698
8699 ELSE
8700
8701 x_reason := 'A';
8702
8703 END IF;
8704
8705 x_return_status := FND_API.G_RET_STS_ERROR;
8706
8707 /* Debug message */
8708 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
8709 FND_MESSAGE.Set_Name ('JTF', 'JTF_TERR_NUM_WINNERS_TOP_LEVEL');
8710 FND_MSG_PUB.ADD;
8711 END IF;
8712
8713 END IF;
8714
8715 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
8716 p_data => x_msg_data);
8717
8718 EXCEPTION
8719
8720 WHEN OTHERS THEN
8721 --dbms_output('Validate_Num_Winners: Others exception' || SQLERRM);
8722 X_return_status := FND_API.G_RET_STS_ERROR;
8723 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
8724 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Num_Winners' );
8725 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
8726 FND_MSG_PUB.ADD;
8727 FND_MSG_PUB.Count_And_Get
8728 ( p_count => x_msg_count,
8729 p_data => x_msg_data
8730 );
8731
8732 END validate_num_winners;
8733
8734
8735 /* JDOCHERT - 041201 */
8736 PROCEDURE chk_num_copy_terr( p_node_terr_id IN NUMBER,
8737 p_limit_num IN NUMBER := 10,
8738 x_Return_Status OUT NOCOPY VARCHAR2,
8739 x_msg_count OUT NOCOPY NUMBER,
8740 x_msg_data OUT NOCOPY VARCHAR2,
8741 x_terr_num OUT NOCOPY NUMBER,
8742 x_copy_status OUT NOCOPY VARCHAR2 )
8743 AS
8744
8745 CURSOR csr_get_terr_num (lp_terr_id NUMBER) IS
8746 SELECT COUNT(*)
8747 FROM jtf_terr_all jt
8748 CONNECT BY PRIOR jt.terr_id = jt.parent_territory_id
8749 START WITH jt.terr_id = lp_terr_id;
8750
8751 BEGIN
8752
8753 --dbms_output.put_line('chk_num_copy_terr: Entering API ' || p_terr_id );
8754 -- Initialize the status to success
8755 x_return_status := FND_API.G_RET_STS_SUCCESS;
8756
8757 OPEN csr_get_terr_num(p_node_terr_id);
8758 FETCH csr_get_terr_num INTO x_terr_num;
8759 CLOSE csr_get_terr_num;
8760
8761 IF (x_terr_num <= p_limit_num) THEN
8762
8763 x_copy_status := FND_API.G_TRUE;
8764
8765 ELSE
8766 x_copy_status := FND_API.G_FALSE;
8767
8768 END IF;
8769
8770
8771 /* Debug message */
8772 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
8773 FND_MESSAGE.Set_Name ('JTF', 'JTF_TERR_NUM_COPY_TERR');
8774 FND_MSG_PUB.ADD;
8775 END IF;
8776
8777 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
8778 p_data => x_msg_data);
8779
8780 EXCEPTION
8781 WHEN OTHERS THEN
8782 --dbms_output('chk_num_copy_terr: Others exception' || SQLERRM);
8783 X_return_status := FND_API.G_RET_STS_ERROR;
8784 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
8785 FND_MESSAGE.Set_Token('PROC_NAME', 'chk_num_copy_terr' );
8786 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
8787 FND_MSG_PUB.ADD;
8788 FND_MSG_PUB.Count_And_Get
8789 ( p_count => x_msg_count,
8790 p_data => x_msg_data
8791 );
8792
8793 END chk_num_copy_terr;
8794
8795 PROCEDURE Concurrent_Copy_Territory (
8796 errbuf OUT NOCOPY VARCHAR2,
8797 retcode OUT NOCOPY VARCHAR2,
8798 p_copy_source_terr_Id IN NUMBER,
8799 p_name IN VARCHAR2,
8800 p_description IN VARCHAR2 := FND_API.G_MISS_CHAR,
8801 p_rank IN NUMBER := FND_API.G_MISS_NUM,
8802 p_start_date IN DATE,
8803 p_end_date IN DATE := FND_API.G_MISS_DATE,
8804 p_copy_rsc_flag IN VARCHAR2 := 'N',
8805 p_copy_hierarchy_flag IN VARCHAR2 := 'N',
8806 p_first_terr_node_flag IN VARCHAR2 := 'N',
8807 p_debug_flag IN VARCHAR2 := 'N',
8808 p_sql_trace IN VARCHAR2 := 'N' ) AS
8809
8810 /* local record variables */
8811 l_terr_rec JTF_TERRITORY_PVT.TERR_ALL_REC_TYPE;
8812
8813 /* local item variables */
8814 l_terr_id NUMBER;
8815 l_hier_terr_count NUMBER;
8816
8817 /* local standard API variables */
8818 l_api_name CONSTANT VARCHAR2(30) := 'Concurrent_Copy_Territory';
8819 l_api_version_number CONSTANT NUMBER := 1.0;
8820 l_return_status VARCHAR2(200);
8821 l_msg_count NUMBER;
8822 l_msg_data VARCHAR2(2000);
8823
8824 BEGIN
8825
8826 --dbms_output.put_line('ENTERING Concurrent_Copy_Territory');
8827 -- Standard Start of API savepoint
8828 SAVEPOINT CONC_COPY_TERR_PVT;
8829
8830 /* If the SQL trace flag is turned on, then turn on the trace */
8831 /* ARPATEL: 12/15/2003: Bug#3305019 fix */
8832 --If lower(p_SQL_Trace) = 'Y' Then
8833 -- dbms_session.set_sql_trace(TRUE);
8834 --Else
8835 -- dbms_session.set_sql_trace(FALSE);
8836 --End If;
8837
8838 /* If the debug flag is set, Then turn on the debug message logging */
8839 If upper( rtrim(p_Debug_Flag) ) = 'Y' Then
8840 G_Debug := TRUE;
8841 End If;
8842
8843 If G_Debug Then
8844 Write_Log(2, 'Concurrent Copy Territory Start');
8845 Write_Log(2, 'Source Territory ID is - ' || TO_CHAR(p_copy_source_terr_Id) );
8846 Write_Log(2, 'Source Territory Name is - ' || p_name );
8847 End If;
8848
8849
8850 /* ===================== */
8851 /* API BODY START */
8852 /* ======================*/
8853
8854 l_terr_rec.NAME := p_name;
8855 l_terr_rec.DESCRIPTION := p_description;
8856 l_terr_rec.RANK := p_rank;
8857 l_terr_rec.START_DATE_ACTIVE := p_start_date;
8858 l_terr_rec.END_DATE_ACTIVE := p_end_date;
8859
8860 l_terr_rec.ENABLED_FLAG := 'Y';
8861 l_terr_rec.TERR_ID := FND_API.G_MISS_NUM;
8862 l_terr_rec.LAST_UPDATE_DATE := FND_API.G_MISS_DATE;
8863 l_terr_rec.LAST_UPDATED_BY := FND_API.G_MISS_NUM;
8864 l_terr_rec.CREATION_DATE := FND_API.G_MISS_DATE;
8865 l_terr_rec.CREATED_BY := FND_API.G_MISS_NUM;
8866 l_terr_rec.LAST_UPDATE_LOGIN := FND_API.G_MISS_NUM;
8867 l_terr_rec.APPLICATION_SHORT_NAME := FND_API.G_MISS_CHAR;
8868 l_terr_rec.REQUEST_ID := FND_API.G_MISS_NUM;
8869 l_terr_rec.PROGRAM_APPLICATION_ID := FND_API.G_MISS_NUM;
8870 l_terr_rec.PROGRAM_ID := FND_API.G_MISS_NUM;
8871 l_terr_rec.PROGRAM_UPDATE_DATE := FND_API.G_MISS_DATE;
8872 l_terr_rec.ORG_ID := FND_API.G_MISS_NUM;
8873 l_terr_rec.UPDATE_FLAG := FND_API.G_MISS_CHAR;
8874 l_terr_rec.AUTO_ASSIGN_RESOURCES_FLAG := FND_API.G_MISS_CHAR;
8875 l_terr_rec.PLANNED_FLAG := FND_API.G_MISS_CHAR;
8876 l_terr_rec.TERRITORY_TYPE_ID := FND_API.G_MISS_NUM;
8877 l_terr_rec.PARENT_TERRITORY_ID := FND_API.G_MISS_NUM;
8878 l_terr_rec.TEMPLATE_FLAG := FND_API.G_MISS_CHAR;
8879 l_terr_rec.TEMPLATE_TERRITORY_ID := FND_API.G_MISS_NUM;
8880 l_terr_rec.ESCALATION_TERRITORY_FLAG := FND_API.G_MISS_CHAR;
8881 l_terr_rec.ESCALATION_TERRITORY_ID := FND_API.G_MISS_NUM;
8882 l_terr_rec.OVERLAP_ALLOWED_FLAG := FND_API.G_MISS_CHAR;
8883 l_terr_rec.ATTRIBUTE_CATEGORY := FND_API.G_MISS_CHAR;
8884 l_terr_rec.ATTRIBUTE1 := FND_API.G_MISS_CHAR;
8885 l_terr_rec.ATTRIBUTE2 := FND_API.G_MISS_CHAR;
8886 l_terr_rec.ATTRIBUTE3 := FND_API.G_MISS_CHAR;
8887 l_terr_rec.ATTRIBUTE4 := FND_API.G_MISS_CHAR;
8888 l_terr_rec.ATTRIBUTE5 := FND_API.G_MISS_CHAR;
8889 l_terr_rec.ATTRIBUTE6 := FND_API.G_MISS_CHAR;
8890 l_terr_rec.ATTRIBUTE7 := FND_API.G_MISS_CHAR;
8891 l_terr_rec.ATTRIBUTE8 := FND_API.G_MISS_CHAR;
8892 l_terr_rec.ATTRIBUTE9 := FND_API.G_MISS_CHAR;
8893 l_terr_rec.ATTRIBUTE10 := FND_API.G_MISS_CHAR;
8894 l_terr_rec.ATTRIBUTE11 := FND_API.G_MISS_CHAR;
8895 l_terr_rec.ATTRIBUTE12 := FND_API.G_MISS_CHAR;
8896 l_terr_rec.ATTRIBUTE13 := FND_API.G_MISS_CHAR;
8897 l_terr_rec.ATTRIBUTE14 := FND_API.G_MISS_CHAR;
8898 l_terr_rec.ATTRIBUTE15 := FND_API.G_MISS_CHAR;
8899 l_terr_rec.ORG_ID := FND_API.G_MISS_NUM;
8900 l_terr_rec.NUM_WINNERS := FND_API.G_MISS_NUM;
8901
8902 JTF_TERRITORY_PVT.Copy_Territory (
8903 p_Api_Version_Number => l_Api_Version_Number,
8904 p_Init_Msg_List => FND_API.G_TRUE,
8905 p_Commit => FND_API.G_TRUE,
8906 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
8907 p_copy_source_terr_Id => p_copy_source_terr_Id,
8908 p_new_terr_rec => l_terr_rec,
8909 p_copy_rsc_flag => p_copy_rsc_flag,
8910 p_copy_hierarchy_flag => p_copy_hierarchy_flag,
8911 p_first_terr_node_flag => p_first_terr_node_flag,
8912 x_Return_Status => l_return_status,
8913 x_Msg_Count => l_msg_count,
8914 x_Msg_Data => l_msg_data,
8915 x_terr_id => l_terr_id );
8916
8917 --dbms_output.put_line('***l_return_status ' ||l_return_status);
8918
8919 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
8920
8921 IF (G_Debug) THEN
8922 Write_Log(2, 'Copy Territories hierarchy has NOT completed successfully');
8923 errbuf := 'Program completed with errors';
8924 retcode := 1;
8925 END IF;
8926
8927 ELSE
8928
8929 IF (G_Debug) THEN
8930 Write_Log(2, 'Copy Territories hierarchy has completed successfully');
8931 errbuf := 'Program completed successfully';
8932 retcode := 0;
8933 END IF;
8934
8935 END IF;
8936
8937 IF (G_Debug) THEN
8938
8939 SELECT COUNT(*)
8940 INTO l_hier_terr_count
8941 FROM jtf_terr_all jt
8942 CONNECT BY PRIOR jt.terr_id = jt.parent_territory_id
8943 START WITH jt.terr_id = p_copy_source_terr_Id;
8944
8945 Write_Log(2, ' ');
8946 Write_Log(2, '/***************** BEGIN: COPY TERRITORY STATUS *********************/');
8947 Write_Log(2, 'Populating JTF_TERR_ALL table. Copied ' || l_hier_terr_count || ' territories.');
8948 Write_Log(2, 'Inserted ' || l_hier_terr_count || ' rows into JTF_TERR_ALL ');
8949 Write_Log(2, '/***************** END: COPY TERRITORY STATUS *********************/');
8950
8951 END IF;
8952
8953 /* ===================== */
8954 /* API BODY END */
8955 /* ======================*/
8956
8957 Write_Log(2,ERRBUF);
8958
8959 EXCEPTION
8960
8961 WHEN utl_file.invalid_path OR utl_file.invalid_mode OR
8962 utl_file.invalid_filehandle OR utl_file.invalid_operation OR
8963 utl_file.write_error Then
8964 ERRBUF := 'Program terminated with exception. Error writing to output file.';
8965 RETCODE := 2;
8966
8967 WHEN OTHERS THEN
8968 If G_Debug Then
8969 Write_Log(1,'Program terminated with OTHERS exception. ' || SQLERRM);
8970 End If;
8971 ERRBUF := 'Program terminated with OTHERS exception. ' || SQLERRM;
8972 RETCODE := 2;
8973
8974 END Concurrent_Copy_Territory;
8975
8976 --------------------------------------------------------------------
8977 -- Logging PROCEDURE
8978 --
8979 -- which = 1. write to log
8980 -- which = 2, write to output
8981 --------------------------------------------------------------------
8982 --
8983 PROCEDURE Write_Log(which number, mssg varchar2 )
8984 IS
8985 BEGIN
8986 --
8987 --dbms_output.put_line(' LOG: ' || mssg );
8988 FND_FILE.put(which, mssg);
8989 FND_FILE.NEW_LINE(which, 1);
8990 --
8991 -- If the output message and if debug flag is set then also write
8992 -- to the log file
8993 --
8994 If Which = 2 Then
8995 If G_Debug Then
8996 FND_FILE.put(1, mssg);
8997 FND_FILE.NEW_LINE(1, 1);
8998 End If;
8999 End IF;
9000 --
9001 END Write_Log;
9002
9003 FUNCTION conc_req_copy_terr (
9004 p_copy_source_terr_Id IN NUMBER,
9005 p_name IN VARCHAR2,
9006 p_description IN VARCHAR2 := FND_API.G_MISS_CHAR,
9007 p_rank IN NUMBER := FND_API.G_MISS_NUM,
9008 p_start_date IN DATE,
9009 p_end_date IN DATE := FND_API.G_MISS_DATE,
9010 p_copy_rsc_flag IN VARCHAR2 := 'N',
9011 p_copy_hierarchy_flag IN VARCHAR2 := 'N',
9012 p_first_terr_node_flag IN VARCHAR2 := 'N'
9013 )
9014 RETURN NUMBER
9015 AS
9016 l_process_id NUMBER;
9017 BEGIN
9018
9019 l_process_id := FND_REQUEST.submit_request (
9020 application => 'JTF' ,
9021 program => 'COPY_TERR_HIERARCHY_NODE' ,
9022 argument1 => p_copy_source_terr_Id ,
9023 argument2 => p_name ,
9024 argument3 => p_description ,
9025 argument4 => p_rank ,
9026 argument5 => p_start_date ,
9027 argument6 => p_end_date ,
9028 argument7 => p_copy_rsc_flag ,
9029 argument8 => p_copy_hierarchy_flag ,
9030 argument9 => p_first_terr_node_flag ,
9031 argument10 => 'Y' ,
9032 argument11 => 'Y'
9033 );
9034
9035 /* Debug message */
9036
9037 FND_MESSAGE.Set_Name ('JTF', 'JTF_CONC_REQ_COPY_TERR');
9038 FND_MESSAGE.Set_Token ('Template Territory ID', p_copy_source_terr_Id);
9039 FND_MESSAGE.Set_Token('Concurrent request ID',l_process_id);
9040 FND_MSG_PUB.add;
9041
9042 RETURN l_process_id;
9043 END conc_req_copy_terr;
9044
9045
9046
9047 -- jdochert 06/06/01
9048 -- check that parent territory is not already a child of this territory
9049 -- circular reference check
9050 PROCEDURE validate_parent(
9051 p_Terr_All_Rec IN Terr_All_Rec_Type := G_Miss_Terr_All_Rec,
9052 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
9053 x_Return_Status OUT NOCOPY VARCHAR2,
9054 x_msg_count OUT NOCOPY NUMBER,
9055 x_msg_data OUT NOCOPY VARCHAR2 )
9056 AS
9057
9058 e_Circular_Reference EXCEPTION;
9059 PRAGMA EXCEPTION_INIT(e_Circular_Reference, -01436);
9060
9061 l_return_csr NUMBER;
9062 l_existing_parent_terr_id NUMBER;
9063
9064 BEGIN
9065
9066 --dbms_output.put_line('[1]Validate_Parent: Entering API ');
9067 -- Initialize the status to success
9068 x_return_status := FND_API.G_RET_STS_SUCCESS;
9069
9070 --dbms_output.put_line('[2]Validate_Parent: Entering API ');
9071
9072 BEGIN
9073
9074 SELECT j.parent_territory_id
9075 INTO l_existing_parent_terr_id
9076 FROM jtf_terr_all j
9077 WHERE j.terr_id = p_terr_all_rec.terr_id;
9078
9079 EXCEPTION
9080 WHEN NO_DATA_FOUND THEN
9081 NULL;
9082 END;
9083
9084 IF ( p_terr_all_rec.parent_territory_id <> l_existing_parent_terr_id) THEN
9085
9086 /* Top down checking if new parent
9087 ** territory is already a child
9088 ** of the current territory
9089 */
9090 SELECT COUNT(*)
9091 INTO l_return_csr
9092 FROM jtf_terr_all j
9093 WHERE j.terr_id = p_terr_all_rec.parent_territory_id -- new parent territory id
9094 CONNECT BY PRIOR j.terr_id = j.parent_territory_id
9095 START WITH j.terr_id = p_terr_all_rec.terr_id; -- territory_id
9096
9097 IF (l_return_csr <> 0 )THEN
9098 RAISE e_Circular_Reference;
9099 END IF;
9100
9101 END IF;
9102
9103 --dbms_output.put_line('[3]l_return_csr = ' || l_return_csr);
9104
9105 /* Debug message */
9106 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
9107 FND_MESSAGE.Set_Name ('JTF', 'JTF_TERR_CIRCULAR_REFERENCE');
9108 FND_MSG_PUB.ADD;
9109 END IF;
9110
9111 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
9112 p_data => x_msg_data);
9113
9114 EXCEPTION
9115
9116 WHEN e_Circular_Reference THEN
9117 --dbms_output.put_line('Validate_Parent: e_Circular_Reference exception' || SQLERRM);
9118
9119 X_return_status := FND_API.G_RET_STS_ERROR;
9120
9121 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_EXPECTED_ERROR');
9122 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Parent' );
9123 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
9124 FND_MSG_PUB.ADD;
9125
9126 FND_MSG_PUB.Count_And_Get
9127 ( p_count => x_msg_count,
9128 p_data => x_msg_data
9129 );
9130
9131 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9132 --dbms_output.put_line('Validate_Parent: FND_API.G_EXC_UNEXPECTED_ERROR');
9133 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9134 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
9135 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Parent' );
9136 FND_MSG_PUB.Count_And_Get
9137 ( P_count => x_msg_count,
9138 P_data => x_msg_data
9139 );
9140
9141 WHEN OTHERS THEN
9142 --dbms_output.put_line('Validate_Parent: Others exception' || SQLERRM);
9143 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
9144 FND_MESSAGE.Set_Name('JTF', 'JTF_TERR_UNEXPECTED_ERROR');
9145 FND_MESSAGE.Set_Token('PROC_NAME', 'Validate_Parent' );
9146 FND_MESSAGE.Set_Token('ERROR', sqlerrm );
9147 FND_MSG_PUB.ADD;
9148 FND_MSG_PUB.Count_And_Get
9149 ( p_count => x_msg_count,
9150 p_data => x_msg_data
9151 );
9152 END validate_parent;
9153
9154
9155 /* Function used in JTF_TERR_VALUES_DESC_V to return
9156 ** descriptive values for ids and lookup_codes
9157 */
9158 FUNCTION get_terr_value_desc (
9159 p_convert_to_id_flag VARCHAR2
9160 , p_display_type VARCHAR2
9161 , p_column_count NUMBER := FND_API.G_MISS_NUM
9162 , p_display_sql VARCHAR2 := FND_API.G_MISS_CHAR
9163 , p_terr_value1 VARCHAR2
9164 , p_terr_value2 VARCHAR2 := FND_API.G_MISS_CHAR
9165 )
9166 RETURN VARCHAR2 IS
9167
9168 query_str VARCHAR2(1000);
9169 value_desc VARCHAR2(1000);
9170 l_terr_value1 VARCHAR2(360);
9171 l_terr_value2 VARCHAR2(360);
9172
9173 BEGIN
9174
9175 IF ( p_display_sql = FND_API.G_MISS_CHAR OR
9176 p_display_sql IS NULL) THEN
9177
9178 --dbms_output( 'LOV_SQL IS NULL, returning value = ' || p_terr_value);
9179
9180 RETURN p_terr_value1;
9181
9182 ELSE /* build dynamic SQl */
9183
9184 query_str := p_display_sql;
9185
9186 l_terr_value1 := p_terr_value1;
9187 l_terr_value2 := p_terr_value2;
9188
9189 IF (p_display_type IN ('CHAR_2IDS', 'DEP_2FIELDS_CHAR_2IDS', 'DEP_3FIELDS_CHAR_3IDS')) THEN
9190
9191 query_str := p_display_sql;
9192
9193 /* check if value is NUMBER or VARCHAR2 */
9194 ELSIF ( ( p_display_type = 'CHAR' AND
9195 p_convert_to_id_flag = 'Y' ) OR
9196 p_display_type = 'NUMERIC' OR
9197 p_display_type = 'INTEREST_TYPE' OR
9198 p_display_type = 'COMPETENCE' ) THEN
9199
9200 query_str := query_str || ' TO_NUMBER(:terr_value)' ;
9201
9202 ELSE
9203 --dbms_output( 'convert_to_id_flag = N');
9204
9205 query_str := query_str || ' :terr_value1' ;
9206
9207 END IF;
9208
9209 query_str := query_str || ' AND rownum < 2' ;
9210
9211 --dbms_output('query_str = ' || query_str);
9212
9213 IF (p_display_type IN ('CHAR_2IDS', 'DEP_2FIELDS_CHAR_2IDS', 'DEP_3FIELDS_CHAR_3IDS')) THEN
9214
9215 /* execute dynamic SQl */
9216 EXECUTE IMMEDIATE query_str
9217 INTO value_desc
9218 USING l_terr_value1, l_terr_value2;
9219
9220 ELSE
9221
9222 /* execute dynamic SQl */
9223 EXECUTE IMMEDIATE query_str
9224 INTO value_desc
9225 USING l_terr_value1;
9226
9227 END IF;
9228
9229 --dbms_output( 'returning value = ' || p_terr_value);
9230
9231 RETURN value_desc;
9232
9233 END IF;
9234
9235 EXCEPTION
9236 WHEN NO_DATA_FOUND THEN
9237 RETURN NULL;
9238
9239 END get_terr_value_desc;
9240
9241
9242 -- Package Body
9243 END JTF_TERRITORY_PVT;