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