[Home] [Help]
PACKAGE BODY: APPS.OZF_ADJ_NEW_PROD_PVT
Source
1 PACKAGE BODY OZF_Adj_New_Prod_PVT as
2 /* $Header: ozfvanpb.pls 120.1 2006/03/30 13:52:58 rssharma noship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 -- OZF_Adj_New_Prod_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_Prod_PVT';
16 G_FILE_NAME CONSTANT VARCHAR2(12) := 'ozfvanpb.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_Prod(
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_prod_rec IN adj_new_prod_rec_type := g_miss_adj_new_prod_rec,
33 x_offer_adj_new_product_id OUT NOCOPY NUMBER
34 )
35
36 IS
37 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Adj_New_Prod';
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 := NULL;
42 l_OFFER_ADJ_NEW_PRODUCT_ID NUMBER;
43 l_dummy NUMBER;
44
45 CURSOR c_id IS
46 SELECT OZF_OFFER_ADJ_NEW_PRODUCTS_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_PRODUCTS
52 WHERE OFFER_ADJ_NEW_PRODUCT_ID = l_id;
53
54 BEGIN
55 -- Standard Start of API savepoint
56 SAVEPOINT CREATE_Adj_New_Prod_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_prod_rec.OFFER_ADJ_NEW_PRODUCT_ID IS NULL OR p_adj_new_prod_rec.OFFER_ADJ_NEW_PRODUCT_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_PRODUCT_ID;
87 CLOSE c_id;
88
89 OPEN c_id_exists(l_OFFER_ADJ_NEW_PRODUCT_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_Prod');
110
111 -- Invoke validation procedures
112 Validate_adj_new_prod(
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_prod_rec => p_adj_new_prod_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_PRODUCTS_PKG.Insert_Row)
132 OZF_OFFER_ADJ_NEW_PRODUCTS_PKG.Insert_Row(
133 px_offer_adj_new_product_id => l_offer_adj_new_product_id,
134 p_offer_adj_new_line_id => p_adj_new_prod_rec.offer_adj_new_line_id,
135 p_offer_adjustment_id => p_adj_new_prod_rec.offer_adjustment_id,
136 p_product_context => p_adj_new_prod_rec.product_context,
137 p_product_attribute => p_adj_new_prod_rec.product_attribute,
138 p_product_attr_value => p_adj_new_prod_rec.product_attr_value,
139 p_excluder_flag => p_adj_new_prod_rec.excluder_flag,
140 p_uom_code => p_adj_new_prod_rec.uom_code,
141 p_creation_date => SYSDATE,
142 p_created_by => G_USER_ID,
143 p_last_update_date => SYSDATE,
144 p_last_updated_by => G_USER_ID,
145 p_last_update_login => G_LOGIN_ID,
146 px_object_version_number => l_object_version_number);
147 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
148 RAISE FND_API.G_EXC_ERROR;
149 END IF;
150 --
151 -- End of API body
152 --
153
154 x_offer_adj_new_product_id:= l_offer_adj_new_product_id;
155 -- Standard check for p_commit
156 IF FND_API.to_Boolean( p_commit )
157 THEN
158 COMMIT WORK;
159 END IF;
160
161
162 -- Debug Message
163 OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
164
165 -- Standard call to get message count and if count is 1, get message info.
166 FND_MSG_PUB.Count_And_Get
167 (p_count => x_msg_count,
168 p_data => x_msg_data
169 );
170 EXCEPTION
171
172 WHEN OZF_UTILITY_PVT.resource_locked THEN
173 x_return_status := FND_API.g_ret_sts_error;
174 OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
175
176 WHEN FND_API.G_EXC_ERROR THEN
177 ROLLBACK TO CREATE_Adj_New_Prod_PVT;
178 x_return_status := FND_API.G_RET_STS_ERROR;
179 -- Standard call to get message count and if count=1, get the message
180 FND_MSG_PUB.Count_And_Get (
181 p_encoded => FND_API.G_FALSE,
182 p_count => x_msg_count,
183 p_data => x_msg_data
184 );
185
186 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
187 ROLLBACK TO CREATE_Adj_New_Prod_PVT;
188 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
189 -- Standard call to get message count and if count=1, get the message
190 FND_MSG_PUB.Count_And_Get (
191 p_encoded => FND_API.G_FALSE,
192 p_count => x_msg_count,
193 p_data => x_msg_data
194 );
195
196 WHEN OTHERS THEN
197 ROLLBACK TO CREATE_Adj_New_Prod_PVT;
198 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
199 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
200 THEN
201 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
202 END IF;
203 -- Standard call to get message count and if count=1, get the message
204 FND_MSG_PUB.Count_And_Get (
205 p_encoded => FND_API.G_FALSE,
206 p_count => x_msg_count,
207 p_data => x_msg_data
208 );
209 End Create_Adj_New_Prod;
210
211
212 PROCEDURE Update_Adj_New_Prod(
213 p_api_version_number IN NUMBER,
214 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
215 p_commit IN VARCHAR2 := FND_API.G_FALSE,
216 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
217
218 x_return_status OUT NOCOPY VARCHAR2,
219 x_msg_count OUT NOCOPY NUMBER,
220 x_msg_data OUT NOCOPY VARCHAR2,
221
222 p_adj_new_prod_rec IN adj_new_prod_rec_type,
223 x_object_version_number OUT NOCOPY NUMBER
224 )
225
226 IS
227 CURSOR c_get_adj_new_prod(cp_offerAdjNewProductId NUMBER, cp_objectVersionNumber NUMBER) IS
228 SELECT *
229 FROM OZF_OFFER_ADJ_NEW_PRODUCTS
230 WHERE offer_adj_new_product_id = cp_offerAdjNewProductId
231 AND object_version_number = cp_objectVersionNumber;
232 -- Hint: Developer need to provide Where clause
233 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Adj_New_Prod';
234 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
235 -- Local Variables
236 l_object_version_number NUMBER;
237 l_OFFER_ADJ_NEW_PRODUCT_ID NUMBER;
238 l_ref_adj_new_prod_rec c_get_Adj_New_Prod%ROWTYPE ;
239 l_tar_adj_new_prod_rec OZF_Adj_New_Prod_PVT.adj_new_prod_rec_type := P_adj_new_prod_rec;
240 l_rowid ROWID;
241
242 BEGIN
243 -- Standard Start of API savepoint
244 SAVEPOINT UPDATE_Adj_New_Prod_PVT;
245
246 -- Standard call to check for call compatibility.
247 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
248 p_api_version_number,
249 l_api_name,
250 G_PKG_NAME)
251 THEN
255 -- Initialize message list if p_init_msg_list is set to TRUE.
252 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
253 END IF;
254
256 IF FND_API.to_Boolean( p_init_msg_list )
257 THEN
258 FND_MSG_PUB.initialize;
259 END IF;
260
261 -- Debug Message
262 OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
263 -- Initialize API return status to SUCCESS
264 x_return_status := FND_API.G_RET_STS_SUCCESS;
265 -- Debug Message
266 OZF_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
267 OPEN c_get_Adj_New_Prod( l_tar_adj_new_prod_rec.offer_adj_new_product_id , l_tar_adj_new_prod_rec.object_version_number);
268 FETCH c_get_Adj_New_Prod INTO l_ref_adj_new_prod_rec ;
269 If ( c_get_Adj_New_Prod%NOTFOUND) THEN
270 OZF_UTILITY_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
271 p_token_name => 'INFO',
272 p_token_value => 'Adj_New_Prod') ;
273 RAISE FND_API.G_EXC_ERROR;
274 END IF;
275 -- Debug Message
276 OZF_UTILITY_PVT.debug_message('Private API: - Close Cursor');
277 CLOSE c_get_Adj_New_Prod;
278
279 If (l_tar_adj_new_prod_rec.object_version_number is NULL or
280 l_tar_adj_new_prod_rec.object_version_number = FND_API.G_MISS_NUM ) Then
281 OZF_UTILITY_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
282 p_token_name => 'COLUMN',
283 p_token_value => 'Last_Update_Date') ;
284 raise FND_API.G_EXC_ERROR;
285 End if;
286 -- Check Whether record has been changed by someone else
287 If (l_tar_adj_new_prod_rec.object_version_number <> l_ref_adj_new_prod_rec.object_version_number) Then
288 OZF_UTILITY_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
289 p_token_name => 'INFO',
290 p_token_value => 'Adj_New_Prod') ;
291 raise FND_API.G_EXC_ERROR;
292 End if;
293 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
294 THEN
295 -- Debug message
296 OZF_UTILITY_PVT.debug_message('Private API: Validate_Adj_New_Prod');
297 -- Invoke validation procedures
298 Validate_adj_new_prod(
299 p_api_version_number => 1.0,
300 p_init_msg_list => FND_API.G_FALSE,
301 p_validation_level => p_validation_level,
302 p_validation_mode => JTF_PLSQL_API.g_update,
303 p_adj_new_prod_rec => p_adj_new_prod_rec,
304 x_return_status => x_return_status,
305 x_msg_count => x_msg_count,
306 x_msg_data => x_msg_data);
307 END IF;
308
309 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
310 RAISE FND_API.G_EXC_ERROR;
311 END IF;
312
313 -- Invoke table handler(OZF_OFFER_ADJ_NEW_PRODUCTS_PKG.Update_Row)
314 OZF_OFFER_ADJ_NEW_PRODUCTS_PKG.Update_Row(
315 p_offer_adj_new_product_id => p_adj_new_prod_rec.offer_adj_new_product_id,
316 p_offer_adj_new_line_id => p_adj_new_prod_rec.offer_adj_new_line_id,
317 p_offer_adjustment_id => p_adj_new_prod_rec.offer_adjustment_id,
318 p_product_context => p_adj_new_prod_rec.product_context,
319 p_product_attribute => p_adj_new_prod_rec.product_attribute,
320 p_product_attr_value => p_adj_new_prod_rec.product_attr_value,
321 p_excluder_flag => p_adj_new_prod_rec.excluder_flag,
322 p_uom_code => p_adj_new_prod_rec.uom_code,
323 p_creation_date => SYSDATE,
324 p_created_by => G_USER_ID,
325 p_last_update_date => SYSDATE,
326 p_last_updated_by => G_USER_ID,
327 p_last_update_login => G_LOGIN_ID,
328 p_object_version_number => p_adj_new_prod_rec.object_version_number);
329 --
330 -- End of API body.
331 --
332 -- Standard check for p_commit
333 IF FND_API.to_Boolean( p_commit )
334 THEN
335 COMMIT WORK;
336 END IF;
337 -- Debug Message
338 OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
339
340 -- Standard call to get message count and if count is 1, get message info.
341 FND_MSG_PUB.Count_And_Get
342 (p_count => x_msg_count,
343 p_data => x_msg_data
344 );
345 EXCEPTION
346
347 WHEN OZF_UTILITY_PVT.resource_locked THEN
348 x_return_status := FND_API.g_ret_sts_error;
349 OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
350
351 WHEN FND_API.G_EXC_ERROR THEN
352 ROLLBACK TO UPDATE_Adj_New_Prod_PVT;
353 x_return_status := FND_API.G_RET_STS_ERROR;
354 -- Standard call to get message count and if count=1, get the message
355 FND_MSG_PUB.Count_And_Get (
356 p_encoded => FND_API.G_FALSE,
357 p_count => x_msg_count,
358 p_data => x_msg_data
359 );
360
361 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
362 ROLLBACK TO UPDATE_Adj_New_Prod_PVT;
363 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
364 -- Standard call to get message count and if count=1, get the message
365 FND_MSG_PUB.Count_And_Get (
366 p_encoded => FND_API.G_FALSE,
367 p_count => x_msg_count,
368 p_data => x_msg_data
369 );
370
371 WHEN OTHERS THEN
372 ROLLBACK TO UPDATE_Adj_New_Prod_PVT;
373 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
374 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
375 THEN
376 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
377 END IF;
378 -- Standard call to get message count and if count=1, get the message
379 FND_MSG_PUB.Count_And_Get (
380 p_encoded => FND_API.G_FALSE,
381 p_count => x_msg_count,
382 p_data => x_msg_data
383 );
384 End Update_Adj_New_Prod;
385
386
387 PROCEDURE Delete_Adj_New_Prod(
388 p_api_version_number IN NUMBER,
389 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
390 p_commit IN VARCHAR2 := FND_API.G_FALSE,
391 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
392 x_return_status OUT NOCOPY VARCHAR2,
393 x_msg_count OUT NOCOPY NUMBER,
394 x_msg_data OUT NOCOPY VARCHAR2,
395 p_offer_adj_new_product_id IN NUMBER,
396 p_object_version_number IN NUMBER
397 )
398
399 IS
400 L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_Adj_New_Prod';
401 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
402 l_object_version_number NUMBER;
403
404 BEGIN
405 -- Standard Start of API savepoint
406 SAVEPOINT DELETE_Adj_New_Prod_PVT;
407
408 -- Standard call to check for call compatibility.
409 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
410 p_api_version_number,
411 l_api_name,
412 G_PKG_NAME)
413 THEN
414 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
415 END IF;
416
417 -- Initialize message list if p_init_msg_list is set to TRUE.
418 IF FND_API.to_Boolean( p_init_msg_list )
419 THEN
420 FND_MSG_PUB.initialize;
421 END IF;
422 -- Debug Message
423 OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
424 -- Initialize API return status to SUCCESS
425 x_return_status := FND_API.G_RET_STS_SUCCESS;
426 --
427 -- Api body
428 --
429 -- Debug Message
430 OZF_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
431 -- Invoke table handler(OZF_OFFER_ADJ_NEW_PRODUCTS_PKG.Delete_Row)
432 OZF_OFFER_ADJ_NEW_PRODUCTS_PKG.Delete_Row(
433 p_OFFER_ADJ_NEW_PRODUCT_ID => p_OFFER_ADJ_NEW_PRODUCT_ID);
434 --
435 -- End of API body
436 --
437 -- Standard check for p_commit
438 IF FND_API.to_Boolean( p_commit )
439 THEN
440 COMMIT WORK;
441 END IF;
442 -- Debug Message
443 OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
444 -- Standard call to get message count and if count is 1, get message info.
445 FND_MSG_PUB.Count_And_Get
446 (p_count => x_msg_count,
447 p_data => x_msg_data
448 );
449 EXCEPTION
450
451 WHEN OZF_UTILITY_PVT.resource_locked THEN
452 x_return_status := FND_API.g_ret_sts_error;
453 OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
454
455 WHEN FND_API.G_EXC_ERROR THEN
456 ROLLBACK TO DELETE_Adj_New_Prod_PVT;
457 x_return_status := FND_API.G_RET_STS_ERROR;
458 -- Standard call to get message count and if count=1, get the message
459 FND_MSG_PUB.Count_And_Get (
460 p_encoded => FND_API.G_FALSE,
461 p_count => x_msg_count,
462 p_data => x_msg_data
463 );
464
465 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
466 ROLLBACK TO DELETE_Adj_New_Prod_PVT;
467 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
468 -- Standard call to get message count and if count=1, get the message
469 FND_MSG_PUB.Count_And_Get (
470 p_encoded => FND_API.G_FALSE,
471 p_count => x_msg_count,
472 p_data => x_msg_data
473 );
474
475 WHEN OTHERS THEN
476 ROLLBACK TO DELETE_Adj_New_Prod_PVT;
477 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
478 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
479 THEN
480 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
481 END IF;
482 -- Standard call to get message count and if count=1, get the message
483 FND_MSG_PUB.Count_And_Get (
484 p_encoded => FND_API.G_FALSE,
485 p_count => x_msg_count,
486 p_data => x_msg_data
487 );
488 End Delete_Adj_New_Prod;
489 -- Hint: Primary key needs to be returned.
490 PROCEDURE Lock_Adj_New_Prod(
491 p_api_version_number IN NUMBER,
492 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
493
494 x_return_status OUT NOCOPY VARCHAR2,
495 x_msg_count OUT NOCOPY NUMBER,
496 x_msg_data OUT NOCOPY VARCHAR2,
497
498 p_offer_adj_new_product_id IN NUMBER,
499 p_object_version IN NUMBER
500 )
501
502 IS
503 L_API_NAME CONSTANT VARCHAR2(30) := 'Lock_Adj_New_Prod';
504 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
505 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
506 l_OFFER_ADJ_NEW_PRODUCT_ID NUMBER;
507
508 CURSOR c_Adj_New_Prod IS
509 SELECT OFFER_ADJ_NEW_PRODUCT_ID
510 FROM OZF_OFFER_ADJ_NEW_PRODUCTS
511 WHERE OFFER_ADJ_NEW_PRODUCT_ID = p_OFFER_ADJ_NEW_PRODUCT_ID
512 AND object_version_number = p_object_version
513 FOR UPDATE NOWAIT;
514
515 BEGIN
516
517 -- Debug Message
518 OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
519
520 -- Initialize message list if p_init_msg_list is set to TRUE.
521 IF FND_API.to_Boolean( p_init_msg_list )
522 THEN
523 FND_MSG_PUB.initialize;
524 END IF;
525
526 -- Standard call to check for call compatibility.
527 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
528 p_api_version_number,
529 l_api_name,
530 G_PKG_NAME)
531 THEN
532 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
533 END IF;
534
535
536 -- Initialize API return status to SUCCESS
537 x_return_status := FND_API.G_RET_STS_SUCCESS;
538 ------------------------ lock -------------------------
539
540 OZF_UTILITY_PVT.debug_message(l_full_name||': start');
541 OPEN c_Adj_New_Prod;
542
543 FETCH c_Adj_New_Prod INTO l_OFFER_ADJ_NEW_PRODUCT_ID;
544
545 IF (c_Adj_New_Prod%NOTFOUND) THEN
546 CLOSE c_Adj_New_Prod;
547 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
548 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
549 FND_MSG_PUB.add;
550 END IF;
551 RAISE FND_API.g_exc_error;
552 END IF;
553
554 CLOSE c_Adj_New_Prod;
555 -------------------- finish --------------------------
556 FND_MSG_PUB.count_and_get(
557 p_encoded => FND_API.g_false,
558 p_count => x_msg_count,
559 p_data => x_msg_data);
560 OZF_UTILITY_PVT.debug_message(l_full_name ||': end');
561 EXCEPTION
562
563 WHEN OZF_UTILITY_PVT.resource_locked THEN
564 x_return_status := FND_API.g_ret_sts_error;
565 OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
566
567 WHEN FND_API.G_EXC_ERROR THEN
568 ROLLBACK TO LOCK_Adj_New_Prod_PVT;
569 x_return_status := FND_API.G_RET_STS_ERROR;
570 -- Standard call to get message count and if count=1, get the message
571 FND_MSG_PUB.Count_And_Get (
572 p_encoded => FND_API.G_FALSE,
573 p_count => x_msg_count,
574 p_data => x_msg_data
575 );
576
577 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
578 ROLLBACK TO LOCK_Adj_New_Prod_PVT;
579 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
580 -- Standard call to get message count and if count=1, get the message
581 FND_MSG_PUB.Count_And_Get (
582 p_encoded => FND_API.G_FALSE,
583 p_count => x_msg_count,
584 p_data => x_msg_data
585 );
586
587 WHEN OTHERS THEN
588 ROLLBACK TO LOCK_Adj_New_Prod_PVT;
589 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
590 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
591 THEN
592 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
593 END IF;
594 -- Standard call to get message count and if count=1, get the message
595 FND_MSG_PUB.Count_And_Get (
596 p_encoded => FND_API.G_FALSE,
597 p_count => x_msg_count,
598 p_data => x_msg_data
599 );
600 End Lock_Adj_New_Prod;
601
602
603 PROCEDURE check_adj_new_prod_uk_items(
604 p_adj_new_prod_rec IN adj_new_prod_rec_type,
605 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
606 x_return_status OUT NOCOPY VARCHAR2)
607 IS
608 l_valid_flag VARCHAR2(1);
609
610 BEGIN
611 x_return_status := FND_API.g_ret_sts_success;
612 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
613 l_valid_flag := OZF_UTILITY_PVT.check_uniqueness(
614 'OZF_OFFER_ADJ_NEW_PRODUCTS',
615 'OFFER_ADJ_NEW_PRODUCT_ID = ''' || p_adj_new_prod_rec.OFFER_ADJ_NEW_PRODUCT_ID ||''''
616 );
617 ELSE
618 l_valid_flag := OZF_UTILITY_PVT.check_uniqueness(
619 'OZF_OFFER_ADJ_NEW_PRODUCTS',
620 'OFFER_ADJ_NEW_PRODUCT_ID = ''' || p_adj_new_prod_rec.OFFER_ADJ_NEW_PRODUCT_ID ||
621 ''' AND OFFER_ADJ_NEW_PRODUCT_ID <> ' || p_adj_new_prod_rec.OFFER_ADJ_NEW_PRODUCT_ID
622 );
623 END IF;
624
625 IF l_valid_flag = FND_API.g_false THEN
626 OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_OFFER_ADJ_NEW_PRODUCT_ID_DUPLICATE');
627 x_return_status := FND_API.g_ret_sts_error;
628 RETURN;
629 END IF;
630
631 END check_adj_new_prod_uk_items;
632
633 PROCEDURE check_adj_new_prod_req_items(
634 p_adj_new_prod_rec IN adj_new_prod_rec_type,
635 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
636 x_return_status OUT NOCOPY VARCHAR2
637 )
638 IS
639 BEGIN
640 x_return_status := FND_API.g_ret_sts_success;
641 ozf_utility_pvt.debug_message('Validation Mode is:'||p_validation_mode||' : '||JTF_PLSQL_API.g_create);
642 ozf_utility_pvt.debug_message('Product Ctx is :'||p_adj_new_prod_rec.product_context);
643 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
644 IF p_adj_new_prod_rec.offer_adj_new_line_id = FND_API.g_miss_num OR p_adj_new_prod_rec.offer_adj_new_line_id IS NULL THEN
645 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'offer_adj_new_line_id' );
646 x_return_status := FND_API.g_ret_sts_error;
647 RETURN;
648 END IF;
649 IF p_adj_new_prod_rec.excluder_flag = FND_API.g_miss_char OR p_adj_new_prod_rec.excluder_flag IS NULL THEN
650 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'excluder_flag' );
651 x_return_status := FND_API.g_ret_sts_error;
652 RETURN;
653 END IF;
654 IF p_adj_new_prod_rec.product_context = FND_API.g_miss_char OR p_adj_new_prod_rec.product_context IS NULL THEN
655 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'product_context' );
656 x_return_status := FND_API.g_ret_sts_error;
657 RETURN;
658 END IF;
659 IF p_adj_new_prod_rec.product_attribute = FND_API.g_miss_char OR p_adj_new_prod_rec.product_attribute IS NULL THEN
660 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'product_attribute' );
661 x_return_status := FND_API.g_ret_sts_error;
662 RETURN;
663 END IF;
664 IF p_adj_new_prod_rec.product_attr_value = FND_API.g_miss_char OR p_adj_new_prod_rec.product_attr_value IS NULL THEN
665 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'product_attr_value' );
666 x_return_status := FND_API.g_ret_sts_error;
667 RETURN;
668 END IF;
669
670 -- IF p_adj_new_prod_rec.offer_type = 'VOLUME_OFFER' THEN
671 IF p_adj_new_prod_rec.offer_adjustment_id IS NULL OR p_adj_new_prod_rec.offer_adjustment_id = FND_API.G_MISS_NUM THEN
672 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'offer_adjustment_id' );
673 x_return_status := FND_API.g_ret_sts_error;
674 RETURN;
675 END IF;
676 -- END IF;
677
678 ELSE
679 IF p_adj_new_prod_rec.offer_adj_new_product_id = FND_API.G_MISS_NUM THEN
680 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'offer_adj_new_product_id' );
681 x_return_status := FND_API.g_ret_sts_error;
682 RETURN;
683 END IF;
684 IF p_adj_new_prod_rec.offer_adj_new_line_id = FND_API.G_MISS_NUM THEN
685 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'offer_adj_new_line_id' );
686 x_return_status := FND_API.g_ret_sts_error;
687 RETURN;
688 END IF;
689 IF p_adj_new_prod_rec.excluder_flag = FND_API.G_MISS_CHAR THEN
690 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'excluder_flag' );
691 x_return_status := FND_API.g_ret_sts_error;
692 RETURN;
693 END IF;
694 IF p_adj_new_prod_rec.object_version_number = FND_API.G_MISS_NUM THEN
695 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'object_version_number' );
696 x_return_status := FND_API.g_ret_sts_error;
697 RETURN;
698 END IF;
699
700 IF p_adj_new_prod_rec.product_context = FND_API.g_miss_char THEN
701 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'product_context' );
702 x_return_status := FND_API.g_ret_sts_error;
703 RETURN;
704 END IF;
705 IF p_adj_new_prod_rec.product_attribute = FND_API.g_miss_char THEN
706 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'product_attribute' );
707 x_return_status := FND_API.g_ret_sts_error;
708 RETURN;
709 END IF;
710 IF p_adj_new_prod_rec.product_attr_value = FND_API.g_miss_char THEN
711 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'product_attr_value' );
712 x_return_status := FND_API.g_ret_sts_error;
713 RETURN;
714 END IF;
715
716 -- IF p_adj_new_prod_rec.offer_type = 'VOLUME_OFFER' THEN
717 IF p_adj_new_prod_rec.offer_adjustment_id = FND_API.G_MISS_NUM THEN
718 OZF_Utility_PVT.Error_Message('OZF_API_MISSING_FIELD', 'MISS_FIELD', 'offer_adjustment_id' );
719 x_return_status := FND_API.g_ret_sts_error;
720 RETURN;
721 END IF;
722 -- END IF;
723 END IF;
724 END check_adj_new_prod_req_items;
725
726 PROCEDURE check_adj_new_prod_FK_items(
727 p_adj_new_prod_rec IN adj_new_prod_rec_type,
728 x_return_status OUT NOCOPY VARCHAR2
729 )
730 IS
731 BEGIN
732 x_return_status := FND_API.g_ret_sts_success;
733 ozf_utility_pvt.debug_message('Offer Type is :'||p_adj_new_prod_rec.offer_type);
734 IF p_adj_new_prod_rec.offer_type <> 'VOLUME_OFFER' THEN
735 IF ozf_utility_pvt.check_fk_exists('OZF_OFFER_ADJ_NEW_LINES','OFFER_ADJ_NEW_LINE_ID',to_char(p_adj_new_prod_rec.OFFER_ADJ_NEW_LINE_ID)) = FND_API.g_false THEN
736 OZF_Utility_PVT.Error_Message('OZF_INVALID_ADJ_LINE_ID' );
737 x_return_status := FND_API.g_ret_sts_error;
738 return;
739 END IF;
740 END IF;
741 IF p_adj_new_prod_rec.offer_adjustment_id IS NOT NULL AND p_adj_new_prod_rec.offer_adjustment_id <> FND_API.G_MISS_NUM THEN
742 IF ozf_utility_pvt.check_fk_exists('OZF_OFFER_ADJUSTMENTS_B','OFFER_ADJUSTMENT_ID',to_char(p_adj_new_prod_rec.offer_adjustment_id)) = FND_API.g_false THEN
743 OZF_Utility_PVT.Error_Message('OZF_INVALID_OFFER_ADJ_ID' );
744 x_return_status := FND_API.g_ret_sts_error;
745 return;
746 END IF;
747 END IF;
748 -- Enter custom code here
749 END check_adj_new_prod_FK_items;
750
751 PROCEDURE check_adj_prod_Lkup_items(
752 p_adj_new_prod_rec IN adj_new_prod_rec_type,
753 x_return_status OUT NOCOPY VARCHAR2
754 )
755 IS
756 CURSOR C_UOM_CODE_EXISTS (p_uom_code VARCHAR2,p_organization_id NUMBER,p_inventory_item_id NUMBER)
757 IS
758 SELECT 1 FROM DUAL WHERE EXISTS (SELECT 1 FROM mtl_item_uoms_view
759 WHERE ( organization_id = p_organization_id
760 OR p_organization_id is NULL )
761 AND uom_code = p_uom_code
762 AND inventory_item_id = p_inventory_item_id);
763 l_organization_id NUMBER := -999;
764 l_UOM_CODE_EXISTS C_UOM_CODE_EXISTS%ROWTYPE;
765
766 CURSOR c_general_uom(p_uom_code VARCHAR2)
767 IS
768 SELECT 1 FROM DUAL WHERE EXISTS (SELECT 1
769 FROM mtl_units_of_measure_vl
770 WHERE uom_code = p_uom_code);
771 l_general_uom c_general_uom%rowtype;
772
773 l_api_name CONSTANT VARCHAR2(30) := 'check_vo_product_Lkup_Items';
774 CURSOR c_listHeaderId(cp_offerAdjNewLineId NUMBER)
775 IS
776 SELECT list_header_id
777 FROM ozf_offer_adjustments_b a, ozf_offer_adj_new_lines b
778 WHERE a.offer_adjustment_id = b.offer_adjustment_id
779 AND b.offer_adj_new_line_id = cp_offerAdjNewLineId;
780
781 l_listHeaderId NUMBER;
782 BEGIN
783 x_return_status := FND_API.G_RET_STS_SUCCESS;
784 -- Enter custom code here
785 --=====================================================================
786 -- uom validation begin
787 --=====================================================================
788
789 l_organization_id := FND_PROFILE.Value('QP_ORGANIZATION_ID');--QP_UTIL.Get_Item_Validation_Org;
790 IF p_adj_new_prod_rec.uom_code IS NOT NULL AND p_adj_new_prod_rec.uom_code <> FND_API.G_MISS_CHAR THEN
791 IF(p_adj_new_prod_rec.product_attribute = 'PRICING_ATTRIBUTE1') THEN
792
793 OPEN c_uom_code_exists(p_adj_new_prod_rec.uom_code,l_organization_id,p_adj_new_prod_rec.product_attr_value);
794 FETCH c_uom_code_exists INTO l_uom_code_exists;
795 IF ( c_uom_code_exists%NOTFOUND) THEN
796 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
797 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PROD_UOM');
798 FND_MSG_PUB.add;
799 x_return_status := FND_API.G_RET_STS_ERROR;
800 END IF;
801 END IF;
802 CLOSE c_uom_code_exists;
803 ELSIF(p_adj_new_prod_rec.product_attribute = 'PRICING_ATTRIBUTE2') THEN
804 open c_listHeaderId(cp_offerAdjNewLineId => p_adj_new_prod_rec.offer_adj_new_line_id);
805 FETCH c_listHeaderId INTO l_listHeaderId;
806 CLOSE c_listHeaderId;
807 IF QP_Validate.Product_Uom ( p_product_uom_code => p_adj_new_prod_rec.uom_code
808 ,p_category_id => to_number(p_adj_new_prod_rec.product_attr_value)
809 ,p_list_header_id => l_listHeaderId) THEN
810
811 /* IF QP_CATEGORY_MAPPING_RULE.Validate_UOM(
812 l_organization_id,
813 to_number(p_adj_new_prod_rec.product_attr_value),
814 p_adj_new_prod_rec.uom_code) = 'N'
815 THEN
816 */
817 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
818 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PROD_UOM');
819 FND_MSG_PUB.add;
820 x_return_status := FND_API.G_RET_STS_ERROR;
821 END IF;
822 END IF;
823 ELSE
824 OPEN c_general_uom(p_adj_new_prod_rec.uom_code);
825 FETCH c_general_uom INTO l_general_uom;
826 IF ( c_general_uom%NOTFOUND) THEN
827 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
828 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PROD_UOM');
829 FND_MSG_PUB.add;
830 x_return_status := FND_API.G_RET_STS_ERROR;
831 END IF;
832 END IF;
833 CLOSE c_general_uom;
834 END IF;
835 END IF;
836 END check_adj_prod_Lkup_items;
837
838 PROCEDURE Check_adj_new_prod_inter_attr(
839 p_adj_new_prod_rec IN adj_new_prod_rec_type
840 , p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create
841 , x_return_status OUT NOCOPY VARCHAR2
842 )
843 IS
844
845 CURSOR c_volumeType(cp_offerAdjLineId NUMBER) IS
846 SELECT volume_type , parent_adj_line_id FROM ozf_offer_adj_new_lines
847 WHERE offer_adj_new_line_id = cp_offerAdjLineId;
848 l_volumeType c_volumeType%ROWTYPE;
849 CURSOR c_listLineType(cp_offerAdjLineId NUMBER) IS
850 SELECT tier_type
851 FROM ozf_offer_adj_new_lines
852 WHERE offer_adj_new_line_id = cp_offerAdjLineId;
853 l_listLineType VARCHAR2(30);
854 BEGIN
855 x_return_status := FND_API.G_RET_STS_SUCCESS;
856
857 OPEN c_volumeType(p_adj_new_prod_rec.offer_adj_new_line_id);
858 FETCH c_volumeType INTO l_volumeType;
859 CLOSE c_volumeType;
860 IF l_volumeType.parent_adj_line_id IS NULL AND l_volumeType.volume_type = 'PRICING_ATTRIBUTE10' THEN
861 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
862 IF p_adj_new_prod_rec.uom_code = FND_API.G_MISS_CHAR OR p_adj_new_prod_rec.uom_code IS NULL
863 THEN
864 OZF_Utility_PVT.Error_Message('OZF_UOM_QTY_REQD' );
865 x_return_status := FND_API.g_ret_sts_error;
866 return;
867 END IF;
868 ELSIF p_validation_mode = JTF_PLSQL_API.g_update THEN
869 IF p_adj_new_prod_rec.uom_code = FND_API.G_MISS_CHAR THEN
870 OZF_Utility_PVT.Error_Message('OZF_UOM_QTY_REQD' );
871 x_return_status := FND_API.g_ret_sts_error;
872 return;
873 END IF;
874 END IF;
875 END IF;
876
877 OPEN c_listLineType(p_adj_new_prod_rec.offer_adj_new_line_id);
878 FETCH c_listLineType INTO l_listLineType;
879 IF c_listLineType%NOTFOUND THEN
880 l_listLineType := null;
881 END IF;
882 CLOSE c_listLineType;
883
884 IF l_listLineType = 'PBH' THEN
885 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
886 IF p_adj_new_prod_rec.uom_code = FND_API.G_MISS_CHAR OR p_adj_new_prod_rec.uom_code IS NULL THEN
887 OZF_Utility_PVT.Error_Message('OZF_PBH_UOM_REQD' );
888 x_return_status := FND_API.g_ret_sts_error;
889 return;
890 END IF;
891 ELSIF p_validation_mode = JTF_PLSQL_API.g_update THEN
892 IF p_adj_new_prod_rec.uom_code = FND_API.G_MISS_CHAR THEN
893 OZF_Utility_PVT.Error_Message('OZF_PBH_UOM_REQD' );
894 x_return_status := FND_API.g_ret_sts_error;
895 return;
896 END IF;
897 END IF;
898 END IF;
899 END Check_adj_new_prod_inter_attr;
900
901
902 PROCEDURE Check_adj_new_prod_attr(
903 p_adj_new_prod_rec IN adj_new_prod_rec_type
904 , x_return_status OUT NOCOPY VARCHAR2
905 )
906 IS
907 l_api_name CONSTANT VARCHAR2(30) := 'check_vo_product_attr';
908 l_context_flag VARCHAR2(1);
909 l_attribute_flag VARCHAR2(1);
910 l_value_flag VARCHAR2(1);
911 l_datatype VARCHAR2(1);
912 l_precedence NUMBER;
913 l_error_code NUMBER := 0;
914 BEGIN
915 x_return_status := FND_API.G_RET_STS_SUCCESS;
916 QP_UTIL.validate_qp_flexfield(flexfield_name =>'QP_ATTR_DEFNS_PRICING'
917 ,context =>p_adj_new_prod_rec.product_context
918 ,attribute =>p_adj_new_prod_rec.product_attribute
919 ,value =>p_adj_new_prod_rec.product_attr_value
920 ,application_short_name => 'QP'
921 ,context_flag =>l_context_flag
922 ,attribute_flag =>l_attribute_flag
923 ,value_flag =>l_value_flag
924 ,datatype =>l_datatype
925 ,precedence =>l_precedence
926 ,error_code =>l_error_code
927 );
928 If (l_context_flag = 'N' AND l_error_code = 7) -- invalid context
929 Then
930 x_return_status := FND_API.G_RET_STS_ERROR;
931 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
932 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PROD_CONTEXT' );
933 FND_MSG_PUB.add;
934 END IF;
935 End If;
936
937 If (l_attribute_flag = 'N' AND l_error_code = 8) -- invalid attribute
938 Then
939 x_return_status := FND_API.G_RET_STS_ERROR;
940 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
941 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PROD_ATTR' );
942 FND_MSG_PUB.add;
943 END IF;
944 End If;
945
946 If (l_value_flag = 'N' AND l_error_code = 9) -- invalid value
947 Then
948 x_return_status := FND_API.G_RET_STS_ERROR;
949 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
950 FND_MESSAGE.SET_NAME('QP','QP_INVALID_PROD_VALUE' );
951 FND_MSG_PUB.add;
952 END IF;
953 End If;
954 END Check_adj_new_prod_attr;
955
956 PROCEDURE Check_adj_new_prod_Items (
957 P_adj_new_prod_rec IN adj_new_prod_rec_type,
958 p_validation_mode IN VARCHAR2,
959 x_return_status OUT NOCOPY VARCHAR2
960 )
961 IS
962 BEGIN
963 -- Check Items Required/NOT NULL API calls
964
965 check_adj_new_prod_req_items(
966 p_adj_new_prod_rec => p_adj_new_prod_rec,
967 p_validation_mode => p_validation_mode,
968 x_return_status => x_return_status);
969 IF x_return_status <> FND_API.g_ret_sts_success THEN
970 RETURN;
971 END IF;
972
973 Check_adj_new_prod_attr(
974 p_adj_new_prod_rec => p_adj_new_prod_rec,
975 x_return_status => x_return_status);
976 IF x_return_status <> FND_API.g_ret_sts_success THEN
977 RETURN;
978 END IF;
979
980 Check_adj_new_prod_inter_attr(
981 p_adj_new_prod_rec => p_adj_new_prod_rec,
982 p_validation_mode => p_validation_mode,
983 x_return_status => x_return_status);
984 IF x_return_status <> FND_API.g_ret_sts_success THEN
985 RETURN;
986 END IF;
987
988 -- Check Items Uniqueness API calls
989 check_adj_new_prod_uk_items(
990 p_adj_new_prod_rec => p_adj_new_prod_rec,
991 p_validation_mode => p_validation_mode,
992 x_return_status => x_return_status);
993 IF x_return_status <> FND_API.g_ret_sts_success THEN
994 RETURN;
995 END IF;
996
997 -- Check Items Foreign Keys API calls
998
999 check_adj_new_prod_FK_items(
1000 p_adj_new_prod_rec => p_adj_new_prod_rec,
1001 x_return_status => x_return_status);
1002 IF x_return_status <> FND_API.g_ret_sts_success THEN
1003 RETURN;
1004 END IF;
1005 -- Check Items Lookups
1006
1007 check_adj_prod_Lkup_items(
1008 p_adj_new_prod_rec => p_adj_new_prod_rec,
1009 x_return_status => x_return_status);
1010 IF x_return_status <> FND_API.g_ret_sts_success THEN
1011 RETURN;
1012 END IF;
1013
1014
1015 END Check_adj_new_prod_Items;
1016
1017
1018 PROCEDURE Complete_adj_new_prod_Rec (
1019 p_adj_new_prod_rec IN adj_new_prod_rec_type,
1020 x_complete_rec OUT NOCOPY adj_new_prod_rec_type)
1021 IS
1022 l_return_status VARCHAR2(1);
1023
1024 CURSOR c_complete IS
1025 SELECT *
1026 FROM ozf_offer_adj_new_products
1027 WHERE offer_adj_new_product_id = p_adj_new_prod_rec.offer_adj_new_product_id;
1028 l_adj_new_prod_rec c_complete%ROWTYPE;
1029 BEGIN
1030 x_complete_rec := p_adj_new_prod_rec;
1031
1032
1033 OPEN c_complete;
1034 FETCH c_complete INTO l_adj_new_prod_rec;
1035 CLOSE c_complete;
1036
1037 -- offer_adj_new_product_id
1038 IF p_adj_new_prod_rec.offer_adj_new_product_id = FND_API.g_miss_num THEN
1039 x_complete_rec.offer_adj_new_product_id := l_adj_new_prod_rec.offer_adj_new_product_id;
1040 END IF;
1041
1042 -- offer_adj_new_line_id
1043 IF p_adj_new_prod_rec.offer_adj_new_line_id = FND_API.g_miss_num THEN
1044 x_complete_rec.offer_adj_new_line_id := l_adj_new_prod_rec.offer_adj_new_line_id;
1045 END IF;
1046
1047 -- product_context
1048 IF p_adj_new_prod_rec.product_context = FND_API.g_miss_char THEN
1049 x_complete_rec.product_context := l_adj_new_prod_rec.product_context;
1050 END IF;
1051
1052 -- product_attribute
1053 IF p_adj_new_prod_rec.product_attribute = FND_API.g_miss_char THEN
1054 x_complete_rec.product_attribute := l_adj_new_prod_rec.product_attribute;
1055 END IF;
1056
1057 -- product_attr_value
1058 IF p_adj_new_prod_rec.product_attr_value = FND_API.g_miss_char THEN
1059 x_complete_rec.product_attr_value := l_adj_new_prod_rec.product_attr_value;
1060 END IF;
1061
1062 -- excluder_flag
1063 IF p_adj_new_prod_rec.excluder_flag = FND_API.g_miss_char THEN
1064 x_complete_rec.excluder_flag := l_adj_new_prod_rec.excluder_flag;
1065 END IF;
1066
1067 -- uom_code
1068 IF p_adj_new_prod_rec.uom_code = FND_API.g_miss_char THEN
1069 x_complete_rec.uom_code := l_adj_new_prod_rec.uom_code;
1070 END IF;
1071
1072 -- creation_date
1073 IF p_adj_new_prod_rec.creation_date = FND_API.g_miss_date THEN
1074 x_complete_rec.creation_date := l_adj_new_prod_rec.creation_date;
1075 END IF;
1076
1077 -- created_by
1078 IF p_adj_new_prod_rec.created_by = FND_API.g_miss_num THEN
1079 x_complete_rec.created_by := l_adj_new_prod_rec.created_by;
1080 END IF;
1081
1082 -- last_update_date
1083 IF p_adj_new_prod_rec.last_update_date = FND_API.g_miss_date THEN
1084 x_complete_rec.last_update_date := l_adj_new_prod_rec.last_update_date;
1085 END IF;
1086
1087 -- last_updated_by
1088 IF p_adj_new_prod_rec.last_updated_by = FND_API.g_miss_num THEN
1089 x_complete_rec.last_updated_by := l_adj_new_prod_rec.last_updated_by;
1090 END IF;
1091
1092 -- last_update_login
1093 IF p_adj_new_prod_rec.last_update_login = FND_API.g_miss_num THEN
1094 x_complete_rec.last_update_login := l_adj_new_prod_rec.last_update_login;
1095 END IF;
1096
1097 -- object_version_number
1098 IF p_adj_new_prod_rec.object_version_number = FND_API.g_miss_num THEN
1099 x_complete_rec.object_version_number := l_adj_new_prod_rec.object_version_number;
1100 END IF;
1101 -- Note: Developers need to modify the procedure
1102 -- to handle any business specific requirements.
1103 END Complete_adj_new_prod_Rec;
1104
1105 PROCEDURE Validate_adj_new_prod(
1106 p_api_version_number IN NUMBER,
1107 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1108 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1109 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_update,
1110 p_adj_new_prod_rec IN adj_new_prod_rec_type,
1111 x_return_status OUT NOCOPY VARCHAR2,
1112 x_msg_count OUT NOCOPY NUMBER,
1113 x_msg_data OUT NOCOPY VARCHAR2
1114 )
1115 IS
1116 L_API_NAME CONSTANT VARCHAR2(30) := 'Validate_Adj_New_Prod';
1117 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
1118 l_object_version_number NUMBER;
1119 l_adj_new_prod_rec OZF_Adj_New_Prod_PVT.adj_new_prod_rec_type;
1120
1121 BEGIN
1122 -- Standard Start of API savepoint
1123 SAVEPOINT VALIDATE_Adj_New_Prod_;
1124
1125 -- Standard call to check for call compatibility.
1126 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1127 p_api_version_number,
1128 l_api_name,
1129 G_PKG_NAME)
1130 THEN
1131 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1132 END IF;
1133
1134 -- Initialize message list if p_init_msg_list is set to TRUE.
1135 IF FND_API.to_Boolean( p_init_msg_list )
1136 THEN
1137 FND_MSG_PUB.initialize;
1138 END IF;
1139 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1140 Check_adj_new_prod_Items(
1141 p_adj_new_prod_rec => p_adj_new_prod_rec,
1142 p_validation_mode => p_validation_mode,
1143 x_return_status => x_return_status
1144 );
1145
1146 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1147 RAISE FND_API.G_EXC_ERROR;
1148 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1149 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1150 END IF;
1151 END IF;
1152
1153 Complete_adj_new_prod_Rec(
1154 p_adj_new_prod_rec => p_adj_new_prod_rec,
1155 x_complete_rec => l_adj_new_prod_rec
1156 );
1157
1158 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1159 Validate_adj_new_prod_Rec(
1160 p_api_version_number => 1.0,
1161 p_init_msg_list => FND_API.G_FALSE,
1162 x_return_status => x_return_status,
1163 x_msg_count => x_msg_count,
1164 x_msg_data => x_msg_data,
1165 p_adj_new_prod_rec => l_adj_new_prod_rec);
1166
1167 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1168 RAISE FND_API.G_EXC_ERROR;
1169 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1170 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1171 END IF;
1172 END IF;
1173
1174
1175 -- Debug Message
1176 OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1177
1178
1179 -- Initialize API return status to SUCCESS
1180 x_return_status := FND_API.G_RET_STS_SUCCESS;
1181
1182
1183 -- Debug Message
1184 OZF_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1185
1186 -- Standard call to get message count and if count is 1, get message info.
1187 FND_MSG_PUB.Count_And_Get
1188 (p_count => x_msg_count,
1189 p_data => x_msg_data
1190 );
1191 EXCEPTION
1192
1193 WHEN OZF_UTILITY_PVT.resource_locked THEN
1194 x_return_status := FND_API.g_ret_sts_error;
1195 OZF_UTILITY_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1196
1197 WHEN FND_API.G_EXC_ERROR THEN
1198 ROLLBACK TO VALIDATE_Adj_New_Prod_;
1199 x_return_status := FND_API.G_RET_STS_ERROR;
1200 -- Standard call to get message count and if count=1, get the message
1201 FND_MSG_PUB.Count_And_Get (
1202 p_encoded => FND_API.G_FALSE,
1203 p_count => x_msg_count,
1204 p_data => x_msg_data
1205 );
1206
1207 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1208 ROLLBACK TO VALIDATE_Adj_New_Prod_;
1209 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1210 -- Standard call to get message count and if count=1, get the message
1211 FND_MSG_PUB.Count_And_Get (
1212 p_encoded => FND_API.G_FALSE,
1213 p_count => x_msg_count,
1214 p_data => x_msg_data
1215 );
1216
1217 WHEN OTHERS THEN
1218 ROLLBACK TO VALIDATE_Adj_New_Prod_;
1219 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1220 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1221 THEN
1222 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1223 END IF;
1224 -- Standard call to get message count and if count=1, get the message
1225 FND_MSG_PUB.Count_And_Get (
1226 p_encoded => FND_API.G_FALSE,
1227 p_count => x_msg_count,
1228 p_data => x_msg_data
1229 );
1230 End Validate_Adj_New_Prod;
1231
1232
1233 PROCEDURE Validate_adj_new_prod_rec(
1234 p_api_version_number IN NUMBER,
1235 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1236 x_return_status OUT NOCOPY VARCHAR2,
1237 x_msg_count OUT NOCOPY NUMBER,
1238 x_msg_data OUT NOCOPY VARCHAR2,
1239 p_adj_new_prod_rec IN adj_new_prod_rec_type
1240 )
1241 IS
1242 BEGIN
1243 -- Initialize message list if p_init_msg_list is set to TRUE.
1244 IF FND_API.to_Boolean( p_init_msg_list )
1245 THEN
1246 FND_MSG_PUB.initialize;
1247 END IF;
1248
1249 -- Initialize API return status to SUCCESS
1250 x_return_status := FND_API.G_RET_STS_SUCCESS;
1251
1252 -- Hint: Validate data
1253 -- If data not valid
1254 -- THEN
1255 -- x_return_status := FND_API.G_RET_STS_ERROR;
1256
1257 -- Debug Message
1258 OZF_UTILITY_PVT.debug_message('Private API: Validate_dm_model_rec');
1259 -- Standard call to get message count and if count is 1, get message info.
1260 FND_MSG_PUB.Count_And_Get
1261 (p_count => x_msg_count,
1262 p_data => x_msg_data
1263 );
1264 END Validate_adj_new_prod_Rec;
1265
1266 END OZF_Adj_New_Prod_PVT;