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