DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_DELIVERABLE_PUB

Source


1 PACKAGE BODY AMS_Deliverable_PUB as
2 /* $Header: amspdelb.pls 120.0 2005/05/31 17:03:06 appldev noship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --         AMS_Deliverable_PUB
7 -- Purpose
8 --
9 -- History
10 --  27-sep-2002  ABHOLA Created
11 -- NOTE
12 --
13 -- End of Comments
14 -- ===============================================================
15 
16 
17 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AMS_Deliverable_PUB';
18 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amspdelb.pls';
19 
20 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
21 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
22 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
23 
24 PROCEDURE Convert_PubRec_To_PvtRec(
25    p_deliv_rec_pub      IN   deliv_rec_type,
26    x_deliv_rec_pvt      OUT NOCOPY  AMS_Deliverable_PVT.deliv_rec_type
27 
28 )
29 
30 IS
31    l_deliv_rec_pub      deliv_rec_type := p_deliv_rec_pub;
32 
33 BEGIN
34 
35        x_deliv_rec_pvt.deliverable_id                 :=  l_deliv_rec_pub.deliverable_id ;
36        x_deliv_rec_pvt.last_update_date               :=  l_deliv_rec_pub.last_update_date;
37        x_deliv_rec_pvt.last_updated_by                :=  l_deliv_rec_pub.last_updated_by ;
38        x_deliv_rec_pvt.creation_date                  :=  l_deliv_rec_pub.creation_date;
39        x_deliv_rec_pvt.created_by                     :=  l_deliv_rec_pub.created_by;
40        x_deliv_rec_pvt.last_update_login              :=  l_deliv_rec_pub.last_update_login;
41        x_deliv_rec_pvt.object_version_number          :=  l_deliv_rec_pub.object_version_number;
42        x_deliv_rec_pvt.user_status_id                 :=  l_deliv_rec_pub.user_status_id;
43        x_deliv_rec_pvt.status_code                    :=  l_deliv_rec_pub.status_code;
44        x_deliv_rec_pvt.status_date                    :=  l_deliv_rec_pub.status_date;
45 x_deliv_rec_pvt.deliverable_id                       :=  l_deliv_rec_pub.deliverable_id;
46 x_deliv_rec_pvt.last_update_date                     :=  l_deliv_rec_pub.last_update_date;
47 x_deliv_rec_pvt.last_updated_by                      :=  l_deliv_rec_pub.last_updated_by;
48 x_deliv_rec_pvt.creation_date                        :=  l_deliv_rec_pub.creation_date;
49 x_deliv_rec_pvt.created_by                           :=  l_deliv_rec_pub.created_by;
50 x_deliv_rec_pvt.last_update_login                    :=  l_deliv_rec_pub.last_update_login;
51 x_deliv_rec_pvt.object_version_number                :=  l_deliv_rec_pub.object_version_number;
52 x_deliv_rec_pvt.language_code                        :=  l_deliv_rec_pub.language_code;
53 x_deliv_rec_pvt.version                              :=  l_deliv_rec_pub.version ;
54 x_deliv_rec_pvt.application_id                       :=  l_deliv_rec_pub.application_id;
55 x_deliv_rec_pvt.user_status_id                       :=  l_deliv_rec_pub.user_status_id ;
56 x_deliv_rec_pvt.status_code                          :=  l_deliv_rec_pub.status_code  ;
57 x_deliv_rec_pvt.status_date                          :=  l_deliv_rec_pub.status_date  ;
58 x_deliv_rec_pvt.active_flag                          :=  l_deliv_rec_pub.active_flag   ;
59 x_deliv_rec_pvt.private_flag                         :=  l_deliv_rec_pub.private_flag   ;
60 x_deliv_rec_pvt.owner_user_id                        :=  l_deliv_rec_pub.owner_user_id   ;
61 x_deliv_rec_pvt.fund_source_id                       :=  l_deliv_rec_pub.fund_source_id   ;
62 x_deliv_rec_pvt.fund_source_type                     :=  l_deliv_rec_pub.fund_source_type  ;
63 x_deliv_rec_pvt.category_type_id                     :=  l_deliv_rec_pub.category_type_id   ;
64 x_deliv_rec_pvt.category_sub_type_id                 :=  l_deliv_rec_pub.category_sub_type_id ;
65 x_deliv_rec_pvt.kit_flag                             :=  l_deliv_rec_pub.kit_flag      ;
66 x_deliv_rec_pvt.inventory_flag                       :=  l_deliv_rec_pub.inventory_flag  ;
67 x_deliv_rec_pvt.inventory_item_id                    :=  l_deliv_rec_pub.inventory_item_id ;
68 x_deliv_rec_pvt.inventory_item_org_id                :=  l_deliv_rec_pub.inventory_item_org_id ;
69 x_deliv_rec_pvt.pricelist_header_id                  :=  l_deliv_rec_pub.pricelist_header_id  ;
70 x_deliv_rec_pvt.pricelist_line_id                    :=  l_deliv_rec_pub.pricelist_line_id     ;
71 x_deliv_rec_pvt.actual_avail_from_date               :=  l_deliv_rec_pub.actual_avail_from_date ;
72 x_deliv_rec_pvt.actual_avail_to_date                 :=  l_deliv_rec_pub.actual_avail_to_date  ;
73 x_deliv_rec_pvt.forecasted_complete_date             :=  l_deliv_rec_pub.forecasted_complete_date ;
74 x_deliv_rec_pvt.actual_complete_date                 :=  l_deliv_rec_pub.actual_complete_date      ;
75 x_deliv_rec_pvt.transaction_currency_code            :=  l_deliv_rec_pub.transaction_currency_code  ;
76 x_deliv_rec_pvt.functional_currency_code             :=  l_deliv_rec_pub.functional_currency_code    ;
77 x_deliv_rec_pvt.budget_amount_tc                     :=  l_deliv_rec_pub.budget_amount_tc    ;
78 x_deliv_rec_pvt.budget_amount_fc                     :=  l_deliv_rec_pub.budget_amount_fc    ;
79 x_deliv_rec_pvt.replaced_by_deliverable_id           :=  l_deliv_rec_pub.replaced_by_deliverable_id  ;
80 x_deliv_rec_pvt.can_fulfill_electronic_flag          :=  l_deliv_rec_pub.can_fulfill_electronic_flag ;
81 x_deliv_rec_pvt.can_fulfill_physical_flag            :=  l_deliv_rec_pub.can_fulfill_physical_flag   ;
82 x_deliv_rec_pvt.jtf_amv_item_id                      :=  l_deliv_rec_pub.jtf_amv_item_id   ;
83 x_deliv_rec_pvt.non_inv_ctrl_code                    :=  l_deliv_rec_pub.non_inv_ctrl_code  ;
84 x_deliv_rec_pvt.non_inv_quantity_on_hand             :=  l_deliv_rec_pub.non_inv_quantity_on_hand    ;
85 x_deliv_rec_pvt.non_inv_quantity_on_order            :=  l_deliv_rec_pub.non_inv_quantity_on_order   ;
86 x_deliv_rec_pvt.non_inv_quantity_on_reserve          :=  l_deliv_rec_pub.non_inv_quantity_on_reserve ;
87 x_deliv_rec_pvt.chargeback_amount                    :=  l_deliv_rec_pub.chargeback_amount           ;
88 x_deliv_rec_pvt.chargeback_uom                       :=  l_deliv_rec_pub.chargeback_uom              ;
89 x_deliv_rec_pvt.chargeback_amount_curr_code          :=  l_deliv_rec_pub.chargeback_amount_curr_code ;
90 x_deliv_rec_pvt.deliverable_code                     :=  l_deliv_rec_pub.deliverable_code            ;
91 x_deliv_rec_pvt.deliverable_pick_flag                :=  l_deliv_rec_pub.deliverable_pick_flag       ;
92 x_deliv_rec_pvt.currency_code                        :=  l_deliv_rec_pub.currency_code               ;
93 x_deliv_rec_pvt.forecasted_cost                      :=  l_deliv_rec_pub.forecasted_cost             ;
94 x_deliv_rec_pvt.actual_cost                          :=  l_deliv_rec_pub.actual_cost                 ;
95 x_deliv_rec_pvt.forecasted_responses                 :=  l_deliv_rec_pub.forecasted_responses        ;
96 x_deliv_rec_pvt.actual_responses                     :=  l_deliv_rec_pub.actual_responses            ;
97 x_deliv_rec_pvt.country                              :=  l_deliv_rec_pub.country                     ;
98 x_deliv_rec_pvt.default_approver_id                  :=  l_deliv_rec_pub.default_approver_id         ;
99 x_deliv_rec_pvt.attribute_category                   :=  l_deliv_rec_pub.attribute_category          ;
100 x_deliv_rec_pvt.attribute1                           :=  l_deliv_rec_pub.attribute1                  ;
101 x_deliv_rec_pvt.attribute2                           :=  l_deliv_rec_pub.attribute2                  ;
102 x_deliv_rec_pvt.attribute3                           :=  l_deliv_rec_pub.attribute3                  ;
103 x_deliv_rec_pvt.attribute4                           :=  l_deliv_rec_pub.attribute4                  ;
104 x_deliv_rec_pvt.attribute5                           :=  l_deliv_rec_pub.attribute5                  ;
105 x_deliv_rec_pvt.attribute6                           :=  l_deliv_rec_pub.attribute6                  ;
106 x_deliv_rec_pvt.attribute7                           :=  l_deliv_rec_pub.attribute7                  ;
107 x_deliv_rec_pvt.attribute8                           :=  l_deliv_rec_pub.attribute8                  ;
108 x_deliv_rec_pvt.attribute9                           :=  l_deliv_rec_pub.attribute9                  ;
109 x_deliv_rec_pvt.attribute10                          :=  l_deliv_rec_pub.attribute10                 ;
110 x_deliv_rec_pvt.attribute11                          :=  l_deliv_rec_pub.attribute11                 ;
111 x_deliv_rec_pvt.attribute12                          :=  l_deliv_rec_pub.attribute12                 ;
112 x_deliv_rec_pvt.attribute13                          :=  l_deliv_rec_pub.attribute13                 ;
113 x_deliv_rec_pvt.attribute14                          :=  l_deliv_rec_pub.attribute14                 ;
114 x_deliv_rec_pvt.attribute15                          :=  l_deliv_rec_pub.attribute15                 ;
115 x_deliv_rec_pvt.deliverable_name                     :=  l_deliv_rec_pub.deliverable_name            ;
116 x_deliv_rec_pvt.description                          :=  l_deliv_rec_pub.description                 ;
117 x_deliv_rec_pvt.start_period_name                    :=  l_deliv_rec_pub.start_period_name           ;
118 x_deliv_rec_pvt.end_period_name                      :=  l_deliv_rec_pub.end_period_name             ;
119 x_deliv_rec_pvt.deliverable_calendar                 :=  l_deliv_rec_pub.deliverable_calendar        ;
120 x_deliv_rec_pvt.country_id                           :=  l_deliv_rec_pub.country_id                  ;
121 x_deliv_rec_pvt.setup_id                             :=  l_deliv_rec_pub.setup_id                    ;
122 x_deliv_rec_pvt.item_Number                          :=  l_deliv_rec_pub.item_Number       ;
123 x_deliv_rec_pvt.associate_flag                       :=  l_deliv_rec_pub.associate_flag    ;
124 x_deliv_rec_pvt.master_object_id                     :=  l_deliv_rec_pub.master_object_id  ;
125 x_deliv_rec_pvt.master_object_type                   :=  l_deliv_rec_pub.master_object_type;
126 x_deliv_rec_pvt.email_content_type                   :=  l_deliv_rec_pub.email_content_type ;
127 
128 END;
129 
130 
131 PROCEDURE create_Deliverable(
132    p_api_version_number       IN  NUMBER,
133    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
134    p_commit            IN  VARCHAR2  := FND_API.g_false,
135    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
136    x_return_status     OUT NOCOPY VARCHAR2,
137    x_msg_count         OUT NOCOPY NUMBER,
138    x_msg_data          OUT NOCOPY VARCHAR2,
139 
140    p_deliv_rec          IN  deliv_rec_type,
141    x_deliv_id           OUT NOCOPY NUMBER
142 )
143 IS
144 
145 L_API_NAME                  CONSTANT VARCHAR2(30) := 'create_Deliverable';
146 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
147 l_return_status  VARCHAR2(1);
148 l_pvt_deliv_rec    AMS_deliverable_PVT.deliv_rec_type ;
149 l_pub_deliv_rec    deliv_rec_type := p_deliv_rec;
150 
151 BEGIN
152       -- Standard Start of API savepoint
153       SAVEPOINT CREATE_deliv_PUB;
154 
155       -- Initialize message list if p_init_msg_list is set to TRUE.
156       IF FND_API.to_Boolean( p_init_msg_list )
157       THEN
158          FND_MSG_PUB.initialize;
159       END IF;
160 
161       -- Debug Message
162       IF (AMS_DEBUG_HIGH_ON) THEN
163       AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
164       END IF;
165 
166 
167       -- Initialize API return status to SUCCESS
168       x_return_status := FND_API.G_RET_STS_SUCCESS;
169 
170       -- convert public parameter to private-type
171       Convert_PubRec_To_PvtRec(l_pub_deliv_rec,l_pvt_deliv_rec);
172 
173       Create_Deliverable(
174          p_api_version_number     => p_api_version_number,
175          p_init_msg_list          => p_init_msg_list,
176          p_commit                 => p_commit,
177          p_validation_level       => p_validation_level,
178          x_return_status          => x_return_status,
179          x_msg_count              => x_msg_count,
180          x_msg_data               => x_msg_data,
181          p_deliv_rec              => l_pvt_deliv_rec,
182          x_deliv_id               => x_deliv_id  );
183 
184        -- Check return status from the above procedure call
185        IF x_return_status = FND_API.G_RET_STS_ERROR then
186            RAISE FND_API.G_EXC_ERROR;
187        elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
188            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
189        END IF;
190        --
191        -- End of API body.
192        --
193 
194        -- Standard check for p_commit
195        IF FND_API.to_Boolean( p_commit )
196        THEN
197           COMMIT WORK;
198        END IF;
199 
200 
201        -- Debug Message
202        IF (AMS_DEBUG_HIGH_ON) THEN
203         AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
204        END IF;
205 
206        -- Standard call to get message count and if count is 1, get message info.
207        FND_MSG_PUB.Count_And_Get
208          (p_count          =>   x_msg_count,
209           p_data           =>   x_msg_data
210        );
211 
212 EXCEPTION
213 
214    WHEN AMS_Utility_PVT.resource_locked THEN
215      x_return_status := FND_API.g_ret_sts_error;
216      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
217         FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
218         FND_MSG_PUB.add;
219      END IF;
220 
221    WHEN FND_API.G_EXC_ERROR THEN
222      ROLLBACK TO CREATE_deliv_PUB;
223      x_return_status := FND_API.G_RET_STS_ERROR;
224      -- Standard call to get message count and if count=1, get the message
225      FND_MSG_PUB.Count_And_Get (
226             p_encoded => FND_API.G_FALSE,
227             p_count   => x_msg_count,
228             p_data    => x_msg_data
229      );
230 
231    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
232      ROLLBACK TO CREATE_deliv_PUB;
233      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
234      -- Standard call to get message count and if count=1, get the message
235      FND_MSG_PUB.Count_And_Get (
236             p_encoded => FND_API.G_FALSE,
237             p_count => x_msg_count,
238             p_data  => x_msg_data
239      );
240 
241    WHEN OTHERS THEN
242      ROLLBACK TO CREATE_deliv_PUB;
243      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
244      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
245      THEN
246         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
247      END IF;
248      -- Standard call to get message count and if count=1, get the message
249      FND_MSG_PUB.Count_And_Get (
250             p_encoded => FND_API.G_FALSE,
251             p_count => x_msg_count,
252             p_data  => x_msg_data
253      );
254 End Create_Deliverable;
255 
256 
257 
258 
259 PROCEDURE Create_Deliverable(
260 
261    p_api_version_number      IN  NUMBER,
262    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
263    p_commit            IN  VARCHAR2  := FND_API.g_false,
264    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
265 
266    x_return_status     OUT NOCOPY VARCHAR2,
267    x_msg_count         OUT NOCOPY NUMBER,
268    x_msg_data          OUT NOCOPY VARCHAR2,
269 
270    p_deliv_rec          IN  AMS_Deliverable_PVT.deliv_rec_type,
271    x_deliv_id           OUT NOCOPY NUMBER
272 
273      )
274 
275 
276  IS
277 
278 L_API_NAME                  CONSTANT VARCHAR2(30) := 'create_Deliverable';
279 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
280 l_return_status  VARCHAR2(1);
281 l_pvt_deliv_rec    AMS_Deliverable_PVT.deliv_rec_type := p_deliv_rec;
282 
283 BEGIN
284 
285       SAVEPOINT CREATE_Deliverable_PUB;
286 
287        -- Standard call to check for call compatibility.
288        IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
289                                             p_api_version_number,
290                                             l_api_name,
291                                             G_PKG_NAME)
292        THEN
293            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
294        END IF;
295 
296        -- Initialize message list if p_init_msg_list is set to TRUE.
297        IF FND_API.to_Boolean( p_init_msg_list )
298        THEN
299           FND_MSG_PUB.initialize;
300        END IF;
301 
302        -- Debug Message
303        IF (AMS_DEBUG_HIGH_ON) THEN
304         AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
305        END IF;
306 
307        -- Initialize API return status to SUCCESS
308        x_return_status := FND_API.G_RET_STS_SUCCESS;
309 
310        --
311        -- API body
312        --
313      -- Calling Private package: Create_Deliverable
314      -- Hint: Primary key needs to be returned
315 
316   -- customer pre-processing
317    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'C')
318    THEN
319       AMS_Deliverable_CUHK.create_deliverable_pre(
320          l_pvt_Deliv_rec,
321          l_return_status
322       );
323 
324       IF l_return_status = FND_API.g_ret_sts_error THEN
325          RAISE FND_API.g_exc_error;
326       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
327          RAISE FND_API.g_exc_unexpected_error;
328       END IF;
329    END IF;
330 
331    -- vertical industry pre-processing
332    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'V')
333    THEN
334       AMS_Deliverable_VUHK.create_deliverable_pre(
335          l_pvt_Deliv_rec,
336          l_return_status
337       );
338 
339       IF l_return_status = FND_API.g_ret_sts_error THEN
340          RAISE FND_API.g_exc_error;
341       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
342          RAISE FND_API.g_exc_unexpected_error;
343       END IF;
344    END IF;
345    -------------------------------------------------------
346        AMS_Deliverable_PVT.Create_Deliverable(
347               p_api_version                => 1.0,
348               p_init_msg_list              => FND_API.G_FALSE,
349               p_commit                     => FND_API.G_FALSE,
350               p_validation_level           => FND_API.G_VALID_LEVEL_FULL,
351               x_return_status              => x_return_status,
352               x_msg_count                  => x_msg_count,
353               x_msg_data                   => x_msg_data,
354               p_Deliv_rec                  => l_pvt_Deliv_rec,
355               x_Deliv_id                   => x_Deliv_id);
356 
357 
358        -- Check return status from the above procedure call
359        IF x_return_status = FND_API.G_RET_STS_ERROR then
360            RAISE FND_API.G_EXC_ERROR;
361        elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
362            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
363        END IF;
364        --
365        -- End of API body.
366        --
367 
368            -- customer pre-processing
369    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'C')
370    THEN
371       AMS_Deliverable_CUHK.create_deliverable_post(
372          l_pvt_Deliv_rec,
373          x_Deliv_id,
374          l_return_status
375       );
376 
377       IF l_return_status = FND_API.g_ret_sts_error THEN
378          RAISE FND_API.g_exc_error;
379       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
380          RAISE FND_API.g_exc_unexpected_error;
381       END IF;
382    END IF;
383 
384 
385 
386    -- vertical industry pre-processing
387    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'V')
388    THEN
389       AMS_Deliverable_VUHK.create_deliverable_post(
390          l_pvt_Deliv_rec,
391          x_Deliv_id,
392          l_return_status
393       );
394 
395       IF l_return_status = FND_API.g_ret_sts_error THEN
396          RAISE FND_API.g_exc_error;
397       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
398          RAISE FND_API.g_exc_unexpected_error;
399       END IF;
400    END IF;
401    ------------------------------------------
402 
403        -- Standard check for p_commit
404        IF FND_API.to_Boolean( p_commit )
405        THEN
406           COMMIT WORK;
407        END IF;
408 
409 
410        -- Debug Message
411        IF (AMS_DEBUG_HIGH_ON) THEN
412        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
413        END IF;
414 
415        -- Standard call to get message count and if count is 1, get message info.
416        FND_MSG_PUB.Count_And_Get
417          (p_count          =>   x_msg_count,
418           p_data           =>   x_msg_data
419        );
420 
421 EXCEPTION
422 
423    WHEN AMS_Utility_PVT.resource_locked THEN
424      x_return_status := FND_API.g_ret_sts_error;
425      IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
426         FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
427         FND_MSG_PUB.add;
428      END IF;
429 
430    WHEN FND_API.G_EXC_ERROR THEN
431      ROLLBACK TO CREATE_Deliverable_PUB;
432      x_return_status := FND_API.G_RET_STS_ERROR;
433      -- Standard call to get message count and if count=1, get the message
434      FND_MSG_PUB.Count_And_Get (
435             p_encoded => FND_API.G_FALSE,
436             p_count   => x_msg_count,
437             p_data    => x_msg_data
438      );
439 
440    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
441      ROLLBACK TO CREATE_Deliverable_PUB;
442      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
443      -- Standard call to get message count and if count=1, get the message
444      FND_MSG_PUB.Count_And_Get (
445             p_encoded => FND_API.G_FALSE,
446             p_count => x_msg_count,
447             p_data  => x_msg_data
448      );
449 
450    WHEN OTHERS THEN
451      ROLLBACK TO CREATE_Deliverable_PUB;
452      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
453      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
454      THEN
455         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
456      END IF;
457      -- Standard call to get message count and if count=1, get the message
458      FND_MSG_PUB.Count_And_Get (
459             p_encoded => FND_API.G_FALSE,
460             p_count => x_msg_count,
461             p_data  => x_msg_data
462      );
463 End Create_Deliverable;
464 
465 PROCEDURE Update_Deliverable(
466     p_api_version_number         IN   NUMBER,
467     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
468     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
469     p_validation_level           IN  NUMBER    := FND_API.g_valid_level_full,
470     x_return_status              OUT NOCOPY  VARCHAR2,
471     x_msg_count                  OUT NOCOPY  NUMBER,
472     x_msg_data                   OUT NOCOPY  VARCHAR2,
473     p_deliv_rec                  IN  deliv_rec_type
474     )
475 
476  IS
477 
478 L_API_NAME                  CONSTANT VARCHAR2(30) := 'update_Deliverable';
479 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
480 l_object_version_number  NUMBER;
481 l_return_status  VARCHAR2(1);
482 l_pvt_deliv_rec    AMS_deliverable_PVT.deliv_rec_type ;
483 l_pub_deliv_rec    deliv_rec_type := p_deliv_rec;
484 
485 BEGIN
486 
487        -- Standard Start of API savepoint
488        SAVEPOINT UPDATE_Deliv_PUB;
489 
490        -- Standard call to check for call compatibility.
491        IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
492                                             p_api_version_number,
493                                             l_api_name,
494                                             G_PKG_NAME)
495        THEN
496            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
497        END IF;
498 
499        -- Initialize message list if p_init_msg_list is set to TRUE.
500        IF FND_API.to_Boolean( p_init_msg_list )
501        THEN
502           FND_MSG_PUB.initialize;
503        END IF;
504 
505        -- Debug Message
506       IF (AMS_DEBUG_HIGH_ON) THEN
507        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
508       END IF;
509 
510 
511        -- Initialize API return status to SUCCESS
512        x_return_status := FND_API.G_RET_STS_SUCCESS;
513 
514 
515       -- convert public parameter to private-type
516       Convert_PubRec_To_PvtRec(l_pub_deliv_rec,l_pvt_deliv_rec);
517 
518       update_Deliverable(
519          p_api_version_number     => p_api_version_number,
520          p_init_msg_list          => p_init_msg_list,
521          p_commit                 => p_commit,
522          p_validation_level       => p_validation_level,
523          x_return_status          => x_return_status,
524          x_msg_count              => x_msg_count,
525          x_msg_data               => x_msg_data,
526          p_deliv_rec              => l_pvt_deliv_rec );
527 
528        -- Check return status from the above procedure call
529        IF x_return_status = FND_API.G_RET_STS_ERROR then
530            RAISE FND_API.G_EXC_ERROR;
531        elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
532            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
533        END IF;
534        --
535        -- End of API body.
536        --
537 
538    -------------------------------------------------------
539        -- Debug Message
540       IF (AMS_DEBUG_HIGH_ON) THEN
541        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
542        END IF;
543 
544        -- Standard call to get message count and if count is 1, get message info.
545        FND_MSG_PUB.Count_And_Get
546          (p_count          =>   x_msg_count,
547           p_data           =>   x_msg_data
548        );
549  EXCEPTION
550 
551     WHEN AMS_Utility_PVT.resource_locked THEN
552       x_return_status := FND_API.g_ret_sts_error;
553   AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
554 
555     WHEN FND_API.G_EXC_ERROR THEN
556       ROLLBACK TO UPDATE_Deliv_PUB;
557       x_return_status := FND_API.G_RET_STS_ERROR;
558       -- Standard call to get message count and if count=1, get the message
559       FND_MSG_PUB.Count_And_Get (
560              p_encoded => FND_API.G_FALSE,
561              p_count   => x_msg_count,
562              p_data    => x_msg_data
563       );
564 
565     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
566       ROLLBACK TO UPDATE_Deliv_PUB;
567       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
568       -- Standard call to get message count and if count=1, get the message
569       FND_MSG_PUB.Count_And_Get (
570              p_encoded => FND_API.G_FALSE,
571              p_count => x_msg_count,
572              p_data  => x_msg_data
573       );
574 
575     WHEN OTHERS THEN
576       ROLLBACK TO UPDATE_Deliv_PUB;
577       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
578       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
579       THEN
580          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
581       END IF;
582       -- Standard call to get message count and if count=1, get the message
583       FND_MSG_PUB.Count_And_Get (
584              p_encoded => FND_API.G_FALSE,
585              p_count => x_msg_count,
586              p_data  => x_msg_data
587       );
588 
589 End Update_Deliverable;
590 
591 
592 PROCEDURE Update_Deliverable(
593     p_api_version_number         IN   NUMBER,
594     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
595     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
596     p_validation_level           IN  NUMBER    := FND_API.g_valid_level_full,
597     x_return_status              OUT NOCOPY  VARCHAR2,
598     x_msg_count                  OUT NOCOPY  NUMBER,
599     x_msg_data                   OUT NOCOPY  VARCHAR2,
600     p_deliv_rec                  IN  AMS_Deliverable_PVT.deliv_rec_type
601     )
602 
603  IS
604 
605 L_API_NAME                  CONSTANT VARCHAR2(30) := 'update_Deliverable';
606 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
607 l_object_version_number  NUMBER;
608 l_return_status  VARCHAR2(1);
609 l_pvt_deliv_rec  AMS_Deliverable_PVT.deliv_rec_type := p_deliv_rec;
610 
611 BEGIN
612 
613        -- Standard Start of API savepoint
614        SAVEPOINT UPDATE_Deliverable_PUB;
615 
616        -- Standard call to check for call compatibility.
617        IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
618                                             p_api_version_number,
619                                             l_api_name,
620                                             G_PKG_NAME)
621        THEN
622            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
623        END IF;
624 
625        -- Initialize message list if p_init_msg_list is set to TRUE.
626        IF FND_API.to_Boolean( p_init_msg_list )
627        THEN
628           FND_MSG_PUB.initialize;
629        END IF;
630 
631        -- Debug Message
632        IF (AMS_DEBUG_HIGH_ON) THEN
633        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
634        END IF;
635 
636        -- Initialize API return status to SUCCESS
637        x_return_status := FND_API.G_RET_STS_SUCCESS;
638 
639   -- customer pre-processing
640    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'C')
641    THEN
642       AMS_Deliverable_CUHK.update_deliverable_pre(
643          l_pvt_deliv_rec,
644          l_return_status
645       );
646 
647       IF l_return_status = FND_API.g_ret_sts_error THEN
648          RAISE FND_API.g_exc_error;
649       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
650          RAISE FND_API.g_exc_unexpected_error;
651       END IF;
652    END IF;
653 
654    -- vertical industry pre-processing
655    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'V')
656    THEN
657       AMS_Deliverable_VUHK.update_deliverable_pre(
658          l_pvt_deliv_rec,
659          l_return_status
660       );
661 
662       IF l_return_status = FND_API.g_ret_sts_error THEN
663          RAISE FND_API.g_exc_error;
664       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
665          RAISE FND_API.g_exc_unexpected_error;
666       END IF;
667    END IF;
668    -------------------------------------------------------
669        --
670        -- API body
671        --
672    AMS_Deliverable_PVT.Update_Deliverable(
673      p_api_version         => 1.0,
674      p_init_msg_list              => FND_API.G_FALSE,
675      p_commit                     => p_commit,
676      p_validation_level           => FND_API.G_VALID_LEVEL_FULL,
677      x_return_status              => x_return_status,
678      x_msg_count                  => x_msg_count,
679      x_msg_data                   => x_msg_data,
680      p_deliv_rec                  =>  l_pvt_deliv_rec);
681 
682 
683        -- Check return status from the above procedure call
684        IF x_return_status = FND_API.G_RET_STS_ERROR then
685            RAISE FND_API.G_EXC_ERROR;
686        elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
687            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
688        END IF;
689        --
690        -- End of API body
691        --
692        -- Standard check for p_commit
693        IF FND_API.to_Boolean( p_commit )
694        THEN
695           COMMIT WORK;
696        END IF;
697 
698    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'C')
699    THEN
700       AMS_Deliverable_CUHK.update_deliverable_post(
701          l_pvt_deliv_rec,
702          l_return_status
703       );
704 
705       IF l_return_status = FND_API.g_ret_sts_error THEN
706          RAISE FND_API.g_exc_error;
707       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
708          RAISE FND_API.g_exc_unexpected_error;
709       END IF;
710    END IF;
711 
712    -- vertical industry pre-processing
713    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'V')
714    THEN
715       AMS_Deliverable_VUHK.update_deliverable_post(
716          l_pvt_deliv_rec,
717          l_return_status
718       );
719 
720       IF l_return_status = FND_API.g_ret_sts_error THEN
721          RAISE FND_API.g_exc_error;
722       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
723          RAISE FND_API.g_exc_unexpected_error;
724       END IF;
725    END IF;
726    -------------------------------------------------------
727        -- Debug Message
728        IF (AMS_DEBUG_HIGH_ON) THEN
729        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
730        END IF;
731 
732        -- Standard call to get message count and if count is 1, get message info.
733        FND_MSG_PUB.Count_And_Get
734          (p_count          =>   x_msg_count,
735           p_data           =>   x_msg_data
736        );
737  EXCEPTION
738 
739     WHEN AMS_Utility_PVT.resource_locked THEN
740       x_return_status := FND_API.g_ret_sts_error;
741   AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
742 
743     WHEN FND_API.G_EXC_ERROR THEN
744       ROLLBACK TO UPDATE_Deliverable_PUB;
745       x_return_status := FND_API.G_RET_STS_ERROR;
746       -- Standard call to get message count and if count=1, get the message
747       FND_MSG_PUB.Count_And_Get (
748              p_encoded => FND_API.G_FALSE,
749              p_count   => x_msg_count,
750              p_data    => x_msg_data
751       );
752 
753     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
754       ROLLBACK TO UPDATE_Deliverable_PUB;
755       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
756       -- Standard call to get message count and if count=1, get the message
757       FND_MSG_PUB.Count_And_Get (
758              p_encoded => FND_API.G_FALSE,
759              p_count => x_msg_count,
760              p_data  => x_msg_data
761       );
762 
763     WHEN OTHERS THEN
764       ROLLBACK TO UPDATE_Deliverable_PUB;
765       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
766       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
767       THEN
768          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
769       END IF;
770       -- Standard call to get message count and if count=1, get the message
771       FND_MSG_PUB.Count_And_Get (
772              p_encoded => FND_API.G_FALSE,
773              p_count => x_msg_count,
774              p_data  => x_msg_data
775       );
776 
777 End Update_Deliverable;
778 
779 
780 PROCEDURE Delete_Deliverable(
781     p_api_version_number         IN   NUMBER,
782     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
783     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
784         p_validation_level           IN  NUMBER    := FND_API.g_valid_level_full,
785     x_return_status              OUT NOCOPY  VARCHAR2,
786     x_msg_count                  OUT NOCOPY  NUMBER,
787     x_msg_data                   OUT NOCOPY  VARCHAR2,
788     p_deliv_id                   IN   NUMBER,
789     p_object_version_number      IN   NUMBER
790     )
791 
792 
793 
794  IS
795 
796  L_API_NAME                  CONSTANT VARCHAR2(30) := 'delete_Deliverable';
797  L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
798  l_deliv_ID  NUMBER := p_deliv_ID;
799  l_object_version_number  NUMBER := p_object_version_number;
800  l_return_status          VARCHAR2(1);
801 
802 
803   BEGIN
804        -- Standard Start of API savepoint
805        SAVEPOINT DELETE_Deliverable_PUB;
806 
807        -- Standard call to check for call compatibility.
808        IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
809                                             p_api_version_number,
810                                             l_api_name,
811                                             G_PKG_NAME)
812        THEN
813            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
814        END IF;
815 
816        -- Initialize message list if p_init_msg_list is set to TRUE.
817        IF FND_API.to_Boolean( p_init_msg_list )
818        THEN
819           FND_MSG_PUB.initialize;
820        END IF;
821 
822        -- Debug Message
823        IF (AMS_DEBUG_HIGH_ON) THEN
824        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
825        END IF;
826 
827 
828        -- Initialize API return status to SUCCESS
829        x_return_status := FND_API.G_RET_STS_SUCCESS;
830 
831     -- customer pre-processing
832    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'C')
833    THEN
834       AMS_Deliverable_CUHK.delete_Deliverable_pre(
835          l_deliv_ID,
836                  l_object_version_number,
837          l_return_status
838       );
839 
840       IF l_return_status = FND_API.g_ret_sts_error THEN
841          RAISE FND_API.g_exc_error;
842       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
843          RAISE FND_API.g_exc_unexpected_error;
844       END IF;
845    END IF;
846 
847    -- vertical industry pre-processing
848    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'V')
849    THEN
850       AMS_Deliverable_VUHK.delete_Deliverable_pre(
851          l_deliv_ID,
852                  l_object_version_number,
853          l_return_status
854       );
855 
856       IF l_return_status = FND_API.g_ret_sts_error THEN
857          RAISE FND_API.g_exc_error;
858       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
859          RAISE FND_API.g_exc_unexpected_error;
860       END IF;
861    END IF;
862    -------------------------------------------------------
863 
864        --
865        -- API body
866        --
867      AMS_Deliverable_PVT.Delete_Deliverable(
868      p_api_version                => 1.0,
869      p_init_msg_list              => FND_API.G_FALSE,
870      p_commit                     => p_commit,
871      x_return_status              => x_return_status,
872      x_msg_count                  => x_msg_count,
873      x_msg_data                   => x_msg_data,
874      p_deliv_id                   => l_deliv_id,
875      p_object_version             => l_object_version_number );
876 
877 
878        -- Check return status from the above procedure call
879        IF x_return_status = FND_API.G_RET_STS_ERROR then
880            RAISE FND_API.G_EXC_ERROR;
881        elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
882            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
883        END IF;
884        --
885        -- End of API body
886        --
887 
888    -- customer pre-processing
889    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'C')
890    THEN
891       AMS_Deliverable_CUHK.delete_Deliverable_post(
892          l_deliv_ID,
893                  l_object_version_number,
894          l_return_status
895       );
896 
897       IF l_return_status = FND_API.g_ret_sts_error THEN
898          RAISE FND_API.g_exc_error;
899       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
900          RAISE FND_API.g_exc_unexpected_error;
901       END IF;
902    END IF;
903 
904    -- vertical industry pre-processing
905    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'V')
906    THEN
907       AMS_Deliverable_VUHK.delete_Deliverable_post(
908          l_deliv_ID,
909          l_object_version_number,
910          l_return_status
911       );
912 
913       IF l_return_status = FND_API.g_ret_sts_error THEN
914          RAISE FND_API.g_exc_error;
915       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
916          RAISE FND_API.g_exc_unexpected_error;
917       END IF;
918    END IF;
919    -------------------------------------------------------
920 
921 
922        -- Standard check for p_commit
923        IF FND_API.to_Boolean( p_commit )
924        THEN
925           COMMIT WORK;
926        END IF;
927 
928 
929        -- Debug Message
930        IF (AMS_DEBUG_HIGH_ON) THEN
931        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
932        END IF;
933 
934        -- Standard call to get message count and if count is 1, get message info.
935        FND_MSG_PUB.Count_And_Get
936          (p_count          =>   x_msg_count,
937           p_data           =>   x_msg_data
938        );
939  EXCEPTION
940 
941     WHEN AMS_Utility_PVT.resource_locked THEN
942       x_return_status := FND_API.g_ret_sts_error;
943       AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
944 
945     WHEN FND_API.G_EXC_ERROR THEN
946       ROLLBACK TO DELETE_Deliverable_PUB;
947       x_return_status := FND_API.G_RET_STS_ERROR;
948       -- Standard call to get message count and if count=1, get the message
949       FND_MSG_PUB.Count_And_Get (
950              p_encoded => FND_API.G_FALSE,
951              p_count   => x_msg_count,
952              p_data    => x_msg_data
953       );
954 
955     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
956       ROLLBACK TO DELETE_Deliverable_PUB;
957       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
958       -- Standard call to get message count and if count=1, get the message
959       FND_MSG_PUB.Count_And_Get (
960              p_encoded => FND_API.G_FALSE,
961              p_count => x_msg_count,
962              p_data  => x_msg_data
963       );
964 
965     WHEN OTHERS THEN
966       ROLLBACK TO DELETE_Deliverable_PUB;
967       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
968       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
969       THEN
970          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
971       END IF;
972       -- Standard call to get message count and if count=1, get the message
973       FND_MSG_PUB.Count_And_Get (
974              p_encoded => FND_API.G_FALSE,
975              p_count => x_msg_count,
976              p_data  => x_msg_data
977       );
978  End Delete_Deliverable;
979 
980 PROCEDURE Validate_Deliverable(
981    p_api_version_number       IN  NUMBER,
982    p_init_msg_list     IN  VARCHAR2  := FND_API.g_false,
983    p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
984    p_validation_mode   IN  VARCHAR2  := JTF_PLSQL_API.g_create,
985    x_return_status     OUT NOCOPY VARCHAR2,
986    x_msg_count         OUT NOCOPY NUMBER,
987    x_msg_data          OUT NOCOPY VARCHAR2,
988    p_deliv_rec         IN  AMS_Deliverable_PVT.deliv_rec_type
989 )
990 
991 
992 IS
993 
994    l_api_name       CONSTANT VARCHAR2(30) := 'validate_Deliverable';
995    l_return_status  VARCHAR2(1);
996    l_pvt_deliv_rec  AMS_Deliverable_PVT.deliv_rec_type := p_deliv_rec;
997 
998 
999 BEGIN
1000 
1001    SAVEPOINT validate_Deliverable_pub;
1002 
1003    -- initialize the message list;
1004    -- won't do it again when calling private API
1005    IF FND_API.to_boolean(p_init_msg_list) THEN
1006       FND_MSG_PUB.initialize;
1007    END IF;
1008 
1009        -- Initialize API return status to SUCCESS
1010        x_return_status := FND_API.G_RET_STS_SUCCESS;
1011 
1012 
1013      -- customer pre-processing
1014    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'C')
1015    THEN
1016       AMS_Deliverable_CUHK.validate_deliverable_pre(
1017          l_pvt_deliv_rec,
1018          l_return_status
1019       );
1020 
1021       IF l_return_status = FND_API.g_ret_sts_error THEN
1022          RAISE FND_API.g_exc_error;
1023       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1024          RAISE FND_API.g_exc_unexpected_error;
1025       END IF;
1026    END IF;
1027 
1028    -- vertical industry pre-processing
1029    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'V')
1030    THEN
1031       AMS_Deliverable_VUHK.validate_deliverable_pre(
1032          l_pvt_deliv_rec,
1033          l_return_status
1034       );
1035 
1036       IF l_return_status = FND_API.g_ret_sts_error THEN
1037          RAISE FND_API.g_exc_error;
1038       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1039          RAISE FND_API.g_exc_unexpected_error;
1040       END IF;
1041    END IF;
1042 
1043    -- call business API
1044 
1045    AMS_Deliverable_PVT.Validate_Deliverable(
1046       p_api_version    => p_api_version_number,
1047       p_init_msg_list         => p_init_msg_list, --has done before
1048       p_validation_level      => p_validation_level,
1049       p_validation_mode       => p_validation_mode,
1050       p_deliv_rec             => l_pvt_deliv_rec,
1051       x_return_status         => l_return_status,
1052       x_msg_count             => x_msg_count,
1053       x_msg_data              => x_msg_data
1054         );
1055 
1056 
1057    IF l_return_status = FND_API.g_ret_sts_error THEN
1058       RAISE FND_API.g_exc_error;
1059    ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1060       RAISE FND_API.g_exc_unexpected_error;
1061    END IF;
1062 
1063 
1064 
1065 
1066 
1067    -- vertical industry post-processing
1068    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'V')
1069    THEN
1070       AMS_Deliverable_VUHK.validate_deliverable_post(
1071          l_pvt_deliv_rec,
1072          l_return_status
1073       );
1074 
1075       IF l_return_status = FND_API.g_ret_sts_error THEN
1076          RAISE FND_API.g_exc_error;
1077       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1078          RAISE FND_API.g_exc_unexpected_error;
1079       END IF;
1080    END IF;
1081 
1082    -- customer post-processing
1083    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'C')
1084    THEN
1085       AMS_Deliverable_CUHK.validate_deliverable_post(
1086          l_pvt_deliv_rec,
1087          l_return_status
1088       );
1089 
1090       IF l_return_status = FND_API.g_ret_sts_error THEN
1091          RAISE FND_API.g_exc_error;
1092       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1093          RAISE FND_API.g_exc_unexpected_error;
1094       END IF;
1095    END IF;
1096 
1097       -- Debug Message
1098       AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
1099 
1100       -- Standard call to get message count and if count is 1, get message info.
1101       FND_MSG_PUB.Count_And_Get
1102         (p_count          =>   x_msg_count,
1103          p_data           =>   x_msg_data
1104       );
1105 
1106 EXCEPTION
1107 
1108    WHEN FND_API.g_exc_error THEN
1109       ROLLBACK TO validate_Deliverable_pub;
1110       x_return_status := FND_API.g_ret_sts_error;
1111       FND_MSG_PUB.count_and_get(
1112             p_encoded => FND_API.g_false,
1113             p_count   => x_msg_count,
1114             p_data    => x_msg_data
1115       );
1116 
1117    WHEN FND_API.g_exc_unexpected_error THEN
1118       ROLLBACK TO validate_Deliverable_pub;
1119       x_return_status := FND_API.g_ret_sts_unexp_error ;
1120       FND_MSG_PUB.count_and_get(
1121             p_encoded => FND_API.g_false,
1122             p_count   => x_msg_count,
1123             p_data    => x_msg_data
1124       );
1125 
1126 
1127    WHEN OTHERS THEN
1128       ROLLBACK TO validate_Deliverable_pub;
1129       x_return_status := FND_API.g_ret_sts_unexp_error ;
1130 
1131       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error)
1132                 THEN
1133          FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
1134       END IF;
1135 
1136       FND_MSG_PUB.count_and_get(
1137             p_encoded => FND_API.g_false,
1138             p_count   => x_msg_count,
1139             p_data    => x_msg_data
1140       );
1141 
1142 END Validate_Deliverable;
1143 
1144 
1145 PROCEDURE Lock_Deliverable(
1146      p_api_version_number         IN   NUMBER,
1147      p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1148          p_validation_level  IN  NUMBER    := FND_API.g_valid_level_full,
1149      x_return_status              OUT NOCOPY  VARCHAR2,
1150      x_msg_count                  OUT NOCOPY  NUMBER,
1151      x_msg_data                   OUT NOCOPY  VARCHAR2,
1152 
1153      p_deliv_id                   IN  NUMBER,
1154      p_object_version_number             IN  NUMBER
1155      )
1156 
1157   IS
1158 
1159  L_API_NAME                  CONSTANT VARCHAR2(30) := 'lock_Deliverable';
1160  L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1161 
1162  l_deliv_id      NUMBER := p_deliv_id ;
1163  l_object_version_number          NUMBER := p_object_version_number;
1164  l_return_status    VARCHAR2(1);
1165 
1166   BEGIN
1167 
1168        -- Standard call to check for call compatibility.
1169        IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1170                                             p_api_version_number,
1171                                             l_api_name,
1172                                             G_PKG_NAME)
1173        THEN
1174            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1175        END IF;
1176 
1177        -- Initialize message list if p_init_msg_list is set to TRUE.
1178        IF FND_API.to_Boolean( p_init_msg_list )
1179        THEN
1180           FND_MSG_PUB.initialize;
1181        END IF;
1182 
1183        -- Debug Message
1184        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'start');
1185 
1186 
1187        -- Initialize API return status to SUCCESS
1188        x_return_status := FND_API.G_RET_STS_SUCCESS;
1189   --
1190    -- customer pre-processing
1191    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'C')
1192    THEN
1193       AMS_Deliverable_CUHK.lock_deliverable_pre(
1194          l_deliv_ID,
1195                  l_object_version_number,
1196          l_return_status
1197       );
1198 
1199       IF l_return_status = FND_API.g_ret_sts_error THEN
1200          RAISE FND_API.g_exc_error;
1201       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1202          RAISE FND_API.g_exc_unexpected_error;
1203       END IF;
1204    END IF;
1205 
1206    -- vertical industry pre-processing
1207    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'B', 'V')
1208    THEN
1209       AMS_Deliverable_VUHK.lock_Deliverable_pre(
1210          l_deliv_ID,
1211                  l_object_version_number,
1212          l_return_status
1213       );
1214 
1215       IF l_return_status = FND_API.g_ret_sts_error THEN
1216          RAISE FND_API.g_exc_error;
1217       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1218          RAISE FND_API.g_exc_unexpected_error;
1219       END IF;
1220    END IF;
1221        --
1222        -- API body
1223        --
1224      -- Calling Private package: Create_Deliverable
1225      -- Hint: Primary key needs to be returned
1226 
1227       AMS_Deliverable_PVT.Lock_Deliverable(
1228       p_api_version        => 1.0,
1229       p_init_msg_list              => FND_API.G_FALSE,
1230       x_return_status              => x_return_status,
1231       x_msg_count                  => x_msg_count,
1232       x_msg_data                   => x_msg_data,
1233       p_deliv_id     => l_deliv_id,
1234       p_object_version             => l_object_version_number);
1235 
1236 
1237        -- Check return status from the above procedure call
1238        IF x_return_status = FND_API.G_RET_STS_ERROR then
1239            RAISE FND_API.G_EXC_ERROR;
1240        elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1241            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1242        END IF;
1243        --
1244        -- End of API body.
1245        --
1246             -- customer pre-processing
1247    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'C')
1248    THEN
1249       AMS_Deliverable_CUHK.lock_Deliverable_post(
1250          l_deliv_ID,
1251                  l_object_version_number,
1252          l_return_status
1253       );
1254 
1255       IF l_return_status = FND_API.g_ret_sts_error THEN
1256          RAISE FND_API.g_exc_error;
1257       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1258          RAISE FND_API.g_exc_unexpected_error;
1259       END IF;
1260    END IF;
1261 
1262    -- vertical industry pre-processing
1263    IF JTF_USR_HKS.ok_to_execute(g_pkg_name, l_api_name, 'A', 'V')
1264    THEN
1265       AMS_Deliverable_VUHK.lock_Deliverable_post(
1266          l_deliv_ID,
1267                  l_object_version_number,
1268          l_return_status
1269       );
1270 
1271       IF l_return_status = FND_API.g_ret_sts_error THEN
1272          RAISE FND_API.g_exc_error;
1273       ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
1274          RAISE FND_API.g_exc_unexpected_error;
1275       END IF;
1276    END IF;
1277        --
1278 
1279        -- Debug Message
1280        AMS_UTILITY_PVT.debug_message('Public API: ' || l_api_name || 'end');
1281 
1282  EXCEPTION
1283 
1284     WHEN AMS_Utility_PVT.resource_locked THEN
1285       x_return_status := FND_API.g_ret_sts_error;
1286   AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1287 
1288     WHEN FND_API.G_EXC_ERROR THEN
1289       ROLLBACK TO LOCK_Deliverable_PUB;
1290       x_return_status := FND_API.G_RET_STS_ERROR;
1291       -- Standard call to get message count and if count=1, get the message
1292       FND_MSG_PUB.Count_And_Get (
1293              p_encoded => FND_API.G_FALSE,
1294              p_count   => x_msg_count,
1295              p_data    => x_msg_data
1296       );
1297 
1298     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1299       ROLLBACK TO LOCK_Deliverable_PUB;
1300       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1301       -- Standard call to get message count and if count=1, get the message
1302       FND_MSG_PUB.Count_And_Get (
1303              p_encoded => FND_API.G_FALSE,
1304              p_count => x_msg_count,
1305              p_data  => x_msg_data
1306       );
1307 
1308     WHEN OTHERS THEN
1309       ROLLBACK TO LOCK_Deliverable_PUB;
1310       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1311       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1312       THEN
1313          FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1314       END IF;
1315       -- Standard call to get message count and if count=1, get the message
1316       FND_MSG_PUB.Count_And_Get (
1317              p_encoded => FND_API.G_FALSE,
1318              p_count => x_msg_count,
1319              p_data  => x_msg_data
1320       );
1321  End Lock_Deliverable;
1322 
1323 
1324 END AMS_Deliverable_PUB;