DBA Data[Home] [Help]

PACKAGE BODY: APPS.OZF_ADJ_NEW_LINE_PVT

Source


1 PACKAGE BODY OZF_Adj_New_Line_PVT as
2 /* $Header: ozfvanlb.pls 120.0 2006/03/30 13:54:36 rssharma noship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          OZF_Adj_New_Line_PVT
7 -- Purpose
8 --
9 -- History
10 --
11 -- NOTE
12 --
13 -- End of Comments
14 -- ===============================================================
15 G_PKG_NAME CONSTANT VARCHAR2(30):= 'OZF_Adj_New_Line_PVT';
16 G_FILE_NAME CONSTANT VARCHAR2(12) := 'ozfvoanb.pls';
17 
18 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
19 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
20 
21 -- Hint: Primary key needs to be returned.
22 PROCEDURE Create_Adj_New_Line(
23     p_api_version_number         IN   NUMBER,
24     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
25     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
26     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
27 
28     x_return_status              OUT NOCOPY   VARCHAR2,
29     x_msg_count                  OUT NOCOPY   NUMBER,
30     x_msg_data                   OUT NOCOPY   VARCHAR2,
31 
32     p_adj_new_line_rec               IN   adj_new_line_rec_type  := g_miss_adj_new_line_rec,
33     x_offer_adj_new_line_id                   OUT NOCOPY   NUMBER
34      )
35 
36  IS
37 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Adj_New_Line';
38 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
39    l_return_status_full        VARCHAR2(1);
40    l_object_version_number     NUMBER := 1;
41    l_org_id                    NUMBER := FND_API.G_MISS_NUM;
42    l_OFFER_ADJ_NEW_LINE_ID                  NUMBER;
43    l_dummy       NUMBER;
44 
45    CURSOR c_id IS
46       SELECT OZF_OFFER_ADJ_NEW_LINES_s.NEXTVAL
47       FROM dual;
48 
49    CURSOR c_id_exists (l_id IN NUMBER) IS
50       SELECT 1
51       FROM OZF_OFFER_ADJ_NEW_LINES
52       WHERE OFFER_ADJ_NEW_LINE_ID = l_id;
53 
54 BEGIN
55       -- Standard Start of API savepoint
56       SAVEPOINT CREATE_Adj_New_Line_PVT;
57 
58       -- Standard call to check for call compatibility.
59       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
60                                            p_api_version_number,
61                                            l_api_name,
62                                            G_PKG_NAME)
63       THEN
64           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
65       END IF;
66 
67       -- Initialize message list if p_init_msg_list is set to TRUE.
68       IF FND_API.to_Boolean( p_init_msg_list )
69       THEN
70          FND_MSG_PUB.initialize;
71       END IF;
72 
73       -- Debug Message
74       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
75 
76 
77       -- Initialize API return status to SUCCESS
78       x_return_status := FND_API.G_RET_STS_SUCCESS;
79 
80    -- Local variable initialization
81 
82    IF p_adj_new_line_rec.OFFER_ADJ_NEW_LINE_ID IS NULL OR p_adj_new_line_rec.OFFER_ADJ_NEW_LINE_ID = FND_API.g_miss_num THEN
83       LOOP
84          l_dummy := NULL;
85          OPEN c_id;
86          FETCH c_id INTO l_OFFER_ADJ_NEW_LINE_ID;
87          CLOSE c_id;
88 
89          OPEN c_id_exists(l_OFFER_ADJ_NEW_LINE_ID);
90          FETCH c_id_exists INTO l_dummy;
91          CLOSE c_id_exists;
92          EXIT WHEN l_dummy IS NULL;
93       END LOOP;
94    END IF;
95 
96       -- =========================================================================
97       -- Validate Environment
98       -- =========================================================================
99 
100       IF FND_GLOBAL.User_Id IS NULL
101       THEN
102  OZF_UTILITY_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
103           RAISE FND_API.G_EXC_ERROR;
104       END IF;
105 
106       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
107       THEN
108           -- Debug message
109           OZF_UTILITY_PVT.debug_message('Private API: Validate_Adj_New_Line');
110 
111           -- Invoke validation procedures
112           Validate_adj_new_line(
113             p_api_version_number     => 1.0,
114             p_init_msg_list    => FND_API.G_FALSE,
115             p_validation_level => p_validation_level,
116             p_validation_mode  => JTF_PLSQL_API.g_create,
117             p_adj_new_line_rec  =>  p_adj_new_line_rec,
118             x_return_status    => x_return_status,
119             x_msg_count        => x_msg_count,
120             x_msg_data         => x_msg_data);
121       END IF;
122 
123       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
124           RAISE FND_API.G_EXC_ERROR;
125       END IF;
126 
127 
128       -- Debug Message
129       OZF_UTILITY_PVT.debug_message( 'Private API: Calling create table handler');
130 
131       -- Invoke table handler(OZF_OFFER_ADJ_NEW_LINES_PKG.Insert_Row)
132 
133       OZF_OFFER_ADJ_NEW_LINES_PKG.Insert_Row(
134           px_offer_adj_new_line_id  => l_offer_adj_new_line_id,
135           p_offer_adjustment_id  => p_adj_new_line_rec.offer_adjustment_id,
136           p_volume_from  => p_adj_new_line_rec.volume_from,
137           p_volume_to  => p_adj_new_line_rec.volume_to,
138           p_volume_type  => p_adj_new_line_rec.volume_type,
139           p_discount  => p_adj_new_line_rec.discount,
140           p_discount_type  => p_adj_new_line_rec.discount_type,
141           p_tier_type  => p_adj_new_line_rec.tier_type,
142           p_td_discount     => p_adj_new_line_rec.td_discount,
143           p_td_discount_type => p_adj_new_line_rec.td_discount_type,
144           p_quantity         => p_adj_new_line_rec.quantity,
145           p_benefit_price_list_line_id => p_adj_new_line_rec.benefit_price_list_line_id,
146           p_parent_adj_line_id          => p_adj_new_line_rec.parent_adj_line_id,
147           p_start_date_active           => p_adj_new_line_rec.start_date_active,
148           p_end_date_active             => p_adj_new_line_rec.end_date_active,
149           p_creation_date  => SYSDATE,
150           p_created_by  => G_USER_ID,
151           p_last_update_date  => SYSDATE,
152           p_last_updated_by  => G_USER_ID,
153           p_last_update_login  => G_LOGIN_ID,
154           px_object_version_number  => l_object_version_number);
155       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
156           RAISE FND_API.G_EXC_ERROR;
157       END IF;
158 
159           x_offer_adj_new_line_id := l_offer_adj_new_line_id;
160 --
161 -- End of API body
162 --
163 
164       -- Standard check for p_commit
165       IF FND_API.to_Boolean( p_commit )
166       THEN
167          COMMIT WORK;
168       END IF;
169 
170 
171       -- Debug Message
172       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
173 EXCEPTION
174 
175    WHEN OZF_UTILITY_PVT.resource_locked THEN
176      x_return_status := FND_API.g_ret_sts_error;
177  OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
178 
179    WHEN FND_API.G_EXC_ERROR THEN
180      ROLLBACK TO CREATE_Adj_New_Line_PVT;
181      x_return_status := FND_API.G_RET_STS_ERROR;
182      -- Standard call to get message count and if count=1, get the message
183      FND_MSG_PUB.Count_And_Get (
184             p_encoded => FND_API.G_FALSE,
185             p_count   => x_msg_count,
186             p_data    => x_msg_data
187      );
188 
189    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
190      ROLLBACK TO CREATE_Adj_New_Line_PVT;
191      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
192      -- Standard call to get message count and if count=1, get the message
193      FND_MSG_PUB.Count_And_Get (
194             p_encoded => FND_API.G_FALSE,
195             p_count => x_msg_count,
196             p_data  => x_msg_data
197      );
198 
199    WHEN OTHERS THEN
200      ROLLBACK TO CREATE_Adj_New_Line_PVT;
201      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
202      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
203      THEN
204         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
205      END IF;
206      -- Standard call to get message count and if count=1, get the message
207      FND_MSG_PUB.Count_And_Get (
208             p_encoded => FND_API.G_FALSE,
209             p_count => x_msg_count,
210             p_data  => x_msg_data
211      );
212 End Create_Adj_New_Line;
213 
214 
215 PROCEDURE Update_Adj_New_Line(
216     p_api_version_number         IN   NUMBER,
217     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
218     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
219     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
220 
221     x_return_status              OUT NOCOPY   VARCHAR2,
222     x_msg_count                  OUT NOCOPY   NUMBER,
223     x_msg_data                   OUT NOCOPY   VARCHAR2,
224 
225     p_adj_new_line_rec               IN    adj_new_line_rec_type,
226     x_object_version_number      OUT NOCOPY   NUMBER
227     )
228 
229  IS
230 
231 CURSOR c_get_adj_new_line(cp_offerAdjNewLineId NUMBER, cp_objectVersionNumber NUMBER) IS
232     SELECT *
233     FROM  OZF_OFFER_ADJ_NEW_LINES
234     WHERE offer_adj_new_line_id = cp_offerAdjNewLineId
235     AND object_version_number = cp_objectVersionNumber;
236     -- Hint: Developer need to provide Where clause
237 
238 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Adj_New_Line';
239 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
240 -- Local Variables
241 l_object_version_number     NUMBER;
242 l_OFFER_ADJ_NEW_LINE_ID    NUMBER;
243 l_ref_adj_new_line_rec  c_get_Adj_New_Line%ROWTYPE ;
244 l_tar_adj_new_line_rec  OZF_Adj_New_Line_PVT.adj_new_line_rec_type := P_adj_new_line_rec;
245 l_rowid  ROWID;
246 
247  BEGIN
248       -- Standard Start of API savepoint
249       SAVEPOINT UPDATE_Adj_New_Line_PVT;
250 
251       -- Standard call to check for call compatibility.
252       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
253                                            p_api_version_number,
254                                            l_api_name,
255                                            G_PKG_NAME)
256       THEN
257           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
258       END IF;
259       -- Initialize message list if p_init_msg_list is set to TRUE.
260       IF FND_API.to_Boolean( p_init_msg_list )
261       THEN
262          FND_MSG_PUB.initialize;
263       END IF;
264       -- Debug Message
265       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
266       -- Initialize API return status to SUCCESS
267       x_return_status := FND_API.G_RET_STS_SUCCESS;
268       -- Debug Message
269       OZF_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
270       OPEN c_get_Adj_New_Line( l_tar_adj_new_line_rec.offer_adj_new_line_id , l_tar_adj_new_line_rec.object_version_number);
271       FETCH c_get_Adj_New_Line INTO l_ref_adj_new_line_rec  ;
272 
273        If ( c_get_Adj_New_Line%NOTFOUND) THEN
274   OZF_UTILITY_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
275    p_token_name   => 'INFO',
276  p_token_value  => 'Adj_New_Line') ;
277            RAISE FND_API.G_EXC_ERROR;
278        END IF;
279        -- Debug Message
280        OZF_UTILITY_PVT.debug_message('Private API: - Close Cursor');
281        CLOSE     c_get_Adj_New_Line;
282 
283 
284 
285       If (l_tar_adj_new_line_rec.object_version_number is NULL or
286           l_tar_adj_new_line_rec.object_version_number = FND_API.G_MISS_NUM ) Then
287   OZF_UTILITY_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
288    p_token_name   => 'COLUMN',
289  p_token_value  => 'Last_Update_Date') ;
290           raise FND_API.G_EXC_ERROR;
291       End if;
292       -- Check Whether record has been changed by someone else
293       If (l_tar_adj_new_line_rec.object_version_number <> l_ref_adj_new_line_rec.object_version_number) Then
294   OZF_UTILITY_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
295    p_token_name   => 'INFO',
296  p_token_value  => 'Adj_New_Line') ;
297           raise FND_API.G_EXC_ERROR;
298       End if;
299       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
300       THEN
301           -- Debug message
302           OZF_UTILITY_PVT.debug_message('Private API: Validate_Adj_New_Line');
303 
304           -- Invoke validation procedures
305           Validate_adj_new_line(
306             p_api_version_number     => 1.0,
307             p_init_msg_list    => FND_API.G_FALSE,
308             p_validation_level => p_validation_level,
309             p_validation_mode  => JTF_PLSQL_API.g_update,
310             p_adj_new_line_rec =>  p_adj_new_line_rec,
311             x_return_status    => x_return_status,
312             x_msg_count        => x_msg_count,
313             x_msg_data         => x_msg_data);
314       END IF;
315 
316       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
317           RAISE FND_API.G_EXC_ERROR;
318       END IF;
319 ozf_utility_pvt.debug_message('After validate: return:'||x_return_status);
320       -- Invoke table handler(OZF_OFFER_ADJ_NEW_LINES_PKG.Update_Row)
321       OZF_OFFER_ADJ_NEW_LINES_PKG.Update_Row(
322           p_offer_adj_new_line_id  => p_adj_new_line_rec.offer_adj_new_line_id,
323           p_offer_adjustment_id  => p_adj_new_line_rec.offer_adjustment_id,
324           p_volume_from  => p_adj_new_line_rec.volume_from,
325           p_volume_to  => p_adj_new_line_rec.volume_to,
326           p_volume_type  => p_adj_new_line_rec.volume_type,
327           p_discount  => p_adj_new_line_rec.discount,
328           p_discount_type  => p_adj_new_line_rec.discount_type,
329           p_tier_type  => p_adj_new_line_rec.tier_type,
330           p_td_discount => p_adj_new_line_rec.td_discount,
331           p_td_discount_type => p_adj_new_line_rec.td_discount_type,
332           p_quantity         => p_adj_new_line_rec.quantity,
333           p_benefit_price_list_line_id => p_adj_new_line_rec.benefit_price_list_line_id,
334           p_parent_adj_line_id          => p_adj_new_line_rec.parent_adj_line_id,
335           p_start_date_active           => p_adj_new_line_rec.start_date_active,
336           p_end_date_active             => p_adj_new_line_rec.end_date_active,
337           p_last_update_date  => SYSDATE,
338           p_last_updated_by  => G_USER_ID,
339           p_last_update_login  => G_LOGIN_ID,
340           p_object_version_number  => p_adj_new_line_rec.object_version_number);
341       --
342       -- End of API body.
343       --
344       -- Standard check for p_commit
345       IF FND_API.to_Boolean( p_commit )
346       THEN
347          COMMIT WORK;
348       END IF;
349       -- Debug Message
350       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
351 EXCEPTION
352 
353    WHEN OZF_UTILITY_PVT.resource_locked THEN
354      x_return_status := FND_API.g_ret_sts_error;
355  OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
356 
357    WHEN FND_API.G_EXC_ERROR THEN
358      ROLLBACK TO UPDATE_Adj_New_Line_PVT;
359      x_return_status := FND_API.G_RET_STS_ERROR;
360      -- Standard call to get message count and if count=1, get the message
361      FND_MSG_PUB.Count_And_Get (
362             p_encoded => FND_API.G_FALSE,
363             p_count   => x_msg_count,
364             p_data    => x_msg_data
365      );
366 
367    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
368      ROLLBACK TO UPDATE_Adj_New_Line_PVT;
369      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
370      -- Standard call to get message count and if count=1, get the message
371      FND_MSG_PUB.Count_And_Get (
372             p_encoded => FND_API.G_FALSE,
376 
373             p_count => x_msg_count,
374             p_data  => x_msg_data
375      );
377    WHEN OTHERS THEN
378      ROLLBACK TO UPDATE_Adj_New_Line_PVT;
379      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
380      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
381      THEN
382         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
383      END IF;
384      -- Standard call to get message count and if count=1, get the message
385      FND_MSG_PUB.Count_And_Get (
386             p_encoded => FND_API.G_FALSE,
387             p_count => x_msg_count,
388             p_data  => x_msg_data
389      );
390 End Update_Adj_New_Line;
391 
392 
393 PROCEDURE Delete_Adj_New_Line(
394     p_api_version_number         IN   NUMBER,
395     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
396     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
397     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
398     x_return_status              OUT NOCOPY   VARCHAR2,
399     x_msg_count                  OUT NOCOPY   NUMBER,
400     x_msg_data                   OUT NOCOPY   VARCHAR2,
401     p_offer_adj_new_line_id                   IN  NUMBER,
402     p_object_version_number      IN   NUMBER
403     )
404 
405  IS
406 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Adj_New_Line';
407 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
408 l_object_version_number     NUMBER;
409 
410 CURSOR c_products(cp_offerAdjNewLineId NUMBER) IS
411 SELECT offer_adj_new_product_id, object_version_number
412 FROM ozf_offer_adj_new_products
413 WHERE offer_adj_new_line_id = cp_offerAdjNewLineId;
414 
415 CURSOR c_tiers(cp_offerAdjNewLineId NUMBER) IS
416 SELECT offer_adj_new_line_id
417 FROM ozf_offer_adj_new_lines
418 WHERE parent_adj_line_id = cp_offerAdjNewLineId;
419 
420  BEGIN
421       -- Standard Start of API savepoint
422       SAVEPOINT DELETE_Adj_New_Line_PVT;
423 
424       -- Standard call to check for call compatibility.
425       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
426                                            p_api_version_number,
427                                            l_api_name,
428                                            G_PKG_NAME)
429       THEN
430           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
431       END IF;
432 
433       -- Initialize message list if p_init_msg_list is set to TRUE.
434       IF FND_API.to_Boolean( p_init_msg_list )
435       THEN
436          FND_MSG_PUB.initialize;
437       END IF;
438 
439       -- Debug Message
440       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
441 
442 
443       -- Initialize API return status to SUCCESS
444       x_return_status := FND_API.G_RET_STS_SUCCESS;
445 
446       --
447       -- Api body
448       --
449       FOR l_products IN c_products(p_OFFER_ADJ_NEW_LINE_ID) LOOP
450         OZF_Adj_New_Prod_PVT.Delete_Adj_New_Prod(
451                                                     p_api_version_number         => 1.0
452                                                     , p_init_msg_list              => FND_API.G_FALSE
453                                                     , p_commit                     => FND_API.G_FALSE
454                                                     , p_validation_level           => FND_API.G_VALID_LEVEL_FULL
455                                                     , x_return_status              => x_return_status
456                                                     , x_msg_count                  => x_msg_count
457                                                     , x_msg_data                   => x_msg_data
458                                                     , p_offer_adj_new_product_id   => l_products.offer_adj_new_product_id
459                                                     , p_object_version_number      => l_products.object_version_number
460                                                 );
461         IF x_return_status = FND_API.G_RET_STS_ERROR THEN
462             RAISE FND_API.G_EXC_ERROR;
463         ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
464             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
465         END IF;
466       END LOOP;
467       -- Debug Message
468       OZF_UTILITY_PVT.debug_message( 'Private API: Calling delete Tiers');
469 
470 for l_tiers in c_tiers(p_OFFER_ADJ_NEW_LINE_ID) LOOP
471 ozf_utility_pvt.debug_message('Line id is :'||l_tiers.offer_adj_new_line_id);
472 IF l_tiers.offer_adj_new_line_id IS NOT NULL THEN
473       OZF_OFFER_ADJ_NEW_LINES_PKG.Delete_Row(
474           p_OFFER_ADJ_NEW_LINE_ID  => l_tiers.offer_adj_new_line_id);
475 END IF;
476 END LOOP;
477 ozf_utility_pvt.debug_message('Line id is :'||p_OFFER_ADJ_NEW_LINE_ID);
478      -- Invoke table handler(OZF_OFFER_ADJ_NEW_LINES_PKG.Delete_Row)
479       OZF_OFFER_ADJ_NEW_LINES_PKG.Delete_Row(
480           p_OFFER_ADJ_NEW_LINE_ID  => p_OFFER_ADJ_NEW_LINE_ID);
481       --
482       -- End of API body
483       --
484       OZF_UTILITY_PVT.debug_message( 'Private API: Called delete table handler');
485 
486       -- Standard check for p_commit
487       IF FND_API.to_Boolean( p_commit )
488       THEN
489          COMMIT WORK;
490       END IF;
491 
492 
493       -- Debug Message
494       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
495 
496       -- Standard call to get message count and if count is 1, get message info.
497       FND_MSG_PUB.Count_And_Get
498         (p_count          =>   x_msg_count,
499          p_data           =>   x_msg_data
500       );
501 EXCEPTION
502 
503    WHEN OZF_UTILITY_PVT.resource_locked THEN
504      x_return_status := FND_API.g_ret_sts_error;
508      ROLLBACK TO DELETE_Adj_New_Line_PVT;
505  OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
506 
507    WHEN FND_API.G_EXC_ERROR THEN
509      x_return_status := FND_API.G_RET_STS_ERROR;
510      -- Standard call to get message count and if count=1, get the message
511      FND_MSG_PUB.Count_And_Get (
512             p_encoded => FND_API.G_FALSE,
513             p_count   => x_msg_count,
514             p_data    => x_msg_data
515      );
516 
517    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
518      ROLLBACK TO DELETE_Adj_New_Line_PVT;
519      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
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 
527    WHEN OTHERS THEN
528      ROLLBACK TO DELETE_Adj_New_Line_PVT;
529      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
530      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
531      THEN
532         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
533      END IF;
534      -- Standard call to get message count and if count=1, get the message
535      FND_MSG_PUB.Count_And_Get (
536             p_encoded => FND_API.G_FALSE,
537             p_count => x_msg_count,
538             p_data  => x_msg_data
539      );
540 End Delete_Adj_New_Line;
541 
542 
543 
544 -- Hint: Primary key needs to be returned.
545 PROCEDURE Lock_Adj_New_Line(
546     p_api_version_number         IN   NUMBER,
547     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
548 
549     x_return_status              OUT NOCOPY   VARCHAR2,
550     x_msg_count                  OUT NOCOPY   NUMBER,
551     x_msg_data                   OUT NOCOPY   VARCHAR2,
552 
553     p_offer_adj_new_line_id                   IN  NUMBER,
554     p_object_version             IN  NUMBER
555     )
556 
557  IS
558 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_Adj_New_Line';
559 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
560 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
561 l_OFFER_ADJ_NEW_LINE_ID                  NUMBER;
562 
563 CURSOR c_Adj_New_Line IS
564    SELECT OFFER_ADJ_NEW_LINE_ID
565    FROM OZF_OFFER_ADJ_NEW_LINES
566    WHERE OFFER_ADJ_NEW_LINE_ID = p_OFFER_ADJ_NEW_LINE_ID
567    AND object_version_number = p_object_version
568    FOR UPDATE NOWAIT;
569 
570 BEGIN
571 
572       -- Debug Message
573       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
574 
575       -- Initialize message list if p_init_msg_list is set to TRUE.
576       IF FND_API.to_Boolean( p_init_msg_list )
577       THEN
578          FND_MSG_PUB.initialize;
579       END IF;
580 
581       -- Standard call to check for call compatibility.
582       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
583                                            p_api_version_number,
584                                            l_api_name,
585                                            G_PKG_NAME)
586       THEN
587           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
588       END IF;
589 
590 
591       -- Initialize API return status to SUCCESS
592       x_return_status := FND_API.G_RET_STS_SUCCESS;
593 
594 
595 ------------------------ lock -------------------------
596 
597   OZF_UTILITY_PVT.debug_message(l_full_name||': start');
598   OPEN c_Adj_New_Line;
599 
600   FETCH c_Adj_New_Line INTO l_OFFER_ADJ_NEW_LINE_ID;
601 
602   IF (c_Adj_New_Line%NOTFOUND) THEN
603     CLOSE c_Adj_New_Line;
604     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
605        FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
606        FND_MSG_PUB.add;
607     END IF;
608     RAISE FND_API.g_exc_error;
609   END IF;
610 
611   CLOSE c_Adj_New_Line;
612 
613  -------------------- finish --------------------------
614   FND_MSG_PUB.count_and_get(
615     p_encoded => FND_API.g_false,
616     p_count   => x_msg_count,
617     p_data    => x_msg_data);
618   OZF_UTILITY_PVT.debug_message(l_full_name ||': end');
619 EXCEPTION
620 
621    WHEN OZF_UTILITY_PVT.resource_locked THEN
622      x_return_status := FND_API.g_ret_sts_error;
623  OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
624 
625    WHEN FND_API.G_EXC_ERROR THEN
626      ROLLBACK TO LOCK_Adj_New_Line_PVT;
627      x_return_status := FND_API.G_RET_STS_ERROR;
628      -- Standard call to get message count and if count=1, get the message
629      FND_MSG_PUB.Count_And_Get (
630             p_encoded => FND_API.G_FALSE,
631             p_count   => x_msg_count,
632             p_data    => x_msg_data
633      );
634 
635    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
636      ROLLBACK TO LOCK_Adj_New_Line_PVT;
637      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
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 
645    WHEN OTHERS THEN
646      ROLLBACK TO LOCK_Adj_New_Line_PVT;
647      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
648      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
649      THEN
650         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
651      END IF;
652      -- Standard call to get message count and if count=1, get the message
653      FND_MSG_PUB.Count_And_Get (
657      );
654             p_encoded => FND_API.G_FALSE,
655             p_count => x_msg_count,
656             p_data  => x_msg_data
658 End Lock_Adj_New_Line;
659 
660 
661 PROCEDURE check_adj_new_line_uk_items(
662     p_adj_new_line_rec               IN   adj_new_line_rec_type,
663     p_validation_mode            IN  VARCHAR2 := JTF_PLSQL_API.g_create,
664     x_return_status              OUT NOCOPY  VARCHAR2)
665 IS
666 l_valid_flag  VARCHAR2(1);
667 
668 BEGIN
669       x_return_status := FND_API.g_ret_sts_success;
670       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
671          l_valid_flag := OZF_UTILITY_PVT.check_uniqueness(
672          'OZF_OFFER_ADJ_NEW_LINES',
673          'OFFER_ADJ_NEW_LINE_ID = ''' || p_adj_new_line_rec.OFFER_ADJ_NEW_LINE_ID ||''''
674          );
675       ELSE
676          l_valid_flag := OZF_UTILITY_PVT.check_uniqueness(
677          'OZF_OFFER_ADJ_NEW_LINES',
678          'OFFER_ADJ_NEW_LINE_ID = ''' || p_adj_new_line_rec.OFFER_ADJ_NEW_LINE_ID ||
679          ''' AND OFFER_ADJ_NEW_LINE_ID <> ' || p_adj_new_line_rec.OFFER_ADJ_NEW_LINE_ID
680          );
681       END IF;
682 
683       IF l_valid_flag = FND_API.g_false THEN
684  OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_OFFER_ADJ_NEW_LINE_ID_DUPLICATE');
685          x_return_status := FND_API.g_ret_sts_error;
686          RETURN;
687       END IF;
688 
689 END check_adj_new_line_uk_items;
690 
691 
692 PROCEDURE check_adj_pg_req_items(
693                                 p_adj_new_line_rec               IN  adj_new_line_rec_type,
694                                 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
695                                 x_return_status	         OUT NOCOPY  VARCHAR2
696                             )
697 IS
698 BEGIN
699    x_return_status := FND_API.g_ret_sts_success;
700 
701    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
702       IF p_adj_new_line_rec.discount = FND_API.g_miss_num OR p_adj_new_line_rec.discount IS NULL THEN
703         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'discount' );
704          x_return_status := FND_API.g_ret_sts_error;
705          RETURN;
706       END IF;
707       IF p_adj_new_line_rec.discount_type = FND_API.g_miss_char OR p_adj_new_line_rec.discount_type IS NULL THEN
708         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'discount_type' );
709          x_return_status := FND_API.g_ret_sts_error;
710          RETURN;
711       END IF;
712     ELSE
713         IF p_adj_new_line_rec.discount = FND_API.G_MISS_NUM THEN
714         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'discount' );
715          x_return_status := FND_API.g_ret_sts_error;
716          RETURN;
717       END IF;
718       IF p_adj_new_line_rec.discount_type = FND_API.G_MISS_CHAR THEN
719         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'discount_type' );
720          x_return_status := FND_API.g_ret_sts_error;
721          RETURN;
722       END IF;
723     END IF;
724 END check_adj_pg_req_items;
725 
726 PROCEDURE check_adj_new_line_req_items(
727     p_adj_new_line_rec               IN  adj_new_line_rec_type,
728     p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
729     x_return_status	         OUT NOCOPY  VARCHAR2
730 )
731 IS
732 BEGIN
733    x_return_status := FND_API.g_ret_sts_success;
734 
735    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
736       IF p_adj_new_line_rec.offer_adjustment_id = FND_API.g_miss_num OR p_adj_new_line_rec.offer_adjustment_id IS NULL THEN
737         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'offer_adjustment_id' );
738          x_return_status := FND_API.g_ret_sts_error;
739          RETURN;
740       END IF;
741       IF p_adj_new_line_rec.tier_type = FND_API.g_miss_char OR p_adj_new_line_rec.tier_type IS NULL THEN
742         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'tier_type' );
743          x_return_status := FND_API.g_ret_sts_error;
744          RETURN;
745       END IF;
746    ELSE
747       IF p_adj_new_line_rec.offer_adj_new_line_id IS NULL THEN
748         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'offer_adj_new_line_id' );
749          x_return_status := FND_API.g_ret_sts_error;
750          RETURN;
751       END IF;
752       IF p_adj_new_line_rec.offer_adjustment_id IS NULL THEN
753         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'offer_adjustment_id' );
754          x_return_status := FND_API.g_ret_sts_error;
755          RETURN;
756       END IF;
757       IF p_adj_new_line_rec.tier_type = FND_API.G_MISS_CHAR THEN
758         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'tier_type' );
759          x_return_status := FND_API.g_ret_sts_error;
760          RETURN;
761       END IF;
762       IF p_adj_new_line_rec.object_version_number = FND_API.G_MISS_NUM THEN
763         OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'object_version_number' );
764          x_return_status := FND_API.g_ret_sts_error;
765          RETURN;
766       END IF;
767    END IF;
768 
769 IF p_adj_new_line_rec.tier_type = 'DIS' THEN
770     check_adj_pg_req_items(
771                                     p_adj_new_line_rec  => p_adj_new_line_rec
772                                     , p_validation_mode   => p_validation_mode
773                                     , x_return_status     => x_return_status
774                                 );
775     IF x_return_status <>FND_API.g_ret_sts_success THEN
776         return;
777     END IF;
778 END IF;
779 
780 END check_adj_new_line_req_items;
781 
782 
783 PROCEDURE   check_adj_new_line_attr(
784     p_adj_new_line_rec IN adj_new_line_rec_type
788 IS
785     , p_validation_mode  IN    VARCHAR2
786     , x_return_status    OUT NOCOPY   VARCHAR2
787       )
789 CURSOR c_modifierLevelCode(cp_offerAdjustmentId NUMBER) IS
790 SELECT modifier_level_code FROM ozf_offers a, ozf_offer_adjustments_b b
791 WHERE a.qp_list_header_id = b.list_header_id
792 AND b.offer_adjustment_id = cp_offerAdjustmentId;
793 l_modifierLevelCode c_modifierLevelCode%ROWTYPE;
794 CURSOR c_dates (cp_offerAdjustmentId NUMBER) IS
795 SELECT a.effective_date , b.end_date_active
796 FROM ozf_offer_adjustments_b a, qp_list_headers_b b
797 WHERE a.list_header_id = b.list_header_id
798 AND a.offer_adjustment_id = cp_offerAdjustmentId;
799 l_dates c_dates%ROWTYPE;
800 BEGIN
801       x_return_status := FND_API.G_RET_STS_SUCCESS;
802     IF p_adj_new_line_rec.volume_from < 0 THEN
803             OZF_Utility_PVT.Error_Message('OZF_NEGATIVE_QTY' );
804             x_return_status := FND_API.g_ret_sts_error;
805             return;
806     END IF;
807     IF p_adj_new_line_rec.volume_to < 0 THEN
808             OZF_Utility_PVT.Error_Message('OZF_NEGATIVE_QTY' );
809             x_return_status := FND_API.g_ret_sts_error;
810             return;
811     END IF;
812 
813 OPEN c_modifierLevelCode(p_adj_new_line_rec.offer_adjustment_id);
814 FETCH c_modifierLevelCode INTO l_modifierLevelCode;
815 CLOSE c_modifierLevelCode;
816 
817     IF l_modifierLevelCode.modifier_level_code = 'LINEGROUP' THEN
818         IF p_validation_mode = JTF_PLSQL_API.g_create THEN
819               IF (p_adj_new_line_rec.volume_from = FND_API.G_MISS_NUM OR p_adj_new_line_rec.volume_from IS NULL)
820                   OR
821                   (p_adj_new_line_rec.volume_type = FND_API.G_MISS_CHAR OR p_adj_new_line_rec.volume_type IS NULL)
822               THEN
823                 OZF_Utility_PVT.Error_Message('OZF_LINE_GRP_QTY_REQD' );
824                 x_return_status := FND_API.g_ret_sts_error;
825                 return;
826               END IF;
827         ELSE
828               IF (p_adj_new_line_rec.volume_from = FND_API.G_MISS_NUM )
829                   OR
830                   (p_adj_new_line_rec.volume_type = FND_API.G_MISS_CHAR)
831               THEN
832                 OZF_Utility_PVT.Error_Message('OZF_LINE_GRP_QTY_REQD' );
833                 x_return_status := FND_API.g_ret_sts_error;
834                 return;
835               END IF;
836         END IF;
837     END IF;
838 
839 OPEN c_dates(cp_offerAdjustmentId => p_adj_new_line_rec.offer_adjustment_id);
840 FETCH c_dates INTO l_dates;
841 CLOSE c_dates;
842 IF p_adj_new_line_rec.start_date_active IS NOT NULL AND p_adj_new_line_rec.start_date_active <> FND_API.G_MISS_DATE THEN
843 IF p_adj_new_line_rec.start_date_active < l_dates.effective_date THEN
844     OZF_Utility_PVT.Error_Message('OZF_DATE_OUT_OF_RANGE' );
845     x_return_status := FND_API.g_ret_sts_error;
846     return;
847 END IF;
848 END IF;
849 IF p_adj_new_line_rec.end_date_active IS NOT NULL AND p_adj_new_line_rec.end_date_active <> FND_API.G_MISS_DATE THEN
850     IF p_adj_new_line_rec.end_date_active > l_dates.end_date_active THEN
851     ozf_utility_pvt.debug_message('End Date is :'||l_dates.end_date_active||' : '||p_adj_new_line_rec.end_date_active);
852         OZF_Utility_PVT.Error_Message('OZF_DATE_OUT_OF_RANGE' );
853         x_return_status := FND_API.g_ret_sts_error;
854         return;
855     END IF;
856 END IF;
857 
858 END check_adj_new_line_attr;
859 
860 PROCEDURE check_adj_new_line_FK_items(
861     p_adj_new_line_rec IN adj_new_line_rec_type,
862     x_return_status OUT NOCOPY  VARCHAR2
863 )
864 IS
865 BEGIN
866    x_return_status := FND_API.g_ret_sts_success;
867         IF ozf_utility_pvt.check_fk_exists('OZF_OFFER_ADJUSTMENTS_B','OFFER_ADJUSTMENT_ID',to_char(p_adj_new_line_rec.offer_adjustment_id)) = FND_API.g_false THEN
868             OZF_Utility_PVT.Error_Message('OZF_INVALID_OFFER_ADJ_ID' );
869             x_return_status := FND_API.g_ret_sts_error;
870             return;
871         END IF;
872 IF p_adj_new_line_rec.benefit_price_list_line_id IS NOT NULL AND p_adj_new_line_rec.benefit_price_list_line_id <> FND_API.G_MISS_NUM THEN
873         IF ozf_utility_pvt.check_fk_exists('qp_list_lines','list_line_type_code = ''PLL'' AND list_line_id ', to_char(p_adj_new_line_rec.benefit_price_list_line_id)) = FND_API.g_false THEN
874             OZF_Utility_PVT.Error_Message('OZF_INVALID_PLL_ID' );
875             x_return_status := FND_API.g_ret_sts_error;
876             return;
877         END IF;
878 END IF;
879 
880 IF p_adj_new_line_rec.parent_adj_line_id IS NOT NULL AND p_adj_new_line_rec.parent_adj_line_id <> FND_API.G_MISS_NUM THEN
881         IF ozf_utility_pvt.check_fk_exists('ozf_offer_adj_new_lines','tier_type = ''PBH'' AND offer_adj_new_line_id ', to_char(p_adj_new_line_rec.parent_adj_line_id)) = FND_API.g_false THEN
882             OZF_Utility_PVT.Error_Message('OZF_INV_PARENT_ID' );
883             x_return_status := FND_API.g_ret_sts_error;
884             return;
885         END IF;
886 END IF;
887 
888    -- Enter custom code here
889 
890 END check_adj_new_line_FK_items;
891 
892 PROCEDURE check_adj_line_Lkup_items(
893     p_adj_new_line_rec IN adj_new_line_rec_type,
894     x_return_status OUT NOCOPY  VARCHAR2
895 )
896 IS
897 BEGIN
898    x_return_status := FND_API.g_ret_sts_success;
899    -- Enter custom code here
900 IF p_adj_new_line_rec.volume_type <> FND_API.G_MISS_CHAR AND p_adj_new_line_rec.volume_type IS NOT NULL THEN
901    IF OZF_UTILITY_PVT.check_lookup_exists('OZF_LOOKUPS', 'OZF_QP_VOLUME_TYPE', p_adj_new_line_rec.volume_type) = FND_API.g_false THEN
902             OZF_Utility_PVT.Error_Message('OZF_INVALID_VOLUME_TYPE' );
903             x_return_status := FND_API.g_ret_sts_error;
904             return;
905     END IF;
906 END IF;
907 
911         x_return_status := FND_API.g_ret_sts_error;
908 IF p_adj_new_line_rec.discount_type <> FND_API.G_MISS_CHAR AND p_adj_new_line_rec.discount_type IS NOT NULL THEN
909     IF OZF_UTILITY_PVT.check_lookup_exists('QP_LOOKUPS', 'ARITHMETIC_OPERATOR', p_adj_new_line_rec.discount_type) = FND_API.g_false THEN
910         OZF_Utility_PVT.Error_Message('OZF_INVALID_DISCOUNT_TYPE' );
912         return;
913     END IF;
914 END IF;
915 IF p_adj_new_line_rec.tier_type <> FND_API.G_MISS_CHAR AND p_adj_new_line_rec.tier_type IS NOT NULL THEN
916     IF OZF_UTILITY_PVT.check_lookup_exists('QP_LOOKUPS', 'LIST_LINE_TYPE_CODE', p_adj_new_line_rec.tier_type) = FND_API.g_false THEN
917         OZF_Utility_PVT.Error_Message('OZF_INVALID_TIER_TYPE' );
918         x_return_status := FND_API.g_ret_sts_error;
919         return;
920     END IF;
921 END IF;
922 
923 END check_adj_line_Lkup_items;
924 
925 PROCEDURE   Check_adj_new_line_inter_attr(
926     P_adj_new_line_rec     IN    adj_new_line_rec_type
927     , p_validation_mode  IN    VARCHAR2
928     , x_return_status    OUT NOCOPY   VARCHAR2
929       )
930 IS
931 BEGIN
932       x_return_status := FND_API.G_RET_STS_SUCCESS;
933 IF (p_adj_new_line_rec.volume_from IS NOT NULL AND P_adj_new_line_rec.volume_from <> FND_API.G_MISS_NUM )
934     AND
935     (p_adj_new_line_rec.volume_to IS NOT NULL AND p_adj_new_line_rec.volume_to <> FND_API.G_MISS_NUM )
936 THEN
937     IF p_adj_new_line_rec.volume_to <  p_adj_new_line_rec.volume_from THEN
938             OZF_Utility_PVT.Error_Message('OZF_FROM_GT_TO' );
939             x_return_status := FND_API.g_ret_sts_error;
940             return;
941     END IF;
942 END IF;
943 IF p_adj_new_line_rec.tier_type = 'PBH' THEN
944     IF p_validation_mode = JTF_PLSQL_API.g_create THEN
945         IF p_adj_new_line_rec.volume_type IS NULL OR p_adj_new_line_rec.volume_type = FND_API.G_MISS_CHAR THEN
946             OZF_Utility_PVT.Error_Message('OZF_PBH_VOL_TYPE_REQD' );
947             x_return_status := FND_API.g_ret_sts_error;
948             return;
949         END IF;
950     ELSIF p_validation_mode = JTF_PLSQL_API.g_update THEN
951         IF p_adj_new_line_rec.volume_type = FND_API.G_MISS_CHAR THEN
952             OZF_Utility_PVT.Error_Message('OZF_PBH_VOL_TYPE_REQD' );
953             x_return_status := FND_API.g_ret_sts_error;
954             return;
955         END IF;
956     END IF;
957 END IF;
958 END Check_adj_new_line_inter_attr;
959 
960 PROCEDURE   check_adj_new_line_entity(
961     p_adj_new_line_rec     IN    adj_new_line_rec_type,
962     x_return_status    OUT NOCOPY   VARCHAR2
963       )
964 IS
965 l_discount_type OZF_OFFER_DISCOUNT_LINES.DISCOUNT_TYPE%TYPE;
966 BEGIN
967       x_return_status := FND_API.G_RET_STS_SUCCESS;
968 
969 IF p_adj_new_line_rec.tier_type = 'DIS' THEN
970     IF p_adj_new_line_rec.discount_type IS NOT NULL AND p_adj_new_line_rec.discount_type <> FND_API.G_MISS_CHAR THEN
971     IF p_adj_new_line_rec.discount IS NOT NULL AND p_adj_new_line_rec.discount <> FND_API.G_MISS_NUM THEN
972         IF p_adj_new_line_rec.discount_type ='%' AND p_adj_new_line_rec.discount > 100 THEN
973             OZF_Utility_PVT.Error_Message('OZF_PER_DISC_INV' );
974             x_return_status := FND_API.g_ret_sts_error;
975             return;
976         END IF;
977     END IF;
978     END IF;
979 END IF;
980 END check_adj_new_line_entity;
981 
982 PROCEDURE Check_adj_new_line_Items (
983     P_adj_new_line_rec     IN    adj_new_line_rec_type,
984     p_validation_mode  IN    VARCHAR2,
985     x_return_status    OUT NOCOPY    VARCHAR2
986     )
987 IS
988 BEGIN
989    -- Check Items Uniqueness API calls
990 x_return_status := FND_API.G_RET_STS_SUCCESS;
991    check_adj_new_line_uk_items(
992       p_adj_new_line_rec => p_adj_new_line_rec,
993       p_validation_mode => p_validation_mode,
994       x_return_status => x_return_status);
995    IF x_return_status <> FND_API.g_ret_sts_success THEN
996       RETURN;
997    END IF;
998 ozf_utility_pvt.debug_message('UK Items:'||x_return_status);
999 
1000    -- Check Items Required/NOT NULL API calls
1001 
1002    check_adj_new_line_req_items(
1003       p_adj_new_line_rec => p_adj_new_line_rec,
1004       p_validation_mode => p_validation_mode,
1005       x_return_status => x_return_status);
1006    IF x_return_status <> FND_API.g_ret_sts_success THEN
1007       RETURN;
1008    END IF;
1009 ozf_utility_pvt.debug_message('Req Items:'||x_return_status);
1010 
1011    -- Check Items Foreign Keys API calls
1012 
1013    check_adj_new_line_FK_items(
1014       p_adj_new_line_rec => p_adj_new_line_rec,
1015       x_return_status => x_return_status);
1016    IF x_return_status <> FND_API.g_ret_sts_success THEN
1017       RETURN;
1018    END IF;
1019 ozf_utility_pvt.debug_message('FK Items:'||x_return_status);
1020 
1021    -- Check Items Lookups
1022 
1023    check_adj_line_Lkup_items(
1024       p_adj_new_line_rec => p_adj_new_line_rec,
1025       x_return_status => x_return_status);
1026    IF x_return_status <> FND_API.g_ret_sts_success THEN
1027       RETURN;
1028    END IF;
1029 ozf_utility_pvt.debug_message('Lkiup Items:'||x_return_status);
1030 
1031 check_adj_new_line_attr(
1032       p_adj_new_line_rec => p_adj_new_line_rec
1033       , p_validation_mode => p_validation_mode
1034       , x_return_status => x_return_status);
1035    IF x_return_status <> FND_API.g_ret_sts_success THEN
1036       RETURN;
1037    END IF;
1038 ozf_utility_pvt.debug_message('Attr Items:'||x_return_status);
1039 
1040 Check_adj_new_line_inter_attr(
1041       p_adj_new_line_rec => p_adj_new_line_rec
1042       , p_validation_mode => p_validation_mode
1043       , x_return_status => x_return_status);
1044    IF x_return_status <> FND_API.g_ret_sts_success THEN
1045       RETURN;
1049     (
1046    END IF;
1047 ozf_utility_pvt.debug_message('Inter Items:'||x_return_status);
1048 check_adj_new_line_entity
1050       p_adj_new_line_rec => p_adj_new_line_rec,
1051       x_return_status => x_return_status);
1052    IF x_return_status <> FND_API.g_ret_sts_success THEN
1053       RETURN;
1054    END IF;
1055 ozf_utility_pvt.debug_message('Entity Items:'||x_return_status);
1056 
1057 
1058 END Check_adj_new_line_Items;
1059 
1060 
1061 PROCEDURE Complete_adj_new_line_Rec (
1062    p_adj_new_line_rec IN adj_new_line_rec_type,
1063    x_complete_rec OUT NOCOPY  adj_new_line_rec_type)
1064 IS
1065    l_return_status  VARCHAR2(1);
1066 
1067    CURSOR c_complete IS
1068       SELECT *
1069       FROM ozf_offer_adj_new_lines
1070       WHERE offer_adj_new_line_id = p_adj_new_line_rec.offer_adj_new_line_id;
1071    l_adj_new_line_rec c_complete%ROWTYPE;
1072 BEGIN
1073    x_complete_rec := p_adj_new_line_rec;
1074 
1075 
1076    OPEN c_complete;
1077    FETCH c_complete INTO l_adj_new_line_rec;
1078    CLOSE c_complete;
1079 
1080    -- offer_adj_new_line_id
1081    IF p_adj_new_line_rec.offer_adj_new_line_id = FND_API.g_miss_num THEN
1082       x_complete_rec.offer_adj_new_line_id := l_adj_new_line_rec.offer_adj_new_line_id;
1083    END IF;
1084 
1085    -- offer_adjustment_id
1086    IF p_adj_new_line_rec.offer_adjustment_id = FND_API.g_miss_num THEN
1087       x_complete_rec.offer_adjustment_id := l_adj_new_line_rec.offer_adjustment_id;
1088    END IF;
1089 
1090    -- volume_from
1091    IF p_adj_new_line_rec.volume_from = FND_API.g_miss_num THEN
1092       x_complete_rec.volume_from := l_adj_new_line_rec.volume_from;
1093    END IF;
1094 
1095    -- volume_to
1096    IF p_adj_new_line_rec.volume_to = FND_API.g_miss_num THEN
1097       x_complete_rec.volume_to := l_adj_new_line_rec.volume_to;
1098    END IF;
1099 
1100    -- volume_type
1101    IF p_adj_new_line_rec.volume_type = FND_API.g_miss_char THEN
1102       x_complete_rec.volume_type := l_adj_new_line_rec.volume_type;
1103    END IF;
1104 
1105    -- discount
1106    IF p_adj_new_line_rec.discount = FND_API.g_miss_num THEN
1107       x_complete_rec.discount := l_adj_new_line_rec.discount;
1108    END IF;
1109 
1110    -- discount_type
1111    IF p_adj_new_line_rec.discount_type = FND_API.g_miss_char THEN
1112       x_complete_rec.discount_type := l_adj_new_line_rec.discount_type;
1113    END IF;
1114 
1115    -- tier_type
1116    IF p_adj_new_line_rec.tier_type = FND_API.g_miss_char THEN
1117       x_complete_rec.tier_type := l_adj_new_line_rec.tier_type;
1118    END IF;
1119 
1120    -- creation_date
1121    IF p_adj_new_line_rec.creation_date = FND_API.g_miss_date THEN
1122       x_complete_rec.creation_date := l_adj_new_line_rec.creation_date;
1123    END IF;
1124 
1125    -- created_by
1126    IF p_adj_new_line_rec.created_by = FND_API.g_miss_num THEN
1127       x_complete_rec.created_by := l_adj_new_line_rec.created_by;
1128    END IF;
1129 
1130    -- last_update_date
1131    IF p_adj_new_line_rec.last_update_date = FND_API.g_miss_date THEN
1132       x_complete_rec.last_update_date := l_adj_new_line_rec.last_update_date;
1133    END IF;
1134 
1135    -- last_updated_by
1136    IF p_adj_new_line_rec.last_updated_by = FND_API.g_miss_num THEN
1137       x_complete_rec.last_updated_by := l_adj_new_line_rec.last_updated_by;
1138    END IF;
1139 
1140    -- last_update_login
1141    IF p_adj_new_line_rec.last_update_login = FND_API.g_miss_num THEN
1142       x_complete_rec.last_update_login := l_adj_new_line_rec.last_update_login;
1143    END IF;
1144 
1145    -- object_version_number
1146    IF p_adj_new_line_rec.object_version_number = FND_API.g_miss_num THEN
1147       x_complete_rec.object_version_number := l_adj_new_line_rec.object_version_number;
1148    END IF;
1149    -- Note: Developers need to modify the procedure
1150    -- to handle any business specific requirements.
1151 END Complete_adj_new_line_Rec;
1152 
1153 PROCEDURE Validate_adj_new_line(
1154     p_api_version_number         IN   NUMBER,
1155     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1156     p_validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1157     p_validation_mode            IN   VARCHAR2     := JTF_PLSQL_API.g_update,
1158     p_adj_new_line_rec           IN   adj_new_line_rec_type,
1159     x_return_status              OUT NOCOPY   VARCHAR2,
1160     x_msg_count                  OUT NOCOPY   NUMBER,
1161     x_msg_data                   OUT NOCOPY   VARCHAR2
1162     )
1163  IS
1164 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Adj_New_Line';
1165 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1166 l_object_version_number     NUMBER;
1167 l_adj_new_line_rec  OZF_Adj_New_Line_PVT.adj_new_line_rec_type;
1168 
1169  BEGIN
1170       -- Standard Start of API savepoint
1171       SAVEPOINT VALIDATE_Adj_New_Line_;
1172 
1173       -- Standard call to check for call compatibility.
1174       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1175                                            p_api_version_number,
1176                                            l_api_name,
1177                                            G_PKG_NAME)
1178       THEN
1179           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1180       END IF;
1181 
1182       -- Initialize message list if p_init_msg_list is set to TRUE.
1183       IF FND_API.to_Boolean( p_init_msg_list )
1184       THEN
1185          FND_MSG_PUB.initialize;
1186       END IF;
1187       -- Debug Message
1188       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1189       -- Initialize API return status to SUCCESS
1190       x_return_status := FND_API.G_RET_STS_SUCCESS;
1191 
1195                  p_validation_mode   => p_validation_mode,
1192       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1193               Check_adj_new_line_Items(
1194                  p_adj_new_line_rec        => p_adj_new_line_rec,
1196                  x_return_status     => x_return_status
1197               );
1198 
1199               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1200                   RAISE FND_API.G_EXC_ERROR;
1201               ELSIF x_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       Complete_adj_new_line_Rec(
1207          p_adj_new_line_rec        => p_adj_new_line_rec,
1208          x_complete_rec        => l_adj_new_line_rec
1209       );
1210 
1211       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1212          Validate_adj_new_line_Rec(
1213            p_api_version_number     => 1.0,
1214            p_init_msg_list          => FND_API.G_FALSE,
1215            x_return_status          => x_return_status,
1216            x_msg_count              => x_msg_count,
1217            x_msg_data               => x_msg_data,
1218            p_adj_new_line_rec           =>    l_adj_new_line_rec);
1219 
1220               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1221                  RAISE FND_API.G_EXC_ERROR;
1222               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1223                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1224               END IF;
1225       END IF;
1226       -- Debug Message
1227       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1228 EXCEPTION
1229 
1230    WHEN OZF_UTILITY_PVT.resource_locked THEN
1231      x_return_status := FND_API.g_ret_sts_error;
1232  OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1233 
1234    WHEN FND_API.G_EXC_ERROR THEN
1235      ROLLBACK TO VALIDATE_Adj_New_Line_;
1236      x_return_status := FND_API.G_RET_STS_ERROR;
1237      -- Standard call to get message count and if count=1, get the message
1238      FND_MSG_PUB.Count_And_Get (
1239             p_encoded => FND_API.G_FALSE,
1240             p_count   => x_msg_count,
1241             p_data    => x_msg_data
1242      );
1243 
1244    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1245      ROLLBACK TO VALIDATE_Adj_New_Line_;
1246      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1247      -- Standard call to get message count and if count=1, get the message
1248      FND_MSG_PUB.Count_And_Get (
1249             p_encoded => FND_API.G_FALSE,
1250             p_count => x_msg_count,
1251             p_data  => x_msg_data
1252      );
1253 
1254    WHEN OTHERS THEN
1255      ROLLBACK TO VALIDATE_Adj_New_Line_;
1256      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1257      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1258      THEN
1259         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1260      END IF;
1261      -- Standard call to get message count and if count=1, get the message
1262      FND_MSG_PUB.Count_And_Get (
1263             p_encoded => FND_API.G_FALSE,
1264             p_count => x_msg_count,
1265             p_data  => x_msg_data
1266      );
1267 End Validate_Adj_New_Line;
1268 
1269 
1270 PROCEDURE Validate_adj_new_line_rec(
1271     p_api_version_number         IN   NUMBER,
1272     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1273     x_return_status              OUT NOCOPY   VARCHAR2,
1274     x_msg_count                  OUT NOCOPY   NUMBER,
1275     x_msg_data                   OUT NOCOPY   VARCHAR2,
1276     p_adj_new_line_rec               IN    adj_new_line_rec_type
1277     )
1278 IS
1279 BEGIN
1280       -- Initialize message list if p_init_msg_list is set to TRUE.
1281       IF FND_API.to_Boolean( p_init_msg_list )
1282       THEN
1283          FND_MSG_PUB.initialize;
1284       END IF;
1285 
1286       -- Initialize API return status to SUCCESS
1287       x_return_status := FND_API.G_RET_STS_SUCCESS;
1288 
1289       -- Hint: Validate data
1290       -- If data not valid
1291       -- THEN
1292       -- x_return_status := FND_API.G_RET_STS_ERROR;
1293 
1294       -- Debug Message
1295       OZF_UTILITY_PVT.debug_message('Private API: Validate_adj_new_line_rec');
1296       -- Standard call to get message count and if count is 1, get message info.
1297       FND_MSG_PUB.Count_And_Get
1298         (p_count          =>   x_msg_count,
1299          p_data           =>   x_msg_data
1300       );
1301 END Validate_adj_new_line_Rec;
1302 
1303 
1304 PROCEDURE populate_line_disc_rec
1305 (
1306     p_adj_new_disc_rec               IN   adj_new_disc_rec_type  := g_miss_adj_new_disc_rec,
1307     p_adj_new_line_rec               IN OUT NOCOPY   adj_new_line_rec_type
1308 )
1309 IS
1310 BEGIN
1311        p_adj_new_line_rec.offer_adj_new_line_id           := p_adj_new_disc_rec.offer_adj_new_line_id;
1312        p_adj_new_line_rec.offer_adjustment_id             := p_adj_new_disc_rec.offer_adjustment_id;
1313        p_adj_new_line_rec.tier_type                       := p_adj_new_disc_rec.tier_type;
1314        p_adj_new_line_rec.object_version_number           := p_adj_new_disc_rec.object_version_number;
1315        p_adj_new_line_rec.volume_type                     := p_adj_new_disc_rec.volume_type;
1316        p_adj_new_line_rec.start_date_active               := p_adj_new_disc_rec.start_date_active;
1317        p_adj_new_line_rec.end_date_active                 := p_adj_new_disc_rec.end_date_active;
1318 
1319        IF p_adj_new_disc_rec.tier_type <> 'PBH' THEN
1320                p_adj_new_line_rec.volume_from                     := p_adj_new_disc_rec.volume_from;
1321                p_adj_new_line_rec.volume_to                       := p_adj_new_disc_rec.volume_to;
1325                p_adj_new_line_rec.td_discount_type                := p_adj_new_disc_rec.td_discount_type;
1322                p_adj_new_line_rec.discount                        := p_adj_new_disc_rec.discount;
1323                p_adj_new_line_rec.discount_type                   := p_adj_new_disc_rec.discount_type;
1324                p_adj_new_line_rec.td_discount                     := p_adj_new_disc_rec.td_discount;
1326                p_adj_new_line_rec.quantity                        := p_adj_new_disc_rec.quantity;
1327                p_adj_new_line_rec.benefit_price_list_line_id      := p_adj_new_disc_rec.benefit_price_list_line_id;
1328                p_adj_new_line_rec.parent_adj_line_id              := p_adj_new_disc_rec.parent_adj_line_id;
1329        END IF;
1330        IF (p_adj_new_line_rec.volume_from IS NOT NULL AND p_adj_new_line_rec.volume_from <> FND_API.G_MISS_NUM) THEN
1331            IF ( p_adj_new_line_rec.volume_to IS NULL OR p_adj_new_line_rec.volume_to = FND_API.G_MISS_NUM ) THEN
1332                 p_adj_new_line_rec.volume_to := 999999999;
1333            END IF;
1334        END IF;
1335 END populate_line_disc_rec;
1336 
1337 PROCEDURE populate_prod_disc_rec
1338 (
1339     p_adj_new_disc_rec               IN   adj_new_disc_rec_type  := g_miss_adj_new_disc_rec,
1340     p_adj_new_prod_rec               IN OUT NOCOPY  OZF_Adj_New_Prod_PVT.adj_new_prod_rec_type
1341 )
1342 IS
1343 CURSOR c_modifierLevelCode(cp_offerAdjustmentId NUMBER) IS
1344 SELECT modifier_level_code, a.offer_type FROM ozf_offers a, ozf_offer_adjustments_b b
1345 WHERE a.qp_list_header_id = b.list_header_id
1346 AND b.offer_adjustment_id = cp_offerAdjustmentId;
1347 l_modifierLevelCode c_modifierLevelCode%ROWTYPE;
1348 BEGIN
1349     p_adj_new_prod_rec.offer_adj_new_product_id        := p_adj_new_disc_rec.offer_adj_new_product_id;
1350     p_adj_new_prod_rec.offer_adj_new_line_id           := p_adj_new_disc_rec.offer_adj_new_line_id;
1351     p_adj_new_prod_rec.offer_adjustment_id             := p_adj_new_disc_rec.offer_adjustment_id;
1352     p_adj_new_prod_rec.product_context                 := 'ITEM';
1353     p_adj_new_prod_rec.product_attribute               := p_adj_new_disc_rec.product_attribute;
1354     p_adj_new_prod_rec.product_attr_value              := p_adj_new_disc_rec.product_attr_value;
1355     p_adj_new_prod_rec.excluder_flag                   := 'N';
1356     p_adj_new_prod_rec.uom_code                        := p_adj_new_disc_rec.uom_code;
1357     p_adj_new_prod_rec.object_version_number           := p_adj_new_disc_rec.prod_obj_version_number;
1358     OPEN c_modifierLevelCode(p_adj_new_disc_rec.offer_adjustment_id);
1359         fetch c_modifierLevelCode INTO l_modifierLevelCode;
1360     CLOSE c_modifierLevelCode;
1361     p_adj_new_prod_rec.offer_type                       := l_modifierLevelCode.offer_type;
1362     ozf_utility_pvt.debug_message('OfferType populated is :'||p_adj_new_prod_rec.offer_type||' : '||l_modifierLevelCode.offer_type);
1363 END populate_prod_disc_rec ;
1364 
1365 PROCEDURE Create_Adj_New_Disc(
1366     p_api_version_number         IN   NUMBER,
1367     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1368     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
1369     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
1370 
1371     x_return_status              OUT NOCOPY   VARCHAR2,
1372     x_msg_count                  OUT NOCOPY   NUMBER,
1373     x_msg_data                   OUT NOCOPY   VARCHAR2,
1374 
1375     p_adj_new_disc_rec               IN   adj_new_disc_rec_type  := g_miss_adj_new_disc_rec,
1376     x_offer_adj_new_line_id                   OUT NOCOPY   NUMBER
1377     )
1378 IS
1379 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Adj_New_Disc';
1380 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1381 l_adj_new_line_rec adj_new_line_rec_type;
1382 l_adj_new_prod_rec OZF_Adj_New_Prod_PVT.adj_new_prod_rec_type;
1383 l_offer_adj_new_product_id NUMBER;
1384 BEGIN
1385       -- Standard Start of API savepoint
1386       SAVEPOINT Create_Adj_New_Disc_Pvt;
1387        -- Standard call to check for call compatibility.
1388       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1389                                            p_api_version_number,
1390                                            l_api_name,
1391                                            G_PKG_NAME)
1392       THEN
1393           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1394       END IF;
1395 
1396       -- Initialize message list if p_init_msg_list is set to TRUE.
1397       IF FND_API.to_Boolean( p_init_msg_list )
1398       THEN
1399          FND_MSG_PUB.initialize;
1400       END IF;
1401       -- Debug Message
1402       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1403       -- Initialize API return status to SUCCESS
1404       x_return_status := FND_API.G_RET_STS_SUCCESS;
1405 
1406     populate_line_disc_rec
1407     (
1408         p_adj_new_disc_rec               => p_adj_new_disc_rec
1409         , p_adj_new_line_rec               => l_adj_new_line_rec
1410     );
1411 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1412     RAISE FND_API.G_EXC_ERROR;
1413 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1414     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1415 END IF;
1416 
1417     Create_Adj_New_Line(
1418         p_api_version_number         => 1.0
1419         , p_init_msg_list              => FND_API.G_FALSE
1420         , p_commit                     => FND_API.G_FALSE
1421         , p_validation_level           => FND_API.G_VALID_LEVEL_FULL
1422 
1423         , x_return_status              => x_return_status
1424         , x_msg_count                  => x_msg_count
1425         , x_msg_data                   => x_msg_data
1426 
1427         , p_adj_new_line_rec           => l_adj_new_line_rec
1428         , x_offer_adj_new_line_id      => x_offer_adj_new_line_id
1429         );
1430     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1431         RAISE FND_API.G_EXC_ERROR;
1435 
1432     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1433         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1434     END IF;
1436     populate_prod_disc_rec
1437     (
1438         p_adj_new_disc_rec               => p_adj_new_disc_rec
1439         , p_adj_new_prod_rec             => l_adj_new_prod_rec
1440     );
1441     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1442         RAISE FND_API.G_EXC_ERROR;
1443     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1444         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1445     END IF;
1446 
1447     l_adj_new_prod_rec.offer_adj_new_line_id := x_offer_adj_new_line_id;
1448     OZF_Adj_New_Prod_PVT.Create_Adj_New_Prod(
1449         p_api_version_number         => 1.0
1450         , p_init_msg_list              => FND_API.G_FALSE
1451         , p_commit                     => FND_API.G_FALSE
1452         , p_validation_level           => FND_API.G_VALID_LEVEL_FULL
1453 
1454         , x_return_status              => x_return_status
1455         , x_msg_count                  => x_msg_count
1456         , x_msg_data                   => x_msg_data
1457 
1458         , p_adj_new_prod_rec           => l_adj_new_prod_rec
1459         , x_offer_adj_new_product_id   => l_offer_adj_new_product_id
1460          );
1461     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1462         RAISE FND_API.G_EXC_ERROR;
1463     ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1464         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1465     END IF;
1466 
1467       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1468 
1469       IF FND_API.to_Boolean( p_commit )
1470       THEN
1471          COMMIT WORK;
1472       END IF;
1473       -- Debug Message
1474 
1475 EXCEPTION
1476 
1477    WHEN OZF_UTILITY_PVT.resource_locked THEN
1478      x_return_status := FND_API.g_ret_sts_error;
1479  OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1480 
1481    WHEN FND_API.G_EXC_ERROR THEN
1482      ROLLBACK TO Create_Adj_New_Disc_Pvt;
1483      x_return_status := FND_API.G_RET_STS_ERROR;
1484      -- Standard call to get message count and if count=1, get the message
1485      FND_MSG_PUB.Count_And_Get (
1486             p_encoded => FND_API.G_FALSE,
1487             p_count   => x_msg_count,
1488             p_data    => x_msg_data
1489      );
1490 
1491    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1492      ROLLBACK TO Create_Adj_New_Disc_Pvt;
1493      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1494      -- Standard call to get message count and if count=1, get the message
1495      FND_MSG_PUB.Count_And_Get (
1496             p_encoded => FND_API.G_FALSE,
1497             p_count => x_msg_count,
1498             p_data  => x_msg_data
1499      );
1500 
1501    WHEN OTHERS THEN
1502      ROLLBACK TO Create_Adj_New_Disc_Pvt;
1503      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1504      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1505      THEN
1506         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1507      END IF;
1508      -- Standard call to get message count and if count=1, get the message
1509      FND_MSG_PUB.Count_And_Get (
1510             p_encoded => FND_API.G_FALSE,
1511             p_count => x_msg_count,
1512             p_data  => x_msg_data
1513      );
1514 
1515 END Create_Adj_New_Disc;
1516 
1517 
1518 PROCEDURE Update_Adj_New_Disc(
1519     p_api_version_number         IN   NUMBER,
1520     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1521     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
1522     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
1523 
1524     x_return_status              OUT NOCOPY   VARCHAR2,
1525     x_msg_count                  OUT NOCOPY   NUMBER,
1526     x_msg_data                   OUT NOCOPY   VARCHAR2,
1527 
1528     p_adj_new_disc_rec               IN    adj_new_disc_rec_type,
1529     x_object_version_number      OUT NOCOPY   NUMBER
1530     )
1531 IS
1532 l_api_name CONSTANT VARCHAR2(30) := 'Update_Adj_New_Disc';
1533 l_api_version_number CONSTANT NUMBER := 1.0;
1534 l_adj_new_line_rec adj_new_line_rec_type;
1535 l_adj_new_prod_rec OZF_Adj_New_Prod_PVT.adj_new_prod_rec_type;
1536 l_object_version_number NUMBER;
1537 BEGIN
1538       -- Standard Start of API savepoint
1539       SAVEPOINT Update_Adj_New_Disc_Pvt;
1540        -- Standard call to check for call compatibility.
1541       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1542                                            p_api_version_number,
1543                                            l_api_name,
1544                                            G_PKG_NAME)
1545       THEN
1546           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1547       END IF;
1548       -- Initialize message list if p_init_msg_list is set to TRUE.
1549       IF FND_API.to_Boolean( p_init_msg_list )
1550       THEN
1551          FND_MSG_PUB.initialize;
1552       END IF;
1553       -- Debug Message
1554       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1555       -- Initialize API return status to SUCCESS
1556       x_return_status := FND_API.G_RET_STS_SUCCESS;
1557 
1558     populate_line_disc_rec
1559     (
1560         p_adj_new_disc_rec               => p_adj_new_disc_rec
1561         , p_adj_new_line_rec               => l_adj_new_line_rec
1562     );
1563 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1564     RAISE FND_API.G_EXC_ERROR;
1565 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1566     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1567 END IF;
1568 
1569 Update_Adj_New_Line(
1570     p_api_version_number         => 1.0
1571     , p_init_msg_list              => FND_API.G_FALSE
1575     , x_return_status              => x_return_status
1572     , p_commit                     => FND_API.G_FALSE
1573     , p_validation_level           => FND_API.G_VALID_LEVEL_FULL
1574 
1576     , x_msg_count                  => x_msg_count
1577     , x_msg_data                   => x_msg_data
1578 
1579     , p_adj_new_line_rec           => l_adj_new_line_rec
1580     , x_object_version_number      => x_object_version_number
1581     );
1582 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1583     RAISE FND_API.G_EXC_ERROR;
1584 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1585     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1586 END IF;
1587     populate_prod_disc_rec
1588     (
1589         p_adj_new_disc_rec               => p_adj_new_disc_rec
1590         , p_adj_new_prod_rec               => l_adj_new_prod_rec
1591     );
1592 
1593 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1594     RAISE FND_API.G_EXC_ERROR;
1595 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1596     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1597 END IF;
1598 
1599 OZF_Adj_New_Prod_PVT.Update_Adj_New_Prod(
1600     p_api_version_number         => 1.0
1601     , p_init_msg_list              => FND_API.G_FALSE
1602     , p_commit                     => FND_API.G_FALSE
1603     , p_validation_level           => FND_API.G_VALID_LEVEL_FULL
1604 
1605     , x_return_status              => x_return_status
1606     , x_msg_count                  => x_msg_count
1607     , x_msg_data                   => x_msg_data
1608 
1609     , p_adj_new_prod_rec           => l_adj_new_prod_rec
1610     , x_object_version_number      => l_object_version_number
1611     );
1612 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1613     RAISE FND_API.G_EXC_ERROR;
1614 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1615     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1616 END IF;
1617       --
1618       -- End of API body.
1619       --
1620       -- Standard check for p_commit
1621       IF FND_API.to_Boolean( p_commit )
1622       THEN
1623          COMMIT WORK;
1624       END IF;
1625       -- Debug Message
1626       OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1627 EXCEPTION
1628 
1629    WHEN OZF_UTILITY_PVT.resource_locked THEN
1630      x_return_status := FND_API.g_ret_sts_error;
1631  OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1632 
1633    WHEN FND_API.G_EXC_ERROR THEN
1634      ROLLBACK TO Update_Adj_New_Disc_Pvt;
1635      x_return_status := FND_API.G_RET_STS_ERROR;
1636      -- Standard call to get message count and if count=1, get the message
1637      FND_MSG_PUB.Count_And_Get (
1638             p_encoded => FND_API.G_FALSE,
1639             p_count   => x_msg_count,
1640             p_data    => x_msg_data
1641      );
1642 
1643    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1644      ROLLBACK TO Update_Adj_New_Disc_Pvt;
1645      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1646      -- Standard call to get message count and if count=1, get the message
1647      FND_MSG_PUB.Count_And_Get (
1648             p_encoded => FND_API.G_FALSE,
1649             p_count => x_msg_count,
1650             p_data  => x_msg_data
1651      );
1652 
1653    WHEN OTHERS THEN
1654      ROLLBACK TO Update_Adj_New_Disc_Pvt;
1655      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1656      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1657      THEN
1658         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1659      END IF;
1660      -- Standard call to get message count and if count=1, get the message
1661      FND_MSG_PUB.Count_And_Get (
1662             p_encoded => FND_API.G_FALSE,
1663             p_count => x_msg_count,
1664             p_data  => x_msg_data
1665      );
1666 
1667 END Update_Adj_New_Disc;
1668 END OZF_Adj_New_Line_PVT;