DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_RELATED_OBJ_PVT

Source


4 -- Package name     : aso_RELATED_OBJ_PVT
1 PACKAGE BODY aso_RELATED_OBJ_PVT as
2 /* $Header: asovobjb.pls 120.1 2005/06/29 12:42:22 appldev ship $ */
3 -- Start of Comments
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'aso_RELATED_OBJ_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asovobjb.pls';
13 
14 
15 -- Hint: Primary key needs to be returned.
16 PROCEDURE Create_related_obj(
17     P_Api_Version_Number         IN   NUMBER,
18     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
19     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
20   p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
21   P_RELATED_OBJ_Rec     IN    ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC,
22     X_RELATED_OBJECT_ID     OUT NOCOPY /* file.sql.39 change */   NUMBER,
23     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
24     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
25     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
26     )
27 
28  IS
29 l_api_name                CONSTANT VARCHAR2(30) := 'Create_related_obj';
30 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
31 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
32 l_api_version_number      CONSTANT NUMBER   := 1.0;
33 l_return_status_full        VARCHAR2(1);
34 l_x_status                VARCHAR2(1);
35 
36  BEGIN
37       -- Standard Start of API savepoint
38       SAVEPOINT CREATE_RELATED_OBJ_PVT;
39 
40       -- Standard call to check for call compatibility.
41       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
42                          	           p_api_version_number,
43                                            l_api_name,
44                                            G_PKG_NAME)
45       THEN
49 
46           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
47       END IF;
48 
50       -- Initialize message list if p_init_msg_list is set to TRUE.
51       IF FND_API.to_Boolean( p_init_msg_list )
52       THEN
53           FND_MSG_PUB.initialize;
54       END IF;
55 
56 
57       -- Initialize API return status to SUCCESS
58       x_return_status := FND_API.G_RET_STS_SUCCESS;
59 
60       --
61       -- API body
62       --
63 
64 
65       -- ******************************************************************
66       -- Validate Environment
67       -- ******************************************************************
68       IF FND_GLOBAL.User_Id IS NULL
69       THEN
70           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
71           THEN
72               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
73               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
74               FND_MSG_PUB.ADD;
75           END IF;
76           RAISE FND_API.G_EXC_ERROR;
77       END IF;
78 
79 
80 
81          IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
82 
83 
84 
85           -- Invoke validation procedures
86     ASO_VALIDATE_PVT.Validate_QTE_OBJ_TYPE_CODE (
87     P_Init_Msg_List            =>     P_Init_Msg_List  ,
88     P_QUOTE_OBJECT_TYPE_CODE   => P_RELATED_OBJ_Rec.QUOTE_OBJECT_TYPE_CODE,
89     X_Return_Status           => X_Return_Status ,
90     X_Msg_Count               => X_Msg_Count  ,
91     X_Msg_Data                =>  X_Msg_Data
92     );
93         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
94           RAISE FND_API.G_EXC_ERROR;
95       END IF;
96      ASO_VALIDATE_PVT.Validate_OBJECT_TYPE_CODE (
97     P_Init_Msg_List            =>     P_Init_Msg_List  ,
98     P_OBJECT_TYPE_CODE   => P_RELATED_OBJ_Rec.OBJECT_TYPE_CODE,
99     X_Return_Status           => X_Return_Status ,
100     X_Msg_Count               => X_Msg_Count  ,
101     X_Msg_Data                =>  X_Msg_Data
102     );
103         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
104           RAISE FND_API.G_EXC_ERROR;
105       END IF;
106  	 ASO_VALIDATE_PVT.Validate_RLTSHIP_TYPE_CODE (
107     P_Init_Msg_List            =>     P_Init_Msg_List  ,
108     P_RELATIONSHIP_TYPE_CODE   => P_RELATED_OBJ_Rec.RELATIONSHIP_TYPE_CODE,
109     X_Return_Status           => X_Return_Status ,
110     X_Msg_Count               => X_Msg_Count  ,
111     X_Msg_Data                =>  X_Msg_Data
112     );
113         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
114           RAISE FND_API.G_EXC_ERROR;
115       END IF;
116 
117 
118      END IF;
119 
120      IF p_related_obj_rec.quote_object_type_code = 'HEADER' and
121         p_related_obj_rec.quote_object_id is not null THEN
122 
123           aso_conc_req_int.lock_exists( p_quote_header_id  =>  p_related_obj_rec.quote_object_id,
124                                         x_status           =>  l_x_status );
125 
126           IF aso_debug_pub.g_debug_flag = 'Y' THEN
127               aso_debug_pub.add('create_related_obj: l_x_status: '|| l_x_status);
128           END IF;
129 
130           if l_x_status = fnd_api.g_true then
131 
132               if fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error) then
133                   fnd_message.set_name('ASO', 'ASO_CONC_REQUEST_RUNNING');
134                   fnd_msg_pub.add;
135               end if;
136 
137               x_return_status := fnd_api.g_ret_sts_error;
138               raise fnd_api.g_exc_error;
139 
140           end if;
141 
142      END IF;
143 
144       -- Invoke table handler(ASO_QUOTE_RELATED_OBJECTS_PKG.Insert_Row)
145       ASO_QUOTE_RELATED_OBJECTS_PKG.Insert_Row(
146           px_RELATED_OBJECT_ID  => x_RELATED_OBJECT_ID,
147           p_CREATION_DATE  => SYSDATE,
148           p_CREATED_BY  => G_USER_ID,
149           p_LAST_UPDATE_DATE  => SYSDATE,
150           p_LAST_UPDATED_BY  => G_USER_ID,
151           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
152           p_REQUEST_ID  => p_RELATED_OBJ_rec.REQUEST_ID,
153          p_PROGRAM_APPLICATION_ID  => p_RELATED_OBJ_rec.PROGRAM_APPLICATION_ID,
154           p_PROGRAM_ID  => p_RELATED_OBJ_rec.PROGRAM_ID,
155           p_PROGRAM_UPDATE_DATE  => p_RELATED_OBJ_rec.PROGRAM_UPDATE_DATE,
156          p_QUOTE_OBJECT_TYPE_CODE  => p_RELATED_OBJ_rec.QUOTE_OBJECT_TYPE_CODE,
157           p_QUOTE_OBJECT_ID  => p_RELATED_OBJ_rec.QUOTE_OBJECT_ID,
158           p_OBJECT_TYPE_CODE  => p_RELATED_OBJ_rec.OBJECT_TYPE_CODE,
159           p_OBJECT_ID  => p_RELATED_OBJ_rec.OBJECT_ID,
160          p_RELATIONSHIP_TYPE_CODE  => p_RELATED_OBJ_rec.RELATIONSHIP_TYPE_CODE,
161           p_RECIPROCAL_FLAG  => p_RELATED_OBJ_rec.RECIPROCAL_FLAG,
162 		p_OBJECT_VERSION_NUMBER => p_RELATED_OBJ_rec.OBJECT_VERSION_NUMBER);
163 
164 
165       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
166           RAISE FND_API.G_EXC_ERROR;
167       END IF;
168 
169       --
170       -- End of API body
171       --
172 
173       -- Standard check for p_commit
174       IF FND_API.to_Boolean( p_commit )
175       THEN
176           COMMIT WORK;
177       END IF;
178 
179       -- Standard call to get message count and if count is 1, get message info.
180       FND_MSG_PUB.Count_And_Get
181       (  p_count          =>   x_msg_count,
182          p_data           =>   x_msg_data
183       );
184 
185 EXCEPTION
186 	  WHEN FND_API.G_EXC_ERROR THEN
187 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
188 		   P_API_NAME => L_API_NAME
189 		  ,P_PKG_NAME => G_PKG_NAME
190 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
191 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
195 		  ,X_MSG_DATA => X_MSG_DATA
192 		  ,P_SQLCODE => SQLCODE
193 		  ,P_SQLERRM => SQLERRM
194 		  ,X_MSG_COUNT => X_MSG_COUNT
196 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
197 
198 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
199 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
200 		   P_API_NAME => L_API_NAME
201 		  ,P_PKG_NAME => G_PKG_NAME
202 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
203 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
204 		  ,P_SQLCODE => SQLCODE
205 		  ,P_SQLERRM => SQLERRM
206 		  ,X_MSG_COUNT => X_MSG_COUNT
207 		  ,X_MSG_DATA => X_MSG_DATA
208 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
209 
210 	  WHEN OTHERS THEN
211 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
212 		   P_API_NAME => L_API_NAME
213 		  ,P_PKG_NAME => G_PKG_NAME
214 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
215 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
216 		  ,P_SQLCODE => SQLCODE
217 		  ,P_SQLERRM => SQLERRM
218 		  ,X_MSG_COUNT => X_MSG_COUNT
219 		  ,X_MSG_DATA => X_MSG_DATA
220 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
221 
222 End Create_related_obj;
223 
224 
225 
226 
227 PROCEDURE Update_related_obj(
228     P_Api_Version_Number         IN   NUMBER,
229     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
230     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
231     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
232     P_RELATED_OBJ_Rec     IN    ASO_QUOTE_PUB.RELATED_OBJ_Rec_Type,
233     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
234     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
235     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
236     )
237 
238  IS
239 
240 Cursor C_Get_related_obj(RELATED_OBJECT_ID Number) IS
241     Select --rowid,
242            RELATED_OBJECT_ID,
243            CREATION_DATE,
244            CREATED_BY,
245            LAST_UPDATE_DATE,
246            LAST_UPDATED_BY,
247            LAST_UPDATE_LOGIN,
248            REQUEST_ID,
249            PROGRAM_APPLICATION_ID,
250            PROGRAM_ID,
251            PROGRAM_UPDATE_DATE,
252            QUOTE_OBJECT_TYPE_CODE,
253            QUOTE_OBJECT_ID,
254            OBJECT_TYPE_CODE,
255            OBJECT_ID,
256            RELATIONSHIP_TYPE_CODE,
257            RECIPROCAL_FLAG
258         --   QUOTE_OBJECT_CODE
259     From  ASO_QUOTE_RELATED_OBJECTS
260     where related_object_id = P_RELATED_OBJ_Rec.related_object_id;
261     --For Update NOWAIT;
262 
263 l_api_name                CONSTANT VARCHAR2(30) := 'Update_related_obj';
264 l_api_version_number      CONSTANT NUMBER   := 1.0;
265 
266 l_ref_RELATED_OBJ_rec  aso_quote_pub.RELATED_OBJ_Rec_Type;
267 l_tar_RELATED_OBJ_rec  aso_quote_pub.RELATED_OBJ_Rec_Type := P_RELATED_OBJ_Rec;
268 l_rowid  ROWID;
269 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
270 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
271 l_x_status        varchar2(1);
272 
273 BEGIN
274       -- Standard Start of API savepoint
275       SAVEPOINT UPDATE_RELATED_OBJ_PVT;
276 
277       -- Standard call to check for call compatibility.
278       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
279                          	             p_api_version_number,
280                                            l_api_name,
281                                            G_PKG_NAME)
282       THEN
283           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
284       END IF;
285 
286 
287       -- Initialize message list if p_init_msg_list is set to TRUE.
288       IF FND_API.to_Boolean( p_init_msg_list )
289       THEN
290           FND_MSG_PUB.initialize;
291       END IF;
292 
293 
294       -- Initialize API return status to SUCCESS
295       x_return_status := FND_API.G_RET_STS_SUCCESS;
296 
297       --
298       -- Api body
299       --
300 
301       Open C_Get_related_obj( l_tar_RELATED_OBJ_rec.RELATED_OBJECT_ID);
302 
303       Fetch C_Get_related_obj into
304               -- l_rowid,
305                l_ref_RELATED_OBJ_rec.RELATED_OBJECT_ID,
306                l_ref_RELATED_OBJ_rec.CREATION_DATE,
307                l_ref_RELATED_OBJ_rec.CREATED_BY,
308                l_ref_RELATED_OBJ_rec.LAST_UPDATE_DATE,
309                l_ref_RELATED_OBJ_rec.LAST_UPDATED_BY,
310                l_ref_RELATED_OBJ_rec.LAST_UPDATE_LOGIN,
311                l_ref_RELATED_OBJ_rec.REQUEST_ID,
312                l_ref_RELATED_OBJ_rec.PROGRAM_APPLICATION_ID,
313                l_ref_RELATED_OBJ_rec.PROGRAM_ID,
314                l_ref_RELATED_OBJ_rec.PROGRAM_UPDATE_DATE,
315                l_ref_RELATED_OBJ_rec.QUOTE_OBJECT_TYPE_CODE,
316                l_ref_RELATED_OBJ_rec.QUOTE_OBJECT_ID,
317                l_ref_RELATED_OBJ_rec.OBJECT_TYPE_CODE,
318                l_ref_RELATED_OBJ_rec.OBJECT_ID,
319                l_ref_RELATED_OBJ_rec.RELATIONSHIP_TYPE_CODE,
320                l_ref_RELATED_OBJ_rec.RECIPROCAL_FLAG;
321           --     l_ref_RELATED_OBJ_rec.QUOTE_OBJECT_CODE;
322 
323        If ( C_Get_related_obj%NOTFOUND) Then
324            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
325            THEN
326                FND_MESSAGE.Set_Name('aso', 'API_MISSING_UPDATE_TARGET');
327                FND_MESSAGE.Set_Token ('INFO', 'related_obj', FALSE);
328                FND_MSG_PUB.Add;
329            END IF;
330            raise FND_API.G_EXC_ERROR;
331        END IF;
332        -- Debug Message
336 
333       -- ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
334        Close     C_Get_related_obj;
335 
337 
341           THEN
338       If (l_tar_RELATED_OBJ_rec.last_update_date is NULL or
339           l_tar_RELATED_OBJ_rec.last_update_date = FND_API.G_MISS_Date ) Then
340           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
342               FND_MESSAGE.Set_Name('aso', 'API_MISSING_ID');
343               FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
344               FND_MSG_PUB.ADD;
345           END IF;
346           raise FND_API.G_EXC_ERROR;
347       End if;
348       -- Check Whether record has been changed by someone else
349       If (l_tar_RELATED_OBJ_rec.last_update_date <> l_ref_RELATED_OBJ_rec.last_update_date) Then
350           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
351           THEN
352               FND_MESSAGE.Set_Name('aso', 'API_RECORD_CHANGED');
353               FND_MESSAGE.Set_Token('INFO', 'related_obj', FALSE);
354               FND_MSG_PUB.ADD;
355           END IF;
356           raise FND_API.G_EXC_ERROR;
357       End if;
358 
359      IF ( P_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
360 
361 	 ASO_VALIDATE_PVT.Validate_QTE_OBJ_TYPE_CODE (
362     P_Init_Msg_List            =>     P_Init_Msg_List  ,
363     P_QUOTE_OBJECT_TYPE_CODE   => P_RELATED_OBJ_Rec.QUOTE_OBJECT_TYPE_CODE,
364     X_Return_Status           => X_Return_Status ,
365     X_Msg_Count               => X_Msg_Count  ,
366     X_Msg_Data                =>  X_Msg_Data
367     );
368         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
369           RAISE FND_API.G_EXC_ERROR;
370       END IF;
371      ASO_VALIDATE_PVT.Validate_OBJECT_TYPE_CODE (
372     P_Init_Msg_List            =>     P_Init_Msg_List  ,
373     P_OBJECT_TYPE_CODE   => P_RELATED_OBJ_Rec.OBJECT_TYPE_CODE,
374     X_Return_Status           => X_Return_Status ,
375     X_Msg_Count               => X_Msg_Count  ,
376     X_Msg_Data                =>  X_Msg_Data
377     );
378         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
379           RAISE FND_API.G_EXC_ERROR;
380       END IF;
381  	 ASO_VALIDATE_PVT.Validate_RLTSHIP_TYPE_CODE(
382     P_Init_Msg_List            =>     P_Init_Msg_List  ,
383     P_RELATIONSHIP_TYPE_CODE   => P_RELATED_OBJ_Rec.RELATIONSHIP_TYPE_CODE,
384     X_Return_Status           => X_Return_Status ,
385     X_Msg_Count               => X_Msg_Count  ,
386     X_Msg_Data                =>  X_Msg_Data
387     );
388         IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
389           RAISE FND_API.G_EXC_ERROR;
390       END IF;
391 
392       END IF;
393 
394       IF p_related_obj_rec.quote_object_type_code = 'HEADER' and
395          p_related_obj_rec.quote_object_id is not null THEN
396 
397           aso_conc_req_int.lock_exists( p_quote_header_id  =>  p_related_obj_rec.quote_object_id ,
398                                         x_status           =>  l_x_status );
399 
400           IF aso_debug_pub.g_debug_flag = 'Y' THEN
401               aso_debug_pub.add('update_related_obj: l_x_status: '|| l_x_status);
402           END IF;
403 
404           if l_x_status = fnd_api.g_true then
405 
406               if fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error) then
407                   fnd_message.set_name('ASO', 'ASO_CONC_REQUEST_RUNNING');
408                   fnd_msg_pub.add;
409               end if;
410 
411               x_return_status := fnd_api.g_ret_sts_error;
412               raise fnd_api.g_exc_error;
413 
414           end if;
415 
416      END IF;
417 
418       -- Invoke table handler(ASO_QUOTE_RELATED_OBJECTS_PKG.Update_Row)
419       ASO_QUOTE_RELATED_OBJECTS_PKG.Update_Row(
420           p_RELATED_OBJECT_ID  => p_RELATED_OBJ_rec.RELATED_OBJECT_ID,
421           p_CREATION_DATE  => SYSDATE,
422           p_CREATED_BY  => G_USER_ID,
423           p_LAST_UPDATE_DATE  => SYSDATE,
424           p_LAST_UPDATED_BY  => G_USER_ID,
425           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
426           p_REQUEST_ID  => p_RELATED_OBJ_rec.REQUEST_ID,
427           p_PROGRAM_APPLICATION_ID  => p_RELATED_OBJ_rec.PROGRAM_APPLICATION_ID,
428           p_PROGRAM_ID  => p_RELATED_OBJ_rec.PROGRAM_ID,
429           p_PROGRAM_UPDATE_DATE  => p_RELATED_OBJ_rec.PROGRAM_UPDATE_DATE,
430           p_QUOTE_OBJECT_TYPE_CODE  => p_RELATED_OBJ_rec.QUOTE_OBJECT_TYPE_CODE,
431           p_QUOTE_OBJECT_ID  => p_RELATED_OBJ_rec.QUOTE_OBJECT_ID,
432           p_OBJECT_TYPE_CODE  => p_RELATED_OBJ_rec.OBJECT_TYPE_CODE,
433           p_OBJECT_ID  => p_RELATED_OBJ_rec.OBJECT_ID,
434           p_RELATIONSHIP_TYPE_CODE  => p_RELATED_OBJ_rec.RELATIONSHIP_TYPE_CODE,
435           p_RECIPROCAL_FLAG  => p_RELATED_OBJ_rec.RECIPROCAL_FLAG,
436 		p_OBJECT_VERSION_NUMBER => p_RELATED_OBJ_rec.OBJECT_VERSION_NUMBER);
437 
441       --
438 	 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
439           RAISE FND_API.G_EXC_ERROR;
440       END IF;
442       -- End of API body.
443       --
444 
445       -- Standard check for p_commit
446       IF FND_API.to_Boolean( p_commit )
447       THEN
448           COMMIT WORK;
449       END IF;
450 
451 
452       -- Standard call to get message count and if count is 1, get message info.
453       FND_MSG_PUB.Count_And_Get
454       (  p_count          =>   x_msg_count,
455          p_data           =>   x_msg_data
456       );
457 
458 	EXCEPTION
459 	  WHEN FND_API.G_EXC_ERROR THEN
460 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
461 		   P_API_NAME => L_API_NAME
462 		  ,P_PKG_NAME => G_PKG_NAME
463 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
464 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
465 		  ,P_SQLCODE => SQLCODE
466 		  ,P_SQLERRM => SQLERRM
467 		  ,X_MSG_COUNT => X_MSG_COUNT
468 		  ,X_MSG_DATA => X_MSG_DATA
469 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
470 
471 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
472 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
473 		   P_API_NAME => L_API_NAME
474 		  ,P_PKG_NAME => G_PKG_NAME
475 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
476 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
477 		  ,P_SQLCODE => SQLCODE
478 		  ,P_SQLERRM => SQLERRM
479 		  ,X_MSG_COUNT => X_MSG_COUNT
480 		  ,X_MSG_DATA => X_MSG_DATA
481 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
482 
483 	  WHEN OTHERS THEN
484 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
485 		   P_API_NAME => L_API_NAME
486 		  ,P_PKG_NAME => G_PKG_NAME
487 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
488 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
489 		  ,P_SQLCODE => SQLCODE
490 		  ,P_SQLERRM => SQLERRM
491 		  ,X_MSG_COUNT => X_MSG_COUNT
492 		  ,X_MSG_DATA => X_MSG_DATA
493 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
494 
495 
496 End Update_related_obj;
497 
498 
499 
500 PROCEDURE Delete_related_obj(
501     P_Api_Version_Number         IN   NUMBER,
502     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
503     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
504     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
505     P_RELATED_OBJ_Rec     IN ASO_QUOTE_PUB.RELATED_OBJ_Rec_Type,
506     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
507     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
508     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
509     )
510 
511  IS
512 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_related_obj';
513 l_api_version_number      CONSTANT NUMBER   := 1.0;
514 l_x_status                         VARCHAR2(1);
515 
516 l_quote_object_type_code           varchar2(30);
517 l_quote_object_id                  number;
518 
519 cursor quote_object is
520 select quote_object_type_code, quote_object_id
521 from aso_quote_related_objects
522 where related_object_id = p_related_obj_rec.related_object_id;
523 
524  BEGIN
525       -- Standard Start of API savepoint
526       SAVEPOINT DELETE_RELATED_OBJ_PVT;
527 
528       -- Standard call to check for call compatibility.
529       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
530                          	             p_api_version_number,
531                                            l_api_name,
532                                            G_PKG_NAME)
533       THEN
534           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
535       END IF;
536 
537 
538       -- Initialize message list if p_init_msg_list is set to TRUE.
539       IF FND_API.to_Boolean( p_init_msg_list )
540       THEN
541           FND_MSG_PUB.initialize;
542       END IF;
543 
544 
545 
546       -- Initialize API return status to SUCCESS
547       x_return_status := FND_API.G_RET_STS_SUCCESS;
548 
549       --
550       -- Api body
551       --
552 
553       open quote_object;
554       fetch quote_object into l_quote_object_type_code, l_quote_object_id;
555       close quote_object;
556 
557       IF l_quote_object_type_code = 'HEADER' and
558          l_quote_object_id is not null THEN
559 
560           aso_conc_req_int.lock_exists( p_quote_header_id  =>  l_quote_object_id,
561                                         x_status           =>  l_x_status );
562 
563           IF aso_debug_pub.g_debug_flag = 'Y' THEN
564               aso_debug_pub.add('delete_related_obj: l_x_status: '|| l_x_status);
565           END IF;
566 
567           if l_x_status = fnd_api.g_true then
568 
569               if fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error) then
570                   fnd_message.set_name('ASO', 'ASO_CONC_REQUEST_RUNNING');
571                   fnd_msg_pub.add;
572               end if;
573 
574               x_return_status := fnd_api.g_ret_sts_error;
575               raise fnd_api.g_exc_error;
576 
577           end if;
578 
579      END IF;
580 
581       -- Invoke table handler(ASO_QUOTE_RELATED_OBJECTS_PKG.Delete_Row)
582       ASO_QUOTE_RELATED_OBJECTS_PKG.Delete_Row(
583           p_RELATED_OBJECT_ID  => p_RELATED_OBJ_rec.RELATED_OBJECT_ID);
584 
585       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
586           RAISE FND_API.G_EXC_ERROR;
587       END IF;
588       --
589       -- End of API body
590       --
591 
592       -- Standard check for p_commit
593       IF FND_API.to_Boolean( p_commit )
594       THEN
595           COMMIT WORK;
599 
596       END IF;
597 
598 
600 
601       -- Standard call to get message count and if count is 1, get message info.
602       FND_MSG_PUB.Count_And_Get
603       (  p_count          =>   x_msg_count,
604          p_data           =>   x_msg_data);
605 
606   EXCEPTION
607 	  WHEN FND_API.G_EXC_ERROR THEN
608 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
609 		   P_API_NAME => L_API_NAME
610 		  ,P_PKG_NAME => G_PKG_NAME
611 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
612 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
613 		  ,P_SQLCODE => SQLCODE
614 		  ,P_SQLERRM => SQLERRM
615 		  ,X_MSG_COUNT => X_MSG_COUNT
616 		  ,X_MSG_DATA => X_MSG_DATA
617 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
618 
619 	  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
620 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
621 		   P_API_NAME => L_API_NAME
622 		  ,P_PKG_NAME => G_PKG_NAME
623 		  ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
624 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
625 		  ,P_SQLCODE => SQLCODE
626 		  ,P_SQLERRM => SQLERRM
627 		  ,X_MSG_COUNT => X_MSG_COUNT
628 		  ,X_MSG_DATA => X_MSG_DATA
629 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
630 
631 	  WHEN OTHERS THEN
632 	      ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
633 		   P_API_NAME => L_API_NAME
634 		  ,P_PKG_NAME => G_PKG_NAME
635 		  ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
636 		  ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
637 		  ,P_SQLCODE => SQLCODE
638 		  ,P_SQLERRM => SQLERRM
639 		  ,X_MSG_COUNT => X_MSG_COUNT
640 		  ,X_MSG_DATA => X_MSG_DATA
641 		  ,X_RETURN_STATUS => X_RETURN_STATUS);
642 
643 End Delete_related_obj;
644 
645 
646 
647 
648 -- Item-level validation procedures
649 PROCEDURE Validate_RELATED_OBJECT_ID (
650     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
651     P_Validation_mode            IN   VARCHAR2,
652     P_RELATED_OBJECT_ID                IN   NUMBER,
653     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
654     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
655     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
656     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
657     )
658 IS
659 BEGIN
660 
661       -- Initialize message list if p_init_msg_list is set to TRUE.
662       IF FND_API.to_Boolean( p_init_msg_list )
663       THEN
664           FND_MSG_PUB.initialize;
665       END IF;
666 
667 
668       -- Initialize API return status to SUCCESS
669       x_return_status := FND_API.G_RET_STS_SUCCESS;
670 
671       -- validate NOT NULL column
672       IF(p_RELATED_OBJECT_ID is NULL)
673       THEN
674           --ASO_UTILITY_PVT.Print('ERROR', 'Private related_obj API: -Violate NOT NULL constraint(RELATED_OBJECT_ID)');
675           x_return_status := FND_API.G_RET_STS_ERROR;
676       END IF;
677 
681           -- IF p_RELATED_OBJECT_ID is not NULL and p_RELATED_OBJECT_ID <> G_MISS_CHAR
678       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
679       THEN
680           -- Hint: Validate data
682           -- verify if data is valid
683           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
684           NULL;
685       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
686       THEN
687           -- Hint: Validate data
688           -- IF p_RELATED_OBJECT_ID <> G_MISS_CHAR
689           -- verify if data is valid
690           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
691           NULL;
692       END IF;
693 
694       -- Standard call to get message count and if count is 1, get message info.
695       FND_MSG_PUB.Count_And_Get
696       (  p_count          =>   x_msg_count,
697          p_data           =>   x_msg_data
698       );
699 
700 END Validate_RELATED_OBJECT_ID;
701 
702 
703 PROCEDURE Validate_REQUEST_ID (
704     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
705     P_Validation_mode            IN   VARCHAR2,
706     P_REQUEST_ID                IN   NUMBER,
707     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
708     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
709     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
710     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
714 
711     )
712 IS
713 BEGIN
715       -- Initialize message list if p_init_msg_list is set to TRUE.
716       IF FND_API.to_Boolean( p_init_msg_list )
717       THEN
718           FND_MSG_PUB.initialize;
719       END IF;
720 
721 
722       -- Initialize API return status to SUCCESS
723       x_return_status := FND_API.G_RET_STS_SUCCESS;
724 
725       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
726       THEN
727           -- Hint: Validate data
728           -- IF p_REQUEST_ID is not NULL and p_REQUEST_ID <> G_MISS_CHAR
729           -- verify if data is valid
730           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
731           NULL;
732       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
733       THEN
734           -- Hint: Validate data
735           -- IF p_REQUEST_ID <> G_MISS_CHAR
736           -- verify if data is valid
737           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
738           NULL;
739       END IF;
740 
741       -- Standard call to get message count and if count is 1, get message info.
742       FND_MSG_PUB.Count_And_Get
743       (  p_count          =>   x_msg_count,
744          p_data           =>   x_msg_data
745       );
746 
747 END Validate_REQUEST_ID;
748 
749 
750 PROCEDURE Validate_PROGRAM_APPL_ID (
751     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
752     P_Validation_mode            IN   VARCHAR2,
753     P_PROGRAM_APPLICATION_ID                IN   NUMBER,
754     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
755     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
756     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
757     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
758     )
759 IS
760 BEGIN
761 
762       -- Initialize message list if p_init_msg_list is set to TRUE.
763       IF FND_API.to_Boolean( p_init_msg_list )
764       THEN
765           FND_MSG_PUB.initialize;
766       END IF;
767 
768 
769       -- Initialize API return status to SUCCESS
770       x_return_status := FND_API.G_RET_STS_SUCCESS;
771 
772       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
773       THEN
774           -- Hint: Validate data
775           -- IF p_PROGRAM_APPLICATION_ID is not NULL and p_PROGRAM_APPLICATION_ID <> G_MISS_CHAR
776           -- verify if data is valid
777           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
778           NULL;
779       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
780       THEN
781           -- Hint: Validate data
782           -- IF p_PROGRAM_APPLICATION_ID <> G_MISS_CHAR
783           -- verify if data is valid
784           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
785           NULL;
786       END IF;
787 
788       -- Standard call to get message count and if count is 1, get message info.
789       FND_MSG_PUB.Count_And_Get
790       (  p_count          =>   x_msg_count,
791          p_data           =>   x_msg_data
792       );
793 
794 END Validate_PROGRAM_APPL_ID;
795 
796 
797 PROCEDURE Validate_PROGRAM_ID (
798     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
799     P_Validation_mode            IN   VARCHAR2,
800     P_PROGRAM_ID                IN   NUMBER,
801     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
802     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
803     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
804     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
805     )
806 IS
807 BEGIN
808 
809       -- Initialize message list if p_init_msg_list is set to TRUE.
810       IF FND_API.to_Boolean( p_init_msg_list )
811       THEN
812           FND_MSG_PUB.initialize;
813       END IF;
814 
815 
816       -- Initialize API return status to SUCCESS
817       x_return_status := FND_API.G_RET_STS_SUCCESS;
818 
819       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
820       THEN
821           -- Hint: Validate data
822           -- IF p_PROGRAM_ID is not NULL and p_PROGRAM_ID <> G_MISS_CHAR
823           -- verify if data is valid
824           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
825           NULL;
826       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
827       THEN
828           -- Hint: Validate data
829           -- IF p_PROGRAM_ID <> G_MISS_CHAR
830           -- verify if data is valid
831           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
832           NULL;
833       END IF;
834 
835       -- Standard call to get message count and if count is 1, get message info.
836       FND_MSG_PUB.Count_And_Get
837       (  p_count          =>   x_msg_count,
841 END Validate_PROGRAM_ID;
838          p_data           =>   x_msg_data
839       );
840 
842 
843 
844 PROCEDURE Validate_PROGRAM_UPDATE_DATE (
845     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
846     P_Validation_mode            IN   VARCHAR2,
847     P_PROGRAM_UPDATE_DATE                IN   DATE,
848     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
849     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
850     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
851     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
852     )
853 IS
854 BEGIN
855 
856       -- Initialize message list if p_init_msg_list is set to TRUE.
857       IF FND_API.to_Boolean( p_init_msg_list )
858       THEN
859           FND_MSG_PUB.initialize;
860       END IF;
861 
862 
863       -- Initialize API return status to SUCCESS
864       x_return_status := FND_API.G_RET_STS_SUCCESS;
865 
866       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
867       THEN
868           -- Hint: Validate data
869           -- IF p_PROGRAM_UPDATE_DATE is not NULL and p_PROGRAM_UPDATE_DATE <> G_MISS_CHAR
870           -- verify if data is valid
871           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
872           NULL;
873       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
874       THEN
875           -- Hint: Validate data
876           -- IF p_PROGRAM_UPDATE_DATE <> G_MISS_CHAR
877           -- verify if data is valid
878           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
879           NULL;
880       END IF;
881 
882       -- Standard call to get message count and if count is 1, get message info.
883       FND_MSG_PUB.Count_And_Get
884       (  p_count          =>   x_msg_count,
885          p_data           =>   x_msg_data
886       );
887 
888 END Validate_PROGRAM_UPDATE_DATE;
889 
890 
891 PROCEDURE Validate_QTE_OBJ_TYPE_CODE (
892     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
893     P_Validation_mode            IN   VARCHAR2,
894     P_QUOTE_OBJECT_TYPE_CODE                IN   VARCHAR2,
895     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
896     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
897     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
898     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
899     )
900 IS
901 l_count NUMBER;
902 BEGIN
903 
904       -- Initialize message list if p_init_msg_list is set to TRUE.
905       IF FND_API.to_Boolean( p_init_msg_list )
906       THEN
907           FND_MSG_PUB.initialize;
908       END IF;
909 
910 
911       -- Initialize API return status to SUCCESS
912       x_return_status := FND_API.G_RET_STS_SUCCESS;
913 
914       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
915       THEN
916           -- Hint: Validate data
917           -- IF p_QUOTE_OBJECT_TYPE_CODE is not NULL and p_QUOTE_OBJECT_TYPE_CODE <> G_MISS_CHAR
918           -- verify if data is valid
919           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
920           NULL;
921 
922            select count(*) into l_count
923            from aso_lookups
924            where lookup_type = 'ASO_QUOTE_OBJECT_TYPE'
925            and lookup_code = p_QUOTE_OBJECT_TYPE_CODE;
926 
927            IF l_count < 1 THEN
928              x_return_status := FND_API.G_RET_STS_ERROR;
929            END IF;
930 
931       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
932       THEN
933           -- Hint: Validate data
934           -- IF p_QUOTE_OBJECT_TYPE_CODE <> G_MISS_CHAR
935           -- verify if data is valid
936           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
937           NULL;
938 
939          IF p_QUOTE_OBJECT_TYPE_CODE <> FND_API.G_MISS_CHAR THEN
940           select count(*) into l_count
941            from aso_lookups
942            where lookup_type = 'ASO_QUOTE_OBJECT_TYPE'
943            and lookup_code =  p_QUOTE_OBJECT_TYPE_CODE;
944 
945            IF l_count < 1 THEN
946              x_return_status := FND_API.G_RET_STS_ERROR;
947            END IF;
948          END IF;
949       END IF;
950 
951       -- Standard call to get message count and if count is 1, get message info.
952       FND_MSG_PUB.Count_And_Get
953       (  p_count          =>   x_msg_count,
954          p_data           =>   x_msg_data
955       );
956 
957 END Validate_QTE_OBJ_TYPE_CODE;
958 
959 
960 PROCEDURE Validate_QUOTE_OBJECT_ID (
961     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
962     P_Validation_mode            IN   VARCHAR2,
963     P_QUOTE_OBJECT_ID                IN   NUMBER,
964     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
965     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
966     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
967     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
968     )
969 IS
970 BEGIN
971 
975           FND_MSG_PUB.initialize;
972       -- Initialize message list if p_init_msg_list is set to TRUE.
973       IF FND_API.to_Boolean( p_init_msg_list )
974       THEN
976       END IF;
977 
978 
979       -- Initialize API return status to SUCCESS
980       x_return_status := FND_API.G_RET_STS_SUCCESS;
981 
982       -- validate NOT NULL column
983       IF(p_QUOTE_OBJECT_ID is NULL)
984       THEN
985           --ASO_UTILITY_PVT.Print('ERROR', 'Private related_obj API: -Violate NOT NULL constraint(QUOTE_OBJECT_ID)');
986           x_return_status := FND_API.G_RET_STS_ERROR;
987       END IF;
988 /*
989       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
990       THEN
991           -- Hint: Validate data
992           -- IF p_QUOTE_OBJECT_ID is not NULL and p_QUOTE_OBJECT_ID <> G_MISS_CHAR
993           -- verify if data is valid
994           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
995           NULL;
996 
997 
998       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
999       THEN
1000           -- Hint: Validate data
1001           -- IF p_QUOTE_OBJECT_ID <> G_MISS_CHAR
1002           -- verify if data is valid
1003           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1004           NULL;
1005       END IF;
1006 */
1007 
1008 
1009 
1010       -- Standard call to get message count and if count is 1, get message info.
1011       FND_MSG_PUB.Count_And_Get
1012       (  p_count          =>   x_msg_count,
1013          p_data           =>   x_msg_data
1014       );
1015 
1016 END Validate_QUOTE_OBJECT_ID;
1017 
1018 
1019 PROCEDURE Validate_OBJECT_TYPE_CODE (
1020     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1021     P_Validation_mode            IN   VARCHAR2,
1022     P_OBJECT_TYPE_CODE                IN   VARCHAR2,
1023     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1024     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
1025     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
1026     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1027     )
1028 IS
1029 l_count NUMBER;
1030 BEGIN
1031 
1032       -- Initialize message list if p_init_msg_list is set to TRUE.
1033       IF FND_API.to_Boolean( p_init_msg_list )
1034       THEN
1035           FND_MSG_PUB.initialize;
1036       END IF;
1037 
1038 
1039       -- Initialize API return status to SUCCESS
1040       x_return_status := FND_API.G_RET_STS_SUCCESS;
1041 
1042       -- validate NOT NULL column
1043       IF(p_OBJECT_TYPE_CODE is NULL)
1044       THEN
1045           --ASO_UTILITY_PVT.Print('ERROR', 'Private related_obj API: -Violate NOT NULL constraint(OBJECT_TYPE_CODE)');
1046           x_return_status := FND_API.G_RET_STS_ERROR;
1047       END IF;
1048 
1049       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1050       THEN
1051           -- Hint: Validate data
1052           -- IF p_OBJECT_TYPE_CODE is not NULL and p_OBJECT_TYPE_CODE <> G_MISS_CHAR
1053           -- verify if data is valid
1054           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1055           NULL;
1056 
1057           select count(*) into l_count
1058           from aso_lookups
1059           where lookup_type = 'ASO_RELATED_OBJECT_TYPE'
1060           and lookup_code = p_OBJECT_TYPE_CODE;
1061 
1062           IF l_count < 1 THEN
1063            x_return_status := FND_API.G_RET_STS_ERROR;
1064           END IF;
1065 
1066       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1067       THEN
1068           -- Hint: Validate data
1069           -- IF p_OBJECT_TYPE_CODE <> G_MISS_CHAR
1070           -- verify if data is valid
1071           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1072           NULL;
1073 
1074            IF p_OBJECT_TYPE_CODE <> FND_API.G_MISS_CHAR THEN
1075              select count(*) into l_count
1076              from aso_lookups
1077              where lookup_type = 'ASO_RELATED_OBJECT_TYPE'
1078              and lookup_code = p_OBJECT_TYPE_CODE;
1079 
1080              IF l_count < 1 THEN
1081                x_return_status := FND_API.G_RET_STS_ERROR;
1082              END IF;
1083            END IF;
1084     END IF;
1085 
1086       -- Standard call to get message count and if count is 1, get message info.
1087       FND_MSG_PUB.Count_And_Get
1088       (  p_count          =>   x_msg_count,
1089          p_data           =>   x_msg_data
1090       );
1091 
1092 END Validate_OBJECT_TYPE_CODE;
1093 
1094 
1095 PROCEDURE Validate_OBJECT_ID (
1096     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1097     P_Validation_mode            IN   VARCHAR2,
1098     P_OBJECT_ID                IN   NUMBER,
1099     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1100     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
1101     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
1102     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1103     )
1104 IS
1105 BEGIN
1106 
1107       -- Initialize message list if p_init_msg_list is set to TRUE.
1108       IF FND_API.to_Boolean( p_init_msg_list )
1109       THEN
1110           FND_MSG_PUB.initialize;
1111       END IF;
1112 
1113 
1114       -- Initialize API return status to SUCCESS
1115       x_return_status := FND_API.G_RET_STS_SUCCESS;
1116 
1117       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1121           -- verify if data is valid
1118       THEN
1119           -- Hint: Validate data
1120           -- IF p_OBJECT_ID is not NULL and p_OBJECT_ID <> G_MISS_CHAR
1122           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1123           NULL;
1124       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1125       THEN
1126           -- Hint: Validate data
1127           -- IF p_OBJECT_ID <> G_MISS_CHAR
1128           -- verify if data is valid
1129           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1130           NULL;
1131       END IF;
1132 
1133       -- Standard call to get message count and if count is 1, get message info.
1134       FND_MSG_PUB.Count_And_Get
1135       (  p_count          =>   x_msg_count,
1136          p_data           =>   x_msg_data
1137       );
1138 
1139 END Validate_OBJECT_ID;
1140 
1141 
1142 PROCEDURE Validate_RLTSHIP_TYPE_CODE (
1143     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1144     P_Validation_mode            IN   VARCHAR2,
1145     P_RELATIONSHIP_TYPE_CODE                IN   VARCHAR2,
1146     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1147     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
1148     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
1149     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1150     )
1151 IS
1152 l_count NUMBER;
1153 BEGIN
1154 
1155       -- Initialize message list if p_init_msg_list is set to TRUE.
1156       IF FND_API.to_Boolean( p_init_msg_list )
1157       THEN
1158           FND_MSG_PUB.initialize;
1159       END IF;
1160 
1161 
1162       -- Initialize API return status to SUCCESS
1163       x_return_status := FND_API.G_RET_STS_SUCCESS;
1164 
1165       -- validate NOT NULL column
1166       IF(p_RELATIONSHIP_TYPE_CODE is NULL)
1167       THEN
1168           --ASO_UTILITY_PVT.Print('ERROR', 'Private related_obj API: -Violate NOT NULL constraint(RELATIONSHIP_TYPE_CODE)');
1169           x_return_status := FND_API.G_RET_STS_ERROR;
1170       END IF;
1171 
1172       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1173       THEN
1174           -- Hint: Validate data
1175           -- IF p_RELATIONSHIP_TYPE_CODE is not NULL and p_RELATIONSHIP_TYPE_CODE <> G_MISS_CHAR
1176           -- verify if data is valid
1177           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1178           NULL;
1179 
1180           SELECT count(*) into l_count
1181           from aso_lookups
1182           where lookup_type = 'ASO_OBJECT_RELATIONSHIP_TYPE'
1183           and lookup_code = p_RELATIONSHIP_TYPE_CODE;
1184 
1185           IF l_count < 1 THEN
1186            x_return_status := FND_API.G_RET_STS_ERROR;
1187           END IF;
1188 
1189       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1190       THEN
1191           -- Hint: Validate data
1192           -- IF p_RELATIONSHIP_TYPE_CODE <> G_MISS_CHAR
1193           -- verify if data is valid
1194           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1195           NULL;
1196 
1197            IF p_RELATIONSHIP_TYPE_CODE <> FND_API.G_MISS_CHAR THEN
1198                SELECT count(*) into l_count
1199           	from aso_lookups
1200           	where lookup_type = 'ASO_OBJECT_RELATIONSHIP_TYPE'
1201           	and lookup_code = p_RELATIONSHIP_TYPE_CODE;
1202 
1203           	IF l_count < 1 THEN
1204            	x_return_status := FND_API.G_RET_STS_ERROR;
1205           	END IF;
1206            END IF;
1207       END IF;
1208 
1209       -- Standard call to get message count and if count is 1, get message info.
1210       FND_MSG_PUB.Count_And_Get
1211       (  p_count          =>   x_msg_count,
1212          p_data           =>   x_msg_data
1213       );
1214 
1215 END Validate_RLTSHIP_TYPE_CODE;
1216 
1217 
1218 PROCEDURE Validate_RECIPROCAL_FLAG (
1219     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1220     P_Validation_mode            IN   VARCHAR2,
1221     P_RECIPROCAL_FLAG                IN   VARCHAR2,
1222     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1223     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
1224     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
1225     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1226     )
1227 IS
1228 BEGIN
1229 
1230       -- Initialize message list if p_init_msg_list is set to TRUE.
1231       IF FND_API.to_Boolean( p_init_msg_list )
1232       THEN
1233           FND_MSG_PUB.initialize;
1234       END IF;
1235 
1236 
1237       -- Initialize API return status to SUCCESS
1238       x_return_status := FND_API.G_RET_STS_SUCCESS;
1239 
1240       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1241       THEN
1242           -- Hint: Validate data
1243           -- IF p_RECIPROCAL_FLAG is not NULL and p_RECIPROCAL_FLAG <> G_MISS_CHAR
1244           -- verify if data is valid
1245           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1246           NULL;
1247             IF (p_RECIPROCAL_FLAG <> FND_API.G_TRUE or p_RECIPROCAL_FLAG <> FND_API.G_FALSE) THEN
1248               x_return_status := FND_API.G_RET_STS_ERROR;
1249             END IF;
1250 
1251       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1252       THEN
1253           -- Hint: Validate data
1254           -- IF p_RECIPROCAL_FLAG <> G_MISS_CHAR
1255           -- verify if data is valid
1259           IF (p_RECIPROCAL_FLAG <> FND_API.G_TRUE or p_RECIPROCAL_FLAG <> FND_API.G_FALSE) THEN
1256           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1257           NULL;
1258           IF p_RECIPROCAL_FLAG <> FND_API.G_MISS_CHAR THEN
1260               x_return_status := FND_API.G_RET_STS_ERROR;
1261             END IF;
1262           END IF;
1263       END IF;
1264 
1265       -- Standard call to get message count and if count is 1, get message info.
1266       FND_MSG_PUB.Count_And_Get
1267       (  p_count          =>   x_msg_count,
1268          p_data           =>   x_msg_data
1269       );
1270 
1271 END Validate_RECIPROCAL_FLAG;
1272 
1273 
1274 PROCEDURE Validate_QUOTE_OBJECT_CODE (
1275     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1276     P_Validation_mode            IN   VARCHAR2,
1277     P_QUOTE_OBJECT_CODE                IN   NUMBER,
1278     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY /* file.sql.39 change */     ASO_UTILITY_PVT.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1279     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
1280     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
1281     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1282     )
1283 IS
1284 BEGIN
1285 
1286       -- Initialize message list if p_init_msg_list is set to TRUE.
1287       IF FND_API.to_Boolean( p_init_msg_list )
1288       THEN
1289           FND_MSG_PUB.initialize;
1290       END IF;
1291 
1292 
1293       -- Initialize API return status to SUCCESS
1294       x_return_status := FND_API.G_RET_STS_SUCCESS;
1295 
1296       -- validate NOT NULL column
1297       IF(p_QUOTE_OBJECT_CODE is NULL)
1298       THEN
1299           --ASO_UTILITY_PVT.Print('ERROR', 'Private related_obj API: -Violate NOT NULL constraint(QUOTE_OBJECT_CODE)');
1300           x_return_status := FND_API.G_RET_STS_ERROR;
1301       END IF;
1302 
1303       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1304       THEN
1305           -- Hint: Validate data
1306           -- IF p_QUOTE_OBJECT_CODE is not NULL and p_QUOTE_OBJECT_CODE <> G_MISS_CHAR
1307           -- verify if data is valid
1308           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1309           NULL;
1310       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1311       THEN
1312           -- Hint: Validate data
1313           -- IF p_QUOTE_OBJECT_CODE <> G_MISS_CHAR
1314           -- verify if data is valid
1315           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1316           NULL;
1317       END IF;
1318 
1319       -- Standard call to get message count and if count is 1, get message info.
1320       FND_MSG_PUB.Count_And_Get
1321       (  p_count          =>   x_msg_count,
1322          p_data           =>   x_msg_data
1323       );
1324 
1325 END Validate_QUOTE_OBJECT_CODE;
1326 
1327 
1328 -- Hint: inter-field level validation can be added here.
1329 -- Hint: If p_validation_mode = ASO_UTILITY_PVT.G_VALIDATE_UPDATE, we should use cursor
1330 --       to get old values for all fields used in inter-field validation and set all G_MISS_XXX fields to original value
1331 --       stored in database table.
1332 PROCEDURE Validate_RELATED_OBJ_rec(
1333     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1334     P_Validation_mode            IN   VARCHAR2,
1335     P_RELATED_OBJ_Rec     IN    ASO_QUOTE_PUB.RELATED_OBJ_Rec_Type,
1336     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
1337     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
1338     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1339     )
1340 IS
1341 l_count NUMBER;
1342 BEGIN
1343 
1344       -- Initialize message list if p_init_msg_list is set to TRUE.
1345       IF FND_API.to_Boolean( p_init_msg_list )
1346       THEN
1347           FND_MSG_PUB.initialize;
1348       END IF;
1349 
1350 
1351       -- Initialize API return status to SUCCESS
1352       x_return_status := FND_API.G_RET_STS_SUCCESS;
1353 
1354       -- Hint: Validate data
1355       -- If data not valid
1356       -- THEN
1357       -- x_return_status := FND_API.G_RET_STS_ERROR;
1358 
1359          IF  P_RELATED_OBJ_Rec.quote_object_type_code = 'MODEL' then
1360            select count(*) into l_count
1361            from aso_quote_headers_all
1362            where quote_header_id = P_RELATED_OBJ_Rec.quote_object_id;
1363 
1364            IF l_count < 1 THEN
1365              x_return_status := FND_API.G_RET_STS_ERROR;
1366            END IF;
1367 
1368          ELSIF P_RELATED_OBJ_Rec.quote_object_type_code = 'LINE' THEN
1369             select count(*) into l_count
1370            from aso_quote_lines_all
1371            where quote_line_id = P_RELATED_OBJ_Rec.quote_object_id;
1372 
1373            IF l_count < 1 THEN
1374              x_return_status := FND_API.G_RET_STS_ERROR;
1375            END IF;
1376 
1377          ELSIF P_RELATED_OBJ_Rec.quote_object_type_code = 'SHIPMENT' THEN
1378            select count(*) into l_count
1379            from aso_shipments
1380            where shipment_id = P_RELATED_OBJ_Rec.quote_object_id;
1381 
1382            IF l_count < 1 THEN
1383              x_return_status := FND_API.G_RET_STS_ERROR;
1384            END IF;
1385          END IF;
1386 
1387       -- Debug Message
1388       --ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'API_INVALID_RECORD');
1389 
1390       -- Standard call to get message count and if count is 1, get message info.
1391       FND_MSG_PUB.Count_And_Get
1392       (  p_count          =>   x_msg_count,
1393          p_data           =>   x_msg_data
1394       );
1395 
1399     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1396 END Validate_RELATED_OBJ_Rec;
1397 
1398 PROCEDURE Validate_related_obj(
1400     P_Validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1401     P_Validation_mode            IN   VARCHAR2,
1402     P_RELATED_OBJ_Rec     IN     ASO_QUOTE_PUB.RELATED_OBJ_Rec_Type,
1403     X_Return_Status              OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
1404     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */   NUMBER,
1405     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1406     )
1407 IS
1408 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_related_obj';
1409  BEGIN
1410 
1411       -- Debug Message
1412       --ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
1413 
1414 
1415       -- Initialize API return status to SUCCESS
1416       x_return_status := FND_API.G_RET_STS_SUCCESS;
1417 
1418       IF (p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
1419           -- Hint: We provide validation procedure for every column. Developer should delete
1420           --       unnecessary validation procedures.
1421           Validate_RELATED_OBJECT_ID(
1422               p_init_msg_list          => FND_API.G_FALSE,
1423               p_validation_mode        => p_validation_mode,
1424               p_RELATED_OBJECT_ID   => P_RELATED_OBJ_Rec.RELATED_OBJECT_ID,
1425               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1426               x_return_status          => x_return_status,
1427               x_msg_count              => x_msg_count,
1428               x_msg_data               => x_msg_data);
1429           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1430               raise FND_API.G_EXC_ERROR;
1431           END IF;
1432 
1433           Validate_REQUEST_ID(
1434               p_init_msg_list          => FND_API.G_FALSE,
1435               p_validation_mode        => p_validation_mode,
1436               p_REQUEST_ID   => P_RELATED_OBJ_Rec.REQUEST_ID,
1437               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1438               x_return_status          => x_return_status,
1439               x_msg_count              => x_msg_count,
1440               x_msg_data               => x_msg_data);
1441           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1442               raise FND_API.G_EXC_ERROR;
1443           END IF;
1444 
1445           Validate_PROGRAM_APPL_ID(
1446               p_init_msg_list          => FND_API.G_FALSE,
1447               p_validation_mode        => p_validation_mode,
1448               p_PROGRAM_APPLICATION_ID   => P_RELATED_OBJ_Rec.PROGRAM_APPLICATION_ID,
1449               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1450               x_return_status          => x_return_status,
1451               x_msg_count              => x_msg_count,
1452               x_msg_data               => x_msg_data);
1453           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1454               raise FND_API.G_EXC_ERROR;
1455           END IF;
1456 
1457           Validate_PROGRAM_ID(
1458               p_init_msg_list          => FND_API.G_FALSE,
1459               p_validation_mode        => p_validation_mode,
1460               p_PROGRAM_ID   => P_RELATED_OBJ_Rec.PROGRAM_ID,
1461               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1462               x_return_status          => x_return_status,
1463               x_msg_count              => x_msg_count,
1464               x_msg_data               => x_msg_data);
1465           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1466               raise FND_API.G_EXC_ERROR;
1467           END IF;
1468 
1469           Validate_PROGRAM_UPDATE_DATE(
1470               p_init_msg_list          => FND_API.G_FALSE,
1471               p_validation_mode        => p_validation_mode,
1472               p_PROGRAM_UPDATE_DATE   => P_RELATED_OBJ_Rec.PROGRAM_UPDATE_DATE,
1473               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1474               x_return_status          => x_return_status,
1475               x_msg_count              => x_msg_count,
1476               x_msg_data               => x_msg_data);
1477           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1478               raise FND_API.G_EXC_ERROR;
1479           END IF;
1480 
1481           Validate_QTE_OBJ_TYPE_CODE(
1482               p_init_msg_list          => FND_API.G_FALSE,
1483               p_validation_mode        => p_validation_mode,
1484               p_QUOTE_OBJECT_TYPE_CODE   => P_RELATED_OBJ_Rec.QUOTE_OBJECT_TYPE_CODE,
1485               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1486               x_return_status          => x_return_status,
1487               x_msg_count              => x_msg_count,
1488               x_msg_data               => x_msg_data);
1489           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1490               raise FND_API.G_EXC_ERROR;
1491           END IF;
1492 
1493           Validate_QUOTE_OBJECT_ID(
1494               p_init_msg_list          => FND_API.G_FALSE,
1495               p_validation_mode        => p_validation_mode,
1496               p_QUOTE_OBJECT_ID   => P_RELATED_OBJ_Rec.QUOTE_OBJECT_ID,
1497               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1498               x_return_status          => x_return_status,
1499               x_msg_count              => x_msg_count,
1503           END IF;
1500               x_msg_data               => x_msg_data);
1501           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1502               raise FND_API.G_EXC_ERROR;
1504 
1505           Validate_OBJECT_TYPE_CODE(
1506               p_init_msg_list          => FND_API.G_FALSE,
1507               p_validation_mode        => p_validation_mode,
1508               p_OBJECT_TYPE_CODE   => P_RELATED_OBJ_Rec.OBJECT_TYPE_CODE,
1509               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1510               x_return_status          => x_return_status,
1511               x_msg_count              => x_msg_count,
1512               x_msg_data               => x_msg_data);
1513           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1514               raise FND_API.G_EXC_ERROR;
1515           END IF;
1516 
1517           Validate_OBJECT_ID(
1518               p_init_msg_list          => FND_API.G_FALSE,
1519               p_validation_mode        => p_validation_mode,
1520               p_OBJECT_ID   => P_RELATED_OBJ_Rec.OBJECT_ID,
1521               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1522               x_return_status          => x_return_status,
1523               x_msg_count              => x_msg_count,
1524               x_msg_data               => x_msg_data);
1525           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1526               raise FND_API.G_EXC_ERROR;
1527           END IF;
1528 
1529           Validate_RLTSHIP_TYPE_CODE(
1530               p_init_msg_list          => FND_API.G_FALSE,
1531               p_validation_mode        => p_validation_mode,
1532               p_RELATIONSHIP_TYPE_CODE   => P_RELATED_OBJ_Rec.RELATIONSHIP_TYPE_CODE,
1533               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1534               x_return_status          => x_return_status,
1535               x_msg_count              => x_msg_count,
1536               x_msg_data               => x_msg_data);
1537           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1538               raise FND_API.G_EXC_ERROR;
1539           END IF;
1540 
1541           Validate_RECIPROCAL_FLAG(
1542               p_init_msg_list          => FND_API.G_FALSE,
1543               p_validation_mode        => p_validation_mode,
1544               p_RECIPROCAL_FLAG   => P_RELATED_OBJ_Rec.RECIPROCAL_FLAG,
1545               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1546               x_return_status          => x_return_status,
1547               x_msg_count              => x_msg_count,
1548               x_msg_data               => x_msg_data);
1549           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1550               raise FND_API.G_EXC_ERROR;
1551           END IF;
1552 
1553           Validate_QUOTE_OBJECT_CODE(
1554               p_init_msg_list          => FND_API.G_FALSE,
1555               p_validation_mode        => p_validation_mode,
1556               p_QUOTE_OBJECT_CODE   => P_RELATED_OBJ_Rec.QUOTE_OBJECT_CODE,
1557               -- Hint: You may add x_item_property_rec as one of your OUT NOCOPY /* file.sql.39 change */ parameter if you'd like to pass back item property.
1558               x_return_status          => x_return_status,
1559               x_msg_count              => x_msg_count,
1560               x_msg_data               => x_msg_data);
1561           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1562               raise FND_API.G_EXC_ERROR;
1563           END IF;
1564 
1565       END IF;
1566 
1567       IF (p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_RECORD) THEN
1568           -- Hint: Inter-field level validation can be added here
1569           -- invoke record level validation procedures
1570           Validate_RELATED_OBJ_Rec(
1571               p_init_msg_list          => FND_API.G_FALSE,
1572               p_validation_mode        => p_validation_mode,
1573           P_RELATED_OBJ_Rec     =>    P_RELATED_OBJ_Rec,
1574               x_return_status          => x_return_status,
1575               x_msg_count              => x_msg_count,
1576               x_msg_data               => x_msg_data);
1577 
1578           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1579               raise FND_API.G_EXC_ERROR;
1580           END IF;
1581       END IF;
1582 
1583       IF (p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_RECORD) THEN
1584           -- invoke inter-record level validation procedures
1585           NULL;
1586       END IF;
1587 
1588       IF (p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_INTER_ENTITY) THEN
1589           -- invoke inter-entity level validation procedures
1590           NULL;
1591       END IF;
1592 
1593 
1594       -- Debug Message
1595       --ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
1596 
1597 END Validate_related_obj;
1598 
1599 End aso_RELATED_OBJ_PVT;