[Home] [Help]
PACKAGE BODY: APPS.AMS_DMMODEL_PUB
Source
1 PACKAGE BODY AMS_DMModel_PUB as
2 /* $Header: amspdmmb.pls 115.11 2002/12/17 04:11:48 choang noship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 -- AMS_DMModel_PUB
7 -- Purpose
8 --
9 -- History
10 -- 02-Feb-2001 choang Added new columns.
11 -- 08-Feb-2001 choang Create_Model for ODM Accelerator changed to use
12 -- table handler to avoid using savepoint and rollback
13 -- due to distributed transaction restrictions.
14 -- 16-Feb-2001 choang Replaced top_down_flag with row_selection_type.
15 -- 26-Feb-2001 choang Added custom_setup_id, country_id, and best_subtree.
16 -- 01-May-2001 choang Added wf_itemkey to create_model.
17 -- 16-Sep-2001 choang Added custom_setup_id in pvt create api call.
18 --
19 -- NOTE
20 --
21 -- End of Comments
22 -- ===============================================================
23
24
25 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AMS_DMModel_PUB';
26 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amspdmmb.pls';
27
28 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
29 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
30 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
31
32 PROCEDURE Create_Model(
33 p_api_version_number IN NUMBER,
34 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
35 p_commit IN VARCHAR2 := FND_API.G_FALSE,
36
37 x_return_status OUT NOCOPY VARCHAR2,
38 x_msg_count OUT NOCOPY NUMBER,
39 x_msg_data OUT NOCOPY VARCHAR2,
40
41 p_model_rec IN model_rec_type := g_miss_model_rec,
42 x_model_id OUT NOCOPY NUMBER
43 )
44 IS
45 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Model';
46 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
47 l_pvt_model_rec AMS_DM_Model_PVT.dm_model_rec_type;
48 BEGIN
49 -- Standard Start of API savepoint
50 SAVEPOINT Create_Model_PUB;
51
52 -- Standard call to check for call compatibility.
53 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
54 p_api_version_number,
55 l_api_name,
56 G_PKG_NAME)
57 THEN
58 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
59 END IF;
60
61 -- Initialize message list if p_init_msg_list is set to TRUE.
62 IF FND_API.to_Boolean( p_init_msg_list )
63 THEN
64 FND_MSG_PUB.initialize;
65 END IF;
66
67 -- Debug Message
68 IF (AMS_DEBUG_HIGH_ON) THEN
69
70 AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
71 END IF;
72
73
74 -- Initialize API return status to SUCCESS
75 x_return_status := FND_API.G_RET_STS_SUCCESS;
76
77 --
78 -- API body
79 --
80
81 -- construct private record using public record
82 l_pvt_model_rec.model_id := p_model_rec.model_id;
83 l_pvt_model_rec.model_type := p_model_rec.model_type;
84 l_pvt_model_rec.user_status_id := p_model_rec.user_status_id;
85 l_pvt_model_rec.status_code := p_model_rec.status_code;
86 l_pvt_model_rec.status_date := p_model_rec.status_date;
87 l_pvt_model_rec.last_build_date := p_model_rec.last_build_date;
88 l_pvt_model_rec.owner_user_id := p_model_rec.owner_user_id;
89 l_pvt_model_rec.scheduled_date := p_model_rec.scheduled_date;
90 l_pvt_model_rec.scheduled_timezone_id := p_model_rec.scheduled_timezone_id;
91 l_pvt_model_rec.expiration_date := p_model_rec.expiration_date;
92 l_pvt_model_rec.custom_setup_id := p_model_rec.custom_setup_id;
93 l_pvt_model_rec.country_id := p_model_rec.country_id;
94 l_pvt_model_rec.best_subtree := p_model_rec.best_subtree;
95 l_pvt_model_rec.results_flag := p_model_rec.results_flag;
96 l_pvt_model_rec.logs_flag := p_model_rec.logs_flag;
97 l_pvt_model_rec.target_field := p_model_rec.target_field;
98 l_pvt_model_rec.target_type := p_model_rec.target_type;
99 l_pvt_model_rec.target_positive_value := p_model_rec.target_positive_value;
100 l_pvt_model_rec.min_records := p_model_rec.min_records;
101 l_pvt_model_rec.max_records := p_model_rec.max_records;
102 l_pvt_model_rec.row_selection_type := p_model_rec.row_selection_type;
103 l_pvt_model_rec.every_nth_row := p_model_rec.every_nth_row;
104 l_pvt_model_rec.pct_random := p_model_rec.pct_random;
105 l_pvt_model_rec.performance := p_model_rec.performance;
106 l_pvt_model_rec.target_group_type := p_model_rec.target_group_type;
107 l_pvt_model_rec.darwin_model_ref := p_model_rec.darwin_model_ref;
108 l_pvt_model_rec.attribute_category := p_model_rec.attribute_category;
109 l_pvt_model_rec.attribute1 := p_model_rec.attribute1;
110 l_pvt_model_rec.attribute2 := p_model_rec.attribute2;
111 l_pvt_model_rec.attribute3 := p_model_rec.attribute3;
112 l_pvt_model_rec.attribute4 := p_model_rec.attribute4;
113 l_pvt_model_rec.attribute5 := p_model_rec.attribute5;
114 l_pvt_model_rec.attribute6 := p_model_rec.attribute6;
115 l_pvt_model_rec.attribute7 := p_model_rec.attribute7;
116 l_pvt_model_rec.attribute8 := p_model_rec.attribute8;
117 l_pvt_model_rec.attribute9 := p_model_rec.attribute9;
118 l_pvt_model_rec.attribute10 := p_model_rec.attribute10;
119 l_pvt_model_rec.attribute11 := p_model_rec.attribute11;
120 l_pvt_model_rec.attribute12 := p_model_rec.attribute12;
121 l_pvt_model_rec.attribute13 := p_model_rec.attribute13;
122 l_pvt_model_rec.attribute14 := p_model_rec.attribute14;
123 l_pvt_model_rec.attribute15 := p_model_rec.attribute15;
124 l_pvt_model_rec.model_name := p_model_rec.model_name;
125 l_pvt_model_rec.description := p_model_rec.description;
126
127 -- Calling Private package: Create_Model
128 AMS_Dm_model_PVT.Create_DM_Model(
129 p_api_version_number => 1.0,
130 p_init_msg_list => FND_API.G_FALSE,
131 p_commit => FND_API.G_FALSE,
132 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
133 x_return_status => x_return_status,
134 x_msg_count => x_msg_count,
135 x_msg_data => x_msg_data,
136 p_dm_model_rec => l_pvt_model_rec,
137 x_custom_setup_id => l_pvt_model_rec.custom_setup_id,
138 x_model_id => x_model_id
139 );
140 -- Check return status from the above procedure call
141 IF x_return_status = FND_API.G_RET_STS_ERROR then
142 RAISE FND_API.G_EXC_ERROR;
143 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
144 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
145 END IF;
146 --
147 -- End of API body.
148 --
149
150 -- Standard check for p_commit
151 IF FND_API.to_Boolean( p_commit )
152 THEN
153 COMMIT WORK;
154 END IF;
155
156
157 -- Debug Message
158 IF (AMS_DEBUG_HIGH_ON) THEN
159
160 AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
161 END IF;
162
163 -- Standard call to get message count and if count is 1, get message info.
164 FND_MSG_PUB.Count_And_Get
165 (p_count => x_msg_count,
166 p_data => x_msg_data
167 );
168 EXCEPTION
169
170 WHEN AMS_Utility_PVT.resource_locked THEN
171 x_return_status := FND_API.g_ret_sts_error;
172 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
173 FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
174 FND_MSG_PUB.add;
175 END IF;
176
177 WHEN FND_API.G_EXC_ERROR THEN
178 ROLLBACK TO Create_Model_PUB;
179 x_return_status := FND_API.G_RET_STS_ERROR;
180 -- Standard call to get message count and if count=1, get the message
181 FND_MSG_PUB.Count_And_Get (
182 p_encoded => FND_API.G_FALSE,
183 p_count => x_msg_count,
184 p_data => x_msg_data
185 );
186
187 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
188 ROLLBACK TO Create_Model_PUB;
189 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
190 -- Standard call to get message count and if count=1, get the message
191 FND_MSG_PUB.Count_And_Get (
192 p_encoded => FND_API.G_FALSE,
193 p_count => x_msg_count,
194 p_data => x_msg_data
195 );
196
197 WHEN OTHERS THEN
198 ROLLBACK TO Create_Model_PUB;
199 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
200 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
201 THEN
202 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
203 END IF;
204 -- Standard call to get message count and if count=1, get the message
205 FND_MSG_PUB.Count_And_Get (
206 p_encoded => FND_API.G_FALSE,
207 p_count => x_msg_count,
208 p_data => x_msg_data
209 );
210 End Create_Model;
211
212
213 PROCEDURE Update_Model(
214 p_api_version_number IN NUMBER,
215 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
216 p_commit IN VARCHAR2 := FND_API.G_FALSE,
217
218 x_return_status OUT NOCOPY VARCHAR2,
219 x_msg_count OUT NOCOPY NUMBER,
220 x_msg_data OUT NOCOPY VARCHAR2,
221
222 p_model_rec IN model_rec_type,
223 x_object_version_number OUT NOCOPY NUMBER
224 )
225
226 IS
227 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Model';
228 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
229 l_object_version_number NUMBER;
230 l_pvt_model_rec AMS_DM_Model_PVT.dm_model_rec_type;
231 BEGIN
232 -- Standard Start of API savepoint
233 SAVEPOINT Update_Model_PUB;
234
235 -- Standard call to check for call compatibility.
236 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
237 p_api_version_number,
238 l_api_name,
239 G_PKG_NAME)
240 THEN
241 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
242 END IF;
243
244 -- Initialize message list if p_init_msg_list is set to TRUE.
245 IF FND_API.to_Boolean( p_init_msg_list )
246 THEN
247 FND_MSG_PUB.initialize;
248 END IF;
249
250 -- Debug Message
251 IF (AMS_DEBUG_HIGH_ON) THEN
252
253 AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
254 END IF;
255
256
257 -- Initialize API return status to SUCCESS
258 x_return_status := FND_API.G_RET_STS_SUCCESS;
259
260 --
261 -- API body
262 --
263
264 -- construct private record using public record
265 l_pvt_model_rec.model_id := p_model_rec.model_id;
266 l_pvt_model_rec.object_version_number := p_model_rec.object_version_number;
267 l_pvt_model_rec.model_type := p_model_rec.model_type;
268 l_pvt_model_rec.user_status_id := p_model_rec.user_status_id;
269 l_pvt_model_rec.status_code := p_model_rec.status_code;
270 l_pvt_model_rec.status_date := p_model_rec.status_date;
271 l_pvt_model_rec.last_build_date := p_model_rec.last_build_date;
272 l_pvt_model_rec.owner_user_id := p_model_rec.owner_user_id;
273 l_pvt_model_rec.scheduled_date := p_model_rec.scheduled_date;
274 l_pvt_model_rec.scheduled_timezone_id := p_model_rec.scheduled_timezone_id;
275 l_pvt_model_rec.expiration_date := p_model_rec.expiration_date;
276 l_pvt_model_rec.custom_setup_id := p_model_rec.custom_setup_id;
277 l_pvt_model_rec.country_id := p_model_rec.country_id;
278 l_pvt_model_rec.best_subtree := p_model_rec.best_subtree;
279 l_pvt_model_rec.results_flag := p_model_rec.results_flag;
280 l_pvt_model_rec.logs_flag := p_model_rec.logs_flag;
281 l_pvt_model_rec.target_field := p_model_rec.target_field;
282 l_pvt_model_rec.target_type := p_model_rec.target_type;
283 l_pvt_model_rec.target_positive_value := p_model_rec.target_positive_value;
284 l_pvt_model_rec.min_records := p_model_rec.min_records;
285 l_pvt_model_rec.max_records := p_model_rec.max_records;
286 l_pvt_model_rec.row_selection_type := p_model_rec.row_selection_type;
287 l_pvt_model_rec.every_nth_row := p_model_rec.every_nth_row;
288 l_pvt_model_rec.pct_random := p_model_rec.pct_random;
289 l_pvt_model_rec.performance := p_model_rec.performance;
290 l_pvt_model_rec.target_group_type := p_model_rec.target_group_type;
291 l_pvt_model_rec.darwin_model_ref := p_model_rec.darwin_model_ref;
292 l_pvt_model_rec.attribute_category := p_model_rec.attribute_category;
293 l_pvt_model_rec.attribute1 := p_model_rec.attribute1;
294 l_pvt_model_rec.attribute2 := p_model_rec.attribute2;
295 l_pvt_model_rec.attribute3 := p_model_rec.attribute3;
296 l_pvt_model_rec.attribute4 := p_model_rec.attribute4;
297 l_pvt_model_rec.attribute5 := p_model_rec.attribute5;
298 l_pvt_model_rec.attribute6 := p_model_rec.attribute6;
299 l_pvt_model_rec.attribute7 := p_model_rec.attribute7;
300 l_pvt_model_rec.attribute8 := p_model_rec.attribute8;
301 l_pvt_model_rec.attribute9 := p_model_rec.attribute9;
302 l_pvt_model_rec.attribute10 := p_model_rec.attribute10;
303 l_pvt_model_rec.attribute11 := p_model_rec.attribute11;
304 l_pvt_model_rec.attribute12 := p_model_rec.attribute12;
305 l_pvt_model_rec.attribute13 := p_model_rec.attribute13;
306 l_pvt_model_rec.attribute14 := p_model_rec.attribute14;
307 l_pvt_model_rec.attribute15 := p_model_rec.attribute15;
308 l_pvt_model_rec.model_name := p_model_rec.model_name;
309 l_pvt_model_rec.description := p_model_rec.description;
310
311 AMS_DM_Model_PVT.Update_DM_Model(
312 p_api_version_number => 1.0,
313 p_init_msg_list => FND_API.G_FALSE,
314 p_commit => p_commit,
315 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
316 x_return_status => x_return_status,
317 x_msg_count => x_msg_count,
318 x_msg_data => x_msg_data,
319 p_dm_model_rec => l_pvt_model_rec,
320 x_object_version_number => l_object_version_number
321 );
322 -- Check return status from the above procedure call
323 IF x_return_status = FND_API.G_RET_STS_ERROR then
324 RAISE FND_API.G_EXC_ERROR;
325 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
326 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
327 END IF;
328 --
329 -- End of API body
330 --
331
332 -- Standard check for p_commit
333 IF FND_API.to_Boolean( p_commit )
334 THEN
335 COMMIT WORK;
336 END IF;
337
338
339 -- Debug Message
340 IF (AMS_DEBUG_HIGH_ON) THEN
341
342 AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
343 END IF;
344
345 -- Standard call to get message count and if count is 1, get message info.
346 FND_MSG_PUB.Count_And_Get
347 (p_count => x_msg_count,
348 p_data => x_msg_data
349 );
350 EXCEPTION
351
352 WHEN AMS_Utility_PVT.resource_locked THEN
353 x_return_status := FND_API.g_ret_sts_error;
354 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
355 FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
356 FND_MSG_PUB.add;
357 END IF;
358
359 WHEN FND_API.G_EXC_ERROR THEN
360 ROLLBACK TO Update_Model_PUB;
361 x_return_status := FND_API.G_RET_STS_ERROR;
362 -- Standard call to get message count and if count=1, get the message
363 FND_MSG_PUB.Count_And_Get (
364 p_encoded => FND_API.G_FALSE,
365 p_count => x_msg_count,
366 p_data => x_msg_data
367 );
368
369 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
370 ROLLBACK TO Update_Model_PUB;
371 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
372 -- Standard call to get message count and if count=1, get the message
373 FND_MSG_PUB.Count_And_Get (
374 p_encoded => FND_API.G_FALSE,
375 p_count => x_msg_count,
376 p_data => x_msg_data
377 );
378
379 WHEN OTHERS THEN
380 ROLLBACK TO Update_Model_PUB;
381 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
382 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
383 THEN
384 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
385 END IF;
389 p_count => x_msg_count,
386 -- Standard call to get message count and if count=1, get the message
387 FND_MSG_PUB.Count_And_Get (
388 p_encoded => FND_API.G_FALSE,
390 p_data => x_msg_data
391 );
392 End Update_Model;
393
394
395 PROCEDURE Delete_Model(
396 p_api_version_number IN NUMBER,
397 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
398 p_commit IN VARCHAR2 := FND_API.G_FALSE,
399 x_return_status OUT NOCOPY VARCHAR2,
400 x_msg_count OUT NOCOPY NUMBER,
401 x_msg_data OUT NOCOPY VARCHAR2,
402 p_model_id IN NUMBER,
403 p_object_version_number IN NUMBER
404 )
405
406 IS
407 L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_Model';
408 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
409 l_MODEL_ID NUMBER := p_MODEL_ID;
410 l_object_version_number NUMBER := p_object_version_number;
411 l_pvt_model_rec AMS_DM_Model_PVT.dm_model_rec_type;
412 BEGIN
413 -- Standard Start of API savepoint
414 SAVEPOINT Delete_Model_PUB;
415
416 -- Standard call to check for call compatibility.
417 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
418 p_api_version_number,
419 l_api_name,
420 G_PKG_NAME)
421 THEN
422 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
423 END IF;
424
425 -- Initialize message list if p_init_msg_list is set to TRUE.
426 IF FND_API.to_Boolean( p_init_msg_list )
427 THEN
428 FND_MSG_PUB.initialize;
429 END IF;
430
431 -- Debug Message
432 IF (AMS_DEBUG_HIGH_ON) THEN
433
434 AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
435 END IF;
436
437
438 -- Initialize API return status to SUCCESS
439 x_return_status := FND_API.G_RET_STS_SUCCESS;
440
441 --
442 -- API body
443 --
444 AMS_DM_Model_PVT.Delete_DM_Model(
445 p_api_version_number => 1.0,
446 p_init_msg_list => FND_API.G_FALSE,
447 p_commit => p_commit,
448 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
449 x_return_status => x_return_status,
450 x_msg_count => x_msg_count,
451 x_msg_data => x_msg_data,
452 p_model_id => l_model_id,
453 p_object_version_number => l_object_version_number );
454
455
456 -- Check return status from the above procedure call
457 IF x_return_status = FND_API.G_RET_STS_ERROR then
458 RAISE FND_API.G_EXC_ERROR;
459 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
460 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
461 END IF;
462 --
463 -- End of API body
464 --
465
466 -- Standard check for p_commit
467 IF FND_API.to_Boolean( p_commit )
468 THEN
469 COMMIT WORK;
470 END IF;
471
472
473 -- Debug Message
474 IF (AMS_DEBUG_HIGH_ON) THEN
475
476 AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
477 END IF;
478
479 -- Standard call to get message count and if count is 1, get message info.
480 FND_MSG_PUB.Count_And_Get
481 (p_count => x_msg_count,
482 p_data => x_msg_data
483 );
484 EXCEPTION
485
486 WHEN AMS_Utility_PVT.resource_locked THEN
487 x_return_status := FND_API.g_ret_sts_error;
488 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
489 FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
490 FND_MSG_PUB.add;
491 END IF;
492
493 WHEN FND_API.G_EXC_ERROR THEN
494 ROLLBACK TO Delete_Model_PUB;
495 x_return_status := FND_API.G_RET_STS_ERROR;
496 -- Standard call to get message count and if count=1, get the message
497 FND_MSG_PUB.Count_And_Get (
498 p_encoded => FND_API.G_FALSE,
499 p_count => x_msg_count,
500 p_data => x_msg_data
501 );
502
503 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
504 ROLLBACK TO Delete_Model_PUB;
505 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
506 -- Standard call to get message count and if count=1, get the message
507 FND_MSG_PUB.Count_And_Get (
508 p_encoded => FND_API.G_FALSE,
509 p_count => x_msg_count,
510 p_data => x_msg_data
511 );
512
513 WHEN OTHERS THEN
514 ROLLBACK TO Delete_Model_PUB;
515 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
516 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
517 THEN
518 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
519 END IF;
520 -- Standard call to get message count and if count=1, get the message
521 FND_MSG_PUB.Count_And_Get (
522 p_encoded => FND_API.G_FALSE,
523 p_count => x_msg_count,
524 p_data => x_msg_data
525 );
526 End Delete_Model;
527
528
529 PROCEDURE Lock_Model(
530 p_api_version_number IN NUMBER,
531 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
532 x_return_status OUT NOCOPY VARCHAR2,
533 x_msg_count OUT NOCOPY NUMBER,
534 x_msg_data OUT NOCOPY VARCHAR2,
535
536 p_model_id IN NUMBER,
537 p_object_version IN NUMBER
538 )
539
540 IS
541 L_API_NAME CONSTANT VARCHAR2(30) := 'Lock_Model';
542 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
543 l_pvt_model_rec AMS_DM_Model_PVT.dm_model_rec_type;
544 BEGIN
545
546 -- Standard call to check for call compatibility.
547 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
548 p_api_version_number,
549 l_api_name,
550 G_PKG_NAME)
551 THEN
552 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
553 END IF;
554
555 -- Initialize message list if p_init_msg_list is set to TRUE.
556 IF FND_API.to_Boolean( p_init_msg_list )
557 THEN
558 FND_MSG_PUB.initialize;
559 END IF;
560
561 -- Debug Message
562 IF (AMS_DEBUG_HIGH_ON) THEN
563
564 AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
565 END IF;
566
567
568 -- Initialize API return status to SUCCESS
569 x_return_status := FND_API.G_RET_STS_SUCCESS;
570
571 --
572 -- API body
573 --
574 -- Calling Private package: Create_Model
575 -- Hint: Primary key needs to be returned
576 AMS_DM_Model_PVT.Lock_DM_Model(
577 p_api_version_number => 1.0,
578 p_init_msg_list => FND_API.G_FALSE,
579 x_return_status => x_return_status,
580 x_msg_count => x_msg_count,
581 x_msg_data => x_msg_data,
582 p_model_id => p_model_id,
583 p_object_version => p_object_version);
584
585
586 -- Check return status from the above procedure call
587 IF x_return_status = FND_API.G_RET_STS_ERROR then
588 RAISE FND_API.G_EXC_ERROR;
592 --
589 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
590 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
591 END IF;
593 -- End of API body.
594 --
595
596 -- Debug Message
597 IF (AMS_DEBUG_HIGH_ON) THEN
598
599 AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
600 END IF;
601
602 EXCEPTION
603
604 WHEN AMS_Utility_PVT.resource_locked THEN
605 x_return_status := FND_API.g_ret_sts_error;
606 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
607 FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
608 FND_MSG_PUB.add;
609 END IF;
610
611 WHEN FND_API.G_EXC_ERROR THEN
612 ROLLBACK TO Lock_Model_PUB;
613 x_return_status := FND_API.G_RET_STS_ERROR;
614 -- Standard call to get message count and if count=1, get the message
615 FND_MSG_PUB.Count_And_Get (
616 p_encoded => FND_API.G_FALSE,
617 p_count => x_msg_count,
618 p_data => x_msg_data
619 );
620
621 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
622 ROLLBACK TO Lock_Model_PUB;
623 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
624 -- Standard call to get message count and if count=1, get the message
625 FND_MSG_PUB.Count_And_Get (
626 p_encoded => FND_API.G_FALSE,
627 p_count => x_msg_count,
628 p_data => x_msg_data
629 );
630
631 WHEN OTHERS THEN
632 ROLLBACK TO Lock_Model_PUB;
633 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
634 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
635 THEN
636 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
637 END IF;
638 -- Standard call to get message count and if count=1, get the message
639 FND_MSG_PUB.Count_And_Get (
640 p_encoded => FND_API.G_FALSE,
641 p_count => x_msg_count,
642 p_data => x_msg_data
643 );
644 End Lock_Model;
645
646
647 PROCEDURE Create_Model (
648 p_model_type IN VARCHAR2,
649 p_model_name IN VARCHAR2,
650 p_target_group_type IN VARCHAR2 := 'CONSUMER',
651 p_target_type IN VARCHAR2 := 'BINARY',
652 p_target_field IN VARCHAR2,
653 p_target_value IN VARCHAR2,
654 p_darwin_model_ref IN VARCHAR2 := NULL,
655 p_description IN VARCHAR2,
656 x_model_id OUT NOCOPY NUMBER,
657 x_return_status OUT NOCOPY VARCHAR2
658 )
659 IS
660 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Model';
661 L_API_VERSION CONSTANT NUMBER := 1.0;
662 L_MODEL_STATUS_TYPE CONSTANT VARCHAR2(30) := 'AMS_DM_MODEL_STATUS';
663 L_CUSTOM_MODEL_STATUS CONSTANT VARCHAR2(30) := 'CUSTOM';
664 L_STANDARD_ROW_SELECTION CONSTANT VARCHAR2(30) := 'STANDARD';
665 L_OBJECT_TYPE_MODEL CONSTANT VARCHAR2(30) := 'MODL';
666
667 l_model_rec AMS_DM_Model_PVT.dm_model_rec_type;
668
669 l_dummy NUMBER;
670
671 l_msg_count NUMBER;
672 l_msg_data VARCHAR2(4000);
673
674 CURSOR c_user_status_id (p_type IN VARCHAR2, p_code IN VARCHAR2) IS
675 SELECT user_status_id
676 FROM ams_user_statuses_vl
677 WHERE system_status_type = p_type
678 AND system_status_code = p_code;
679
680 CURSOR c_custom_setup_id IS
681 SELECT custom_setup_id
682 FROM ams_custom_setups_b
683 WHERE object_type = L_OBJECT_TYPE_MODEL
684 AND enabled_flag = 'Y'
685 ;
686
687 CURSOR c_model_id IS
688 SELECT ams_dm_models_all_b_s.NEXTVAL
689 FROM dual;
690
691 CURSOR c_id_exists (p_model_id IN NUMBER) IS
692 SELECT 1
693 FROM dual
694 WHERE EXISTS (SELECT 1
695 FROM ams_dm_models_all_b
696 WHERE model_id = p_model_id)
697 ;
698 BEGIN
699 -- Initialize return status
700 x_return_status := FND_API.g_ret_sts_success;
701
702 -- Initialize message buffer
703 FND_MSG_PUB.initialize;
704
705
706 -- construct record for validation
707 -- get a unique model id
708 LOOP
709 OPEN c_model_id;
710 FETCH c_model_id INTO l_model_rec.model_id;
711 CLOSE c_model_id;
712
713 OPEN c_id_exists (l_model_rec.model_id);
714 FETCH c_id_exists INTO l_dummy;
715 CLOSE c_id_exists;
716
717 EXIT WHEN l_dummy IS NULL;
718 END LOOP;
719
720 -- Since this API is exposed for creation of custom
721 -- models created outside of OMO, the status is CUSTOM
722 -- to handle metadata driven locking rules.
723 OPEN c_user_status_id (L_MODEL_STATUS_TYPE, L_CUSTOM_MODEL_STATUS);
724 FETCH c_user_status_id INTO l_model_rec.user_status_id;
725 CLOSE c_user_status_id;
726
727 OPEN c_custom_setup_id;
728 FETCH c_custom_setup_id INTO l_model_rec.custom_setup_id;
729 CLOSE c_custom_setup_id;
730
731 l_model_rec.model_type := 'CUSTOM';
732 l_model_rec.status_code := L_CUSTOM_MODEL_STATUS;
733 l_model_rec.status_date := SYSDATE;
734 l_model_rec.owner_user_id := AMS_Utility_PVT.get_resource_id (FND_GLOBAL.user_id);
735 l_model_rec.target_group_type := p_target_group_type;
736 l_model_rec.darwin_model_ref := p_darwin_model_ref;
737 l_model_rec.model_name := p_model_name;
738 l_model_rec.description := p_description;
739 l_model_rec.results_flag := 'Y';
740 l_model_rec.logs_flag := 'N';
741 l_model_rec.target_type := p_target_type;
745
742 l_model_rec.target_positive_value := p_target_value;
743 l_model_rec.row_selection_type := L_STANDARD_ROW_SELECTION;
744 l_model_rec.country_id := FND_PROFILE.value ('AMS_SRCGEN_USER_CITY');
746 -- validate input
747 AMS_DM_Model_PVT.Validate_dm_model(
748 p_api_version_number => 1.0,
749 p_init_msg_list => FND_API.G_FALSE,
750 p_validation_mode => JTF_PLSQL_API.g_create,
751 p_dm_model_rec => l_model_rec,
752 x_return_status => x_return_status,
753 x_msg_count => l_msg_count,
754 x_msg_data => l_msg_data
755 );
756 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
757 RAISE FND_API.G_EXC_ERROR;
758 END IF;
759
760 -- call the table handler
761 --AMS_dm_models_b_pkg.insert_row (
762 -- p_model_id => l_model_rec.model_id,
763 -- p_last_update_date => SYSDATE,
764 -- p_last_updated_by => FND_GLOBAL.user_id,
765 -- p_creation_date => SYSDATE,
766 -- p_created_by => FND_GLOBAL.user_id,
767 -- p_last_update_login => FND_GLOBAL.conc_login_id,
768 -- p_object_version_number => 1,
769 -- p_model_type => l_model_rec.model_type,
770 -- p_user_status_id => l_model_rec.user_status_id,
771 -- p_status_code => l_model_rec.status_code,
772 -- p_status_date => l_model_rec.status_date,
773 -- p_last_build_date => NULL,
774 -- p_owner_user_id => l_model_rec.owner_user_id,
775 -- p_performance => NULL,
776 -- p_target_group_type => l_model_rec.target_group_type,
777 -- p_darwin_model_ref => l_model_rec.darwin_model_ref,
778 -- p_model_name => l_model_rec.model_name,
779 -- p_description => l_model_rec.description,
780 -- p_scheduled_date => NULL,
781 -- p_scheduled_timezone_id => NULL,
782 -- p_expiration_date => NULL,
783 -- p_results_flag => l_model_rec.results_flag,
784 -- p_logs_flag => l_model_rec.logs_flag,
785 -- p_target_field => NULL,
786 -- p_target_type => l_model_rec.target_type,
787 -- p_target_positive_value => l_model_rec.target_positive_value,
788 -- p_total_records => NULL,
789 -- p_total_positives => NULL,
790 -- p_min_records => NULL,
791 -- p_max_records => NULL,
792 -- p_row_selection_type => l_model_rec.row_selection_type,
793 -- p_every_nth_row => NULL,
794 -- p_pct_random => NULL,
795 -- p_custom_setup_id => l_model_rec.custom_setup_id,
796 -- p_country_id => l_model_rec.country_id,
797 -- p_best_subtree => NULL,
798 -- p_wf_itemkey => NULL,
799 -- p_attribute_category => NULL,
800 -- p_attribute1 => NULL,
801 -- p_attribute2 => NULL,
802 -- p_attribute3 => NULL,
803 -- p_attribute4 => NULL,
804 -- p_attribute5 => NULL,
805 -- p_attribute6 => NULL,
806 -- p_attribute7 => NULL,
807 -- p_attribute8 => NULL,
808 -- p_attribute9 => NULL,
809 -- p_attribute10 => NULL,
810 -- p_attribute11 => NULL,
811 -- p_attribute12 => NULL,
812 -- p_attribute13 => NULL,
813 -- p_attribute14 => NULL,
814 -- p_attribute15 => NULL
815 --);
816
817 x_model_id := l_model_rec.model_id;
818
819 EXCEPTION
820 WHEN FND_API.G_EXC_ERROR THEN
821 x_return_status := FND_API.G_RET_STS_ERROR;
822 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
823 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
824 WHEN OTHERS THEN
825 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
826 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
827 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
828 END IF;
829 END Create_Model;
830
831
832 END AMS_DMModel_PUB;