DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_HEADER_RLTSHIP_PVT

Source


1 PACKAGE BODY ASO_HEADER_RLTSHIP_PVT as
2 /* $Header: asovhedb.pls 120.1 2005/06/29 12:41:41 appldev ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_HEADER_RLTSHIP_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_HEADER_RLTSHIP_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asovhedb.pls';
13 PROCEDURE Create_header_rltship(
14     P_Api_Version_Number         IN   NUMBER,
15     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
16     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
17     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
18     P_HEADER_RLTSHIP_Rec     IN    ASO_QUOTE_PUB.HEADER_RLTSHIP_Rec_Type  := ASO_QUOTE_PUB.G_MISS_HEADER_RLTSHIP_REC,
19     X_HEADER_RELATIONSHIP_ID     OUT NOCOPY /* file.sql.39 change */    NUMBER,
20     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
21     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
22     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
23     )
24 IS
25 l_api_name                CONSTANT VARCHAR2(30) := 'Create_header_rltship';
26 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
27 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
28 l_api_version_number      CONSTANT NUMBER   := 1.0;
29 l_return_status_full        VARCHAR2(1);
30 --l_identity_sales_member_rec ASO_SALES_MEMBER_PUB.Sales_member_rec_Type;
31  BEGIN
32       -- Standard Start of API savepoint
33       SAVEPOINT CREATE_HEADER_RLTSHIP_PVT;
34 
35       -- Standard call to check for call compatibility.
36       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
37                          	           p_api_version_number,
38                                            l_api_name,
39                                            G_PKG_NAME)
40       THEN
41           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
42       END IF;
43 
44 
45       -- Initialize message list if p_init_msg_list is set to TRUE.
46       IF FND_API.to_Boolean( p_init_msg_list )
47       THEN
48           FND_MSG_PUB.initialize;
49       END IF;
50 
51 
52 
53       -- Initialize API return status to SUCCESS
54       x_return_status := FND_API.G_RET_STS_SUCCESS;
55 
56       --
57       -- API body
58       --
59 
60       -- ******************************************************************
61       -- Validate Environment
62       -- ******************************************************************
63       IF FND_GLOBAL.User_Id IS NULL
64       THEN
65           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
66           THEN
67               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
68               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
69               FND_MSG_PUB.ADD;
70           END IF;
71           RAISE FND_API.G_EXC_ERROR;
72       END IF;
73 
74 
75 
76       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
77       THEN
78 
79           -- Invoke validation procedures
80           Validate_header_rltship(
81               p_init_msg_list    => FND_API.G_FALSE,
82               p_validation_level => p_validation_level,
83               p_validation_mode  => ASO_UTILITY_PVT.G_CREATE,
84               P_HEADER_RLTSHIP_Rec  =>  P_HEADER_RLTSHIP_Rec,
85               x_return_status    => x_return_status,
86               x_msg_count        => x_msg_count,
87               x_msg_data         => x_msg_data);
88 
89       END IF;
90 
91       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
92           RAISE FND_API.G_EXC_ERROR;
93       END IF;
94 
95 
96       -- Invoke table handler(ASO_HEADER_RELATIONSHIPS_PKG.Insert_Row)
97       ASO_HEADER_RELATIONSHIPS_PKG.Insert_Row(
98           px_HEADER_RELATIONSHIP_ID  => x_HEADER_RELATIONSHIP_ID,
99           p_CREATION_DATE  => SYSDATE,
100           p_CREATED_BY  => G_USER_ID,
101           p_LAST_UPDATE_DATE  => SYSDATE,
102           p_LAST_UPDATED_BY  => G_USER_ID,
103           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
104           p_REQUEST_ID  => p_HEADER_RLTSHIP_rec.REQUEST_ID,
105           p_PROGRAM_APPLICATION_ID  => p_HEADER_RLTSHIP_rec.PROGRAM_APPLICATION_ID,
106           p_PROGRAM_ID  => p_HEADER_RLTSHIP_rec.PROGRAM_ID,
107           p_PROGRAM_UPDATE_DATE  => p_HEADER_RLTSHIP_rec.PROGRAM_UPDATE_DATE,
108           p_QUOTE_HEADER_ID  => p_HEADER_RLTSHIP_rec.QUOTE_HEADER_ID,
109           p_RELATED_HEADER_ID  => p_HEADER_RLTSHIP_rec.RELATED_HEADER_ID,
110           p_RELATIONSHIP_TYPE_CODE  => p_HEADER_RLTSHIP_rec.RELATIONAL_TYPE_CODE,
111           p_RECIPROCAL_FLAG  => p_HEADER_RLTSHIP_rec.RECIPROCAL_FLAG,
112 		p_OBJECT_VERSION_NUMBER => p_HEADER_RLTSHIP_rec.OBJECT_VERSION_NUMBER
113 		);
114 
115       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
116           RAISE FND_API.G_EXC_ERROR;
117       END IF;
118 
119       --
120       -- End of API body
121       --
122 
123       -- Standard check for p_commit
124       IF FND_API.to_Boolean( p_commit )
125       THEN
126           COMMIT WORK;
127       END IF;
128 
129 
130       -- Standard call to get message count and if count is 1, get message info.
131       FND_MSG_PUB.Count_And_Get
132       (  p_count          =>   x_msg_count,
133          p_data           =>   x_msg_data
134       );
135         EXCEPTION
136           WHEN FND_API.G_EXC_ERROR THEN
137               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
138                    P_API_NAME => L_API_NAME
139                   ,P_PKG_NAME => G_PKG_NAME
140                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
141                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
142                   ,X_MSG_COUNT => X_MSG_COUNT
143                   ,X_MSG_DATA => X_MSG_DATA
144                   ,X_RETURN_STATUS => X_RETURN_STATUS);
145 
146           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
147               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
148                    P_API_NAME => L_API_NAME
149                   ,P_PKG_NAME => G_PKG_NAME
150                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
151                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
152                   ,X_MSG_COUNT => X_MSG_COUNT
153                   ,X_MSG_DATA => X_MSG_DATA
154                   ,X_RETURN_STATUS => X_RETURN_STATUS);
155 
156           WHEN OTHERS THEN
157               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
158                    P_API_NAME => L_API_NAME
159                   ,P_PKG_NAME => G_PKG_NAME
160                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
161                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
162                   ,X_MSG_COUNT => X_MSG_COUNT
163                   ,X_MSG_DATA => X_MSG_DATA
164                   ,X_RETURN_STATUS => X_RETURN_STATUS);
165 
166 End Create_header_rltship;
167 
168 PROCEDURE Update_header_rltship(
169     P_Api_Version_Number         IN   NUMBER,
170     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
171     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
172     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
173     P_HEADER_RLTSHIP_Rec     IN    ASO_quote_PUB.HEADER_RLTSHIP_Rec_Type,
174     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
175     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
176     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
177     )
178 IS
179 
180 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
181 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
182 Cursor C_Get_header_rltship(P_HEADER_RELATIONSHIP_ID Number) IS
183     Select --rowid,
184            HEADER_RELATIONSHIP_ID,
185            CREATION_DATE,
186            CREATED_BY,
187            LAST_UPDATE_DATE,
188            LAST_UPDATED_BY,
189            LAST_UPDATE_LOGIN,
190            REQUEST_ID,
191            PROGRAM_APPLICATION_ID,
192            PROGRAM_ID,
193            PROGRAM_UPDATE_DATE,
194            QUOTE_HEADER_ID,
195            RELATED_HEADER_ID,
196            RELATIONSHIP_TYPE_CODE,
197            RECIPROCAL_FLAG
198     From  ASO_HEADER_RELATIONSHIPS
199     where HEADER_RELATIONSHIP_ID = P_HEADER_RELATIONSHIP_ID;
200 
201 l_api_name                CONSTANT VARCHAR2(30) := 'Update_header_rltship';
202 l_api_version_number      CONSTANT NUMBER   := 1.0;
203 -- Local Variables
204 --l_identity_sales_member_rec   ASO_SALES_MEMBER_PUB.Sales_member_rec_Type;
205 l_ref_HEADER_RLTSHIP_rec  ASO_quote_PUB.HEADER_RLTSHIP_Rec_Type;
206 l_tar_HEADER_RLTSHIP_rec  ASO_quote_PUB.HEADER_RLTSHIP_Rec_Type := P_HEADER_RLTSHIP_Rec;
207 l_rowid  ROWID;
208  BEGIN
209       -- Standard Start of API savepoint
210       SAVEPOINT UPDATE_HEADER_RLTSHIP_PVT;
211 
212       -- Standard call to check for call compatibility.
213       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
214                          	             p_api_version_number,
215                                            l_api_name,
216                                            G_PKG_NAME)
217       THEN
218           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
219       END IF;
220 
221 
222       -- Initialize message list if p_init_msg_list is set to TRUE.
223       IF FND_API.to_Boolean( p_init_msg_list )
224       THEN
225           FND_MSG_PUB.initialize;
226       END IF;
227 
228 
229 
230       -- Initialize API return status to SUCCESS
231       x_return_status := FND_API.G_RET_STS_SUCCESS;
232 
233       --
234       -- Api body
235       --
236 
237 
238       Open C_Get_header_rltship( l_tar_HEADER_RLTSHIP_rec.HEADER_RELATIONSHIP_ID);
239 
240       Fetch C_Get_header_rltship into
241               -- l_rowid,
242                l_ref_HEADER_RLTSHIP_rec.HEADER_RELATIONSHIP_ID,
243                l_ref_HEADER_RLTSHIP_rec.CREATION_DATE,
244                l_ref_HEADER_RLTSHIP_rec.CREATED_BY,
245                l_ref_HEADER_RLTSHIP_rec.LAST_UPDATE_DATE,
246                l_ref_HEADER_RLTSHIP_rec.LAST_UPDATED_BY,
247                l_ref_HEADER_RLTSHIP_rec.LAST_UPDATE_LOGIN,
248                l_ref_HEADER_RLTSHIP_rec.REQUEST_ID,
249                l_ref_HEADER_RLTSHIP_rec.PROGRAM_APPLICATION_ID,
250                l_ref_HEADER_RLTSHIP_rec.PROGRAM_ID,
251                l_ref_HEADER_RLTSHIP_rec.PROGRAM_UPDATE_DATE,
252                l_ref_HEADER_RLTSHIP_rec.QUOTE_HEADER_ID,
253                l_ref_HEADER_RLTSHIP_rec.RELATED_HEADER_ID,
254                l_ref_HEADER_RLTSHIP_rec.RELATIONAL_TYPE_CODE,
255                l_ref_HEADER_RLTSHIP_rec.RECIPROCAL_FLAG;
256 
257        If ( C_Get_header_rltship%NOTFOUND) Then
258            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
259            THEN
260                FND_MESSAGE.Set_Name('ASO', 'API_MISSING_UPDATE_TARGET');
261                FND_MESSAGE.Set_Token ('INFO', 'header_rltship', FALSE);
262                FND_MSG_PUB.Add;
263            END IF;
264            raise FND_API.G_EXC_ERROR;
265        END IF;
266        Close     C_Get_header_rltship;
267 
268       If (l_tar_HEADER_RLTSHIP_rec.last_update_date is NULL or
269           l_tar_HEADER_RLTSHIP_rec.last_update_date = FND_API.G_MISS_Date ) Then
270           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
271           THEN
272               FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
273               FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
274               FND_MSG_PUB.ADD;
275           END IF;
276           raise FND_API.G_EXC_ERROR;
277       End if;
278       -- Check Whether record has been changed by someone else
279       If (l_tar_HEADER_RLTSHIP_rec.last_update_date <> l_ref_HEADER_RLTSHIP_rec.last_update_date) Then
280           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
281           THEN
282               FND_MESSAGE.Set_Name('ASO', 'API_RECORD_CHANGED');
283               FND_MESSAGE.Set_Token('INFO', 'header_rltship', FALSE);
284               FND_MSG_PUB.ADD;
285           END IF;
286           raise FND_API.G_EXC_ERROR;
287       End if;
288 
289       -- Invoke table handler(ASO_HEADER_RELATIONSHIPS_PKG.Update_Row)
290       ASO_HEADER_RELATIONSHIPS_PKG.Update_Row(
291           p_HEADER_RELATIONSHIP_ID  => p_HEADER_RLTSHIP_rec.HEADER_RELATIONSHIP_ID,
292           p_CREATION_DATE  => SYSDATE,
293           p_CREATED_BY  => G_USER_ID,
294           p_LAST_UPDATE_DATE  => SYSDATE,
295           p_LAST_UPDATED_BY  => G_USER_ID,
296           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
297           p_REQUEST_ID  => p_HEADER_RLTSHIP_rec.REQUEST_ID,
298           p_PROGRAM_APPLICATION_ID  => p_HEADER_RLTSHIP_rec.PROGRAM_APPLICATION_ID,
299           p_PROGRAM_ID  => p_HEADER_RLTSHIP_rec.PROGRAM_ID,
300           p_PROGRAM_UPDATE_DATE  => p_HEADER_RLTSHIP_rec.PROGRAM_UPDATE_DATE,
301           p_QUOTE_HEADER_ID  => p_HEADER_RLTSHIP_rec.QUOTE_HEADER_ID,
302           p_RELATED_HEADER_ID  => p_HEADER_RLTSHIP_rec.RELATED_HEADER_ID,
303           p_RELATIONSHIP_TYPE_CODE  => p_HEADER_RLTSHIP_rec.RELATIONAL_TYPE_CODE,
304           p_RECIPROCAL_FLAG  => p_HEADER_RLTSHIP_rec.RECIPROCAL_FLAG,
305 		P_OBJECT_VERSION_NUMBER => p_HEADER_RLTSHIP_rec.OBJECT_VERSION_NUMBER
306 		);
307       --
308       -- End of API body.
309       --
310 
311       -- Standard check for p_commit
312       IF FND_API.to_Boolean( p_commit )
313       THEN
314           COMMIT WORK;
315       END IF;
316 
317 
318 
319       -- Standard call to get message count and if count is 1, get message info.
320       FND_MSG_PUB.Count_And_Get
321       (  p_count          =>   x_msg_count,
322          p_data           =>   x_msg_data
323       );
324            EXCEPTION
325           WHEN FND_API.G_EXC_ERROR THEN
326               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
327                    P_API_NAME => L_API_NAME
328                   ,P_PKG_NAME => G_PKG_NAME
329                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
330                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
331                   ,X_MSG_COUNT => X_MSG_COUNT
332                   ,X_MSG_DATA => X_MSG_DATA
333                   ,X_RETURN_STATUS => X_RETURN_STATUS);
334 
335           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
336               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
337                    P_API_NAME => L_API_NAME
338                   ,P_PKG_NAME => G_PKG_NAME
339                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
340                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
341                   ,X_MSG_COUNT => X_MSG_COUNT
342                   ,X_MSG_DATA => X_MSG_DATA
343                   ,X_RETURN_STATUS => X_RETURN_STATUS);
344 
345           WHEN OTHERS THEN
346               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
347                    P_API_NAME => L_API_NAME
348                   ,P_PKG_NAME => G_PKG_NAME
349                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
350                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
351                   ,X_MSG_COUNT => X_MSG_COUNT
352                   ,X_MSG_DATA => X_MSG_DATA
353                   ,X_RETURN_STATUS => X_RETURN_STATUS);
354 End Update_header_rltship;
355 
356 
357 
358 --   *******************************************************
359 --    Start of Comments
360 --   *******************************************************
361 --   API Name:  Delete_header_rltship
362 --   Type    :  Private
363 --   Pre-Req :
364 --   Parameters:
365 --   IN
366 --       p_api_version_number      IN   NUMBER     Required
367 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
368 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
369 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
370 --       p_identity_salesforce_id  IN   NUMBER     Optional  Default = NULL
371 --       P_HEADER_RLTSHIP_Rec     IN HEADER_RLTSHIP_Rec_Type  Required
372 --
373 --   OUT NOCOPY /* file.sql.39 change */  :
374 --       x_return_status           OUT NOCOPY /* file.sql.39 change */    VARCHAR2
375 --       x_msg_count               OUT NOCOPY /* file.sql.39 change */    NUMBER
376 --       x_msg_data                OUT NOCOPY /* file.sql.39 change */    VARCHAR2
377 PROCEDURE Delete_header_rltship(
378     P_Api_Version_Number         IN   NUMBER,
379     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
380     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
381     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
382     P_HEADER_RLTSHIP_id     IN  NUMBER,
383     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
384     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
385     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
386     )
387 IS
388 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_header_rltship';
389 l_api_version_number      CONSTANT NUMBER   := 1.0;
390  BEGIN
391       -- Standard Start of API savepoint
392       SAVEPOINT DELETE_HEADER_RLTSHIP_PVT;
393 
394       -- Standard call to check for call compatibility.
395       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
396                          	           p_api_version_number,
397                                            l_api_name,
398                                            G_PKG_NAME)
399       THEN
400           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
401       END IF;
402 
403 
404       -- Initialize message list if p_init_msg_list is set to TRUE.
405       IF FND_API.to_Boolean( p_init_msg_list )
406       THEN
407           FND_MSG_PUB.initialize;
408       END IF;
409 
410       -- Initialize API return status to SUCCESS
411       x_return_status := FND_API.G_RET_STS_SUCCESS;
412 
413       --
414       -- Api body
415       --
416 
417       -- Invoke table handler(ASO_HEADER_RELATIONSHIPS_PKG.Delete_Row)
418       ASO_HEADER_RELATIONSHIPS_PKG.Delete_Row(
419           p_HEADER_RELATIONSHIP_ID  => p_HEADER_RLTSHIP_ID);
420       --
421       -- End of API body
422       --
423 
424       -- Standard check for p_commit
425       IF FND_API.to_Boolean( p_commit )
426       THEN
427           COMMIT WORK;
428       END IF;
429 
430 
431 
432       -- Standard call to get message count and if count is 1, get message info.
433       FND_MSG_PUB.Count_And_Get
434       (  p_count          =>   x_msg_count,
435          p_data           =>   x_msg_data
436       );
437 
438 
439             EXCEPTION
440           WHEN FND_API.G_EXC_ERROR THEN
441               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
442                    P_API_NAME => L_API_NAME
443                   ,P_PKG_NAME => G_PKG_NAME
444                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
445                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
446                   ,X_MSG_COUNT => X_MSG_COUNT
447                   ,X_MSG_DATA => X_MSG_DATA
448                   ,X_RETURN_STATUS => X_RETURN_STATUS);
449 
450           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
451               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
452                    P_API_NAME => L_API_NAME
453                   ,P_PKG_NAME => G_PKG_NAME
454                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
455                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
456                   ,X_MSG_COUNT => X_MSG_COUNT
457                   ,X_MSG_DATA => X_MSG_DATA
458                   ,X_RETURN_STATUS => X_RETURN_STATUS);
459 
460           WHEN OTHERS THEN
461               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
462                    P_API_NAME => L_API_NAME
463                   ,P_PKG_NAME => G_PKG_NAME
464                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
465                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
466                   ,X_MSG_COUNT => X_MSG_COUNT
467                   ,X_MSG_DATA => X_MSG_DATA
468                   ,X_RETURN_STATUS => X_RETURN_STATUS);
469 End Delete_header_rltship;
470 
471 PROCEDURE Delete_header_rltship(
472     P_Api_Version_Number         IN   NUMBER,
473     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
474     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
475     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
476     P_HEADER_id                    IN  NUMBER,
477     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
478     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
479     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
480     )
481 IS
482 CURSOR related_headers(p_header_id NUMBER) IS
483  SELECT header_relationship_id FROM
484  ASO_HEADER_RELATIONSHIPS
485  WHERE QUOTE_HEADER_ID = p_header_id
486  OR RELATED_HEADER_ID = p_header_id;
487 
488 
489 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_header_rltship';
490 l_api_version_number      CONSTANT NUMBER   := 1.0;
491 BEGIN
492   -- Standard Start of API savepoint
493       SAVEPOINT DELETE_HEADER_RLTSHIP_PVT;
494 
495       -- Standard call to check for call compatibility.
496       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
497                          	           p_api_version_number,
498                                            l_api_name,
499                                            G_PKG_NAME)
500       THEN
501           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
502       END IF;
503 
504 
505       -- Initialize message list if p_init_msg_list is set to TRUE.
506       IF FND_API.to_Boolean( p_init_msg_list )
507       THEN
508           FND_MSG_PUB.initialize;
509       END IF;
510 
511 
512       -- Initialize API return status to SUCCESS
513       x_return_status := FND_API.G_RET_STS_SUCCESS;
514 
515       --
516       -- Api body
517       --
518        FOR i in related_headers(p_header_id) LOOP
519          Delete_header_rltship(
520             P_Api_Version_Number     => 1.0,
521             p_validation_level        => p_validation_level,
522             P_HEADER_RLTSHIP_id    => i.header_relationship_id,
523     	    X_Return_Status       => x_return_status,
524     	    X_Msg_Count           => x_msg_count,
525     	    X_Msg_Data            => x_msg_data
526     ) ;
527      IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
528           RAISE FND_API.G_EXC_ERROR;
529       END IF;
530     END LOOP;
531 
532      -- Standard check for p_commit
533       IF FND_API.to_Boolean( p_commit )
534       THEN
535           COMMIT WORK;
536       END IF;
537 
538 
539     -- Standard call to get message count and if count is 1, get message info.
540       FND_MSG_PUB.Count_And_Get
541       (  p_count          =>   x_msg_count,
542          p_data           =>   x_msg_data
543       );
544 
545  EXCEPTION
546           WHEN FND_API.G_EXC_ERROR THEN
547               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
548                    P_API_NAME => L_API_NAME
549                   ,P_PKG_NAME => G_PKG_NAME
550                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
551                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
552                   ,X_MSG_COUNT => X_MSG_COUNT
553                   ,X_MSG_DATA => X_MSG_DATA
554                   ,X_RETURN_STATUS => X_RETURN_STATUS);
555 
556           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
557               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
558                    P_API_NAME => L_API_NAME
559                   ,P_PKG_NAME => G_PKG_NAME
560                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
561                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
562                   ,X_MSG_COUNT => X_MSG_COUNT
563                   ,X_MSG_DATA => X_MSG_DATA
564                   ,X_RETURN_STATUS => X_RETURN_STATUS);
565 
566           WHEN OTHERS THEN
567               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
568                    P_API_NAME => L_API_NAME
569                   ,P_PKG_NAME => G_PKG_NAME
570                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
571                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
572                   ,X_MSG_COUNT => X_MSG_COUNT
573                   ,X_MSG_DATA => X_MSG_DATA
574                   ,X_RETURN_STATUS => X_RETURN_STATUS);
575 End Delete_header_rltship;
576 
577 
578 PROCEDURE Validate_HEADER_RLTSHIP_ID (
579     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
580     P_Validation_mode            IN   VARCHAR2,
581     P_HEADER_RELATIONSHIP_ID                IN   NUMBER,
582     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
583     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
584     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
585     )
586 IS
587 BEGIN
588 
589       -- Initialize message list if p_init_msg_list is set to TRUE.
590       IF FND_API.to_Boolean( p_init_msg_list )
591       THEN
592           FND_MSG_PUB.initialize;
593       END IF;
594 
595 
596       -- Initialize API return status to SUCCESS
597       x_return_status := FND_API.G_RET_STS_SUCCESS;
598 
599       -- validate NOT NULL column
600       IF(p_HEADER_RELATIONSHIP_ID is NULL)
601       THEN
602           x_return_status := FND_API.G_RET_STS_ERROR;
603       END IF;
604 
605 
606       -- Standard call to get message count and if count is 1, get message info.
607       FND_MSG_PUB.Count_And_Get
608       (  p_count          =>   x_msg_count,
609          p_data           =>   x_msg_data
610       );
611 
612 END Validate_HEADER_RLTSHIP_ID;
613 
614 PROCEDURE Validate_REQUEST_ID (
615     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
616     P_Validation_mode            IN   VARCHAR2,
617     P_REQUEST_ID                IN   NUMBER,
618     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
619     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
620     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
621     )
622 IS
623 BEGIN
624 
625       -- Initialize message list if p_init_msg_list is set to TRUE.
626       IF FND_API.to_Boolean( p_init_msg_list )
627       THEN
628           FND_MSG_PUB.initialize;
629       END IF;
630 
631 
632       -- Initialize API return status to SUCCESS
633       x_return_status := FND_API.G_RET_STS_SUCCESS;
634 
635       -- Standard call to get message count and if count is 1, get message info.
636       FND_MSG_PUB.Count_And_Get
637       (  p_count          =>   x_msg_count,
638          p_data           =>   x_msg_data
639       );
640 
641 END Validate_REQUEST_ID;
642 
643     PROCEDURE Validate_PROGRAM_APPL_ID (
644     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
645     P_Validation_mode            IN   VARCHAR2,
646     P_PROGRAM_APPLICATION_ID                IN   NUMBER,
647     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
648     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
649     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
650     )
651 
652 IS
653 BEGIN
654 
655       -- Initialize message list if p_init_msg_list is set to TRUE.
656       IF FND_API.to_Boolean( p_init_msg_list )
657       THEN
658           FND_MSG_PUB.initialize;
659       END IF;
660 
661 
662       -- Initialize API return status to SUCCESS
663       x_return_status := FND_API.G_RET_STS_SUCCESS;
664 
665       -- Standard call to get message count and if count is 1, get message info.
666       FND_MSG_PUB.Count_And_Get
667       (  p_count          =>   x_msg_count,
668          p_data           =>   x_msg_data
669       );
670 
671 END Validate_PROGRAM_APPL_ID;
672 
673 PROCEDURE Validate_PROGRAM_ID (
674     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
675     P_Validation_mode            IN   VARCHAR2,
676     P_PROGRAM_ID                IN   NUMBER,
677     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
678     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
679     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
680     )
681 IS
682 BEGIN
683 
684       -- Initialize message list if p_init_msg_list is set to TRUE.
685       IF FND_API.to_Boolean( p_init_msg_list )
686       THEN
687           FND_MSG_PUB.initialize;
688       END IF;
689 
690 
691       -- Initialize API return status to SUCCESS
692       x_return_status := FND_API.G_RET_STS_SUCCESS;
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_PROGRAM_ID;
701 
702 PROCEDURE Validate_PROGRAM_UPDATE_DATE (
703     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
704     P_Validation_mode            IN   VARCHAR2,
705     P_PROGRAM_UPDATE_DATE                IN   DATE,
706     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
707     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
708     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
709     )
710 IS
711 BEGIN
712 
713       -- Initialize message list if p_init_msg_list is set to TRUE.
714       IF FND_API.to_Boolean( p_init_msg_list )
715       THEN
716           FND_MSG_PUB.initialize;
717       END IF;
718 
719 
720       -- Initialize API return status to SUCCESS
721       x_return_status := FND_API.G_RET_STS_SUCCESS;
722 
723 
724       -- Standard call to get message count and if count is 1, get message info.
725       FND_MSG_PUB.Count_And_Get
726       (  p_count          =>   x_msg_count,
727          p_data           =>   x_msg_data
728       );
729 
730 END Validate_PROGRAM_UPDATE_DATE;
731 
732 PROCEDURE Validate_QUOTE_HEADER_ID (
733     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
734     P_Validation_mode            IN   VARCHAR2,
735     P_QUOTE_HEADER_ID                IN   NUMBER,
736     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
737     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
738     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
739     )
740 IS
741 l_count NUMBER;
742 BEGIN
743 
744       -- Initialize message list if p_init_msg_list is set to TRUE.
745       IF FND_API.to_Boolean( p_init_msg_list )
746       THEN
747           FND_MSG_PUB.initialize;
748       END IF;
749 
750 
751       -- Initialize API return status to SUCCESS
752       x_return_status := FND_API.G_RET_STS_SUCCESS;
753 
754       -- Standard call to get message count and if count is 1, get message info.
755       FND_MSG_PUB.Count_And_Get
756       (  p_count          =>   x_msg_count,
757          p_data           =>   x_msg_data
758       );
759 
760 END Validate_QUOTE_HEADER_ID;
761 
762 PROCEDURE Validate_RELATED_HEADER_ID (
763     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
764     P_Validation_mode            IN   VARCHAR2,
765     P_RELATED_HEADER_ID                IN   NUMBER,
766     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
767     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
768     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
769     )
770 IS
771 l_count NUMBER;
772 BEGIN
773 
774       -- Initialize message list if p_init_msg_list is set to TRUE.
775       IF FND_API.to_Boolean( p_init_msg_list )
776       THEN
777           FND_MSG_PUB.initialize;
778       END IF;
779 
780 
781       -- Initialize API return status to SUCCESS
782       x_return_status := FND_API.G_RET_STS_SUCCESS;
783         FND_MSG_PUB.Count_And_Get
784       (  p_count          =>   x_msg_count,
785          p_data           =>   x_msg_data
786       );
787 
788 
789 
790 END Validate_RELATED_HEADER_ID;
791 
792 PROCEDURE Validate_RLTSHIP_TYPE_CODE (
793     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
794     P_Validation_mode            IN   VARCHAR2,
795     P_RELATIONSHIP_TYPE_CODE                IN   VARCHAR2,
796     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
797     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
798     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
799     )
800 IS
801 l_count NUMBER;
802 BEGIN
803 
804       -- Initialize message list if p_init_msg_list is set to TRUE.
805       IF FND_API.to_Boolean( p_init_msg_list )
806       THEN
807           FND_MSG_PUB.initialize;
808       END IF;
809 
810 
811       -- Initialize API return status to SUCCESS
812       x_return_status := FND_API.G_RET_STS_SUCCESS;
813 
814       -- validate NOT NULL column
815       IF(p_RELATIONSHIP_TYPE_CODE is NULL)
816       THEN
817           x_return_status := FND_API.G_RET_STS_ERROR;
818       END IF;
819 
820       IF((p_validation_mode = ASO_UTILITY_PVT.G_CREATE) OR (p_validation_mode = ASO_UTILITY_PVT.G_UPDATE and p_RELATIONSHIP_TYPE_CODE <> FND_API.G_MISS_CHAR))
821       THEN
822           -- Hint: Validate data
823           -- IF p_RELATIONSHIP_TYPE_CODE is not NULL and p_RELATIONSHIP_TYPE_CODE <> G_MISS_CHAR
824           -- verify if data is valid
825           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
826           NULL;
827 
828 
829           select count(*) into l_count
830           from aso_lookups
831           where lookup_type = 'ASO_HEADER_RELATIONSHIP_TYPE'
832           and lookup_code = p_RELATIONSHIP_TYPE_CODE;
833 
834           if l_count < 1 then
835           x_return_status := FND_API.G_RET_STS_ERROR;
836           end if;
837       END IF;
838       -- Standard call to get message count and if count is 1, get message info.
839       FND_MSG_PUB.Count_And_Get
840       (  p_count          =>   x_msg_count,
841          p_data           =>   x_msg_data
842       );
843 
844 END Validate_RLTSHIP_TYPE_CODE;
845 
846 PROCEDURE Validate_RECIPROCAL_FLAG (
847     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
848     P_Validation_mode            IN   VARCHAR2,
849     P_RECIPROCAL_FLAG                IN   VARCHAR2,
850     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
851     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
852     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
853 )
854 IS
855 BEGIN
856 
857       -- Initialize message list if p_init_msg_list is set to TRUE.
858       IF FND_API.to_Boolean( p_init_msg_list )
859       THEN
860           FND_MSG_PUB.initialize;
861       END IF;
862 
863 
864       -- Initialize API return status to SUCCESS
865       x_return_status := FND_API.G_RET_STS_SUCCESS;
866 
867       -- Standard call to get message count and if count is 1, get message info.
868       FND_MSG_PUB.Count_And_Get
869       (  p_count          =>   x_msg_count,
870          p_data           =>   x_msg_data
871       );
872 
873 END Validate_RECIPROCAL_FLAG;
874 
875 PROCEDURE Validate_HEADER_RLTSHIP_rec(
876     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
877     P_Validation_mode            IN   VARCHAR2,
878     P_HEADER_RLTSHIP_Rec     IN   ASO_QUOTE_PUB.HEADER_RLTSHIP_Rec_Type,
879     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
880     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
881     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
882     )
883 IS
884 BEGIN
885 
886       -- Initialize message list if p_init_msg_list is set to TRUE.
887       IF FND_API.to_Boolean( p_init_msg_list )
888       THEN
889           FND_MSG_PUB.initialize;
890       END IF;
891 
892 
893       -- Initialize API return status to SUCCESS
894       x_return_status := FND_API.G_RET_STS_SUCCESS;
895 
896 
897       -- Standard call to get message count and if count is 1, get message info.
898       FND_MSG_PUB.Count_And_Get
899       (  p_count          =>   x_msg_count,
900          p_data           =>   x_msg_data
901       );
902 
903 END Validate_HEADER_RLTSHIP_Rec;
904 
905 PROCEDURE Validate_header_rltship(
906     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
907     P_Validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
908     P_Validation_mode            IN   VARCHAR2,
909     P_HEADER_RLTSHIP_Rec         IN   ASO_quote_PUB.HEADER_RLTSHIP_Rec_Type,
910     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
911     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
912     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
913     )
914 IS
915 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_header_rltship';
916  BEGIN
917       -- Initialize API return status to SUCCESS
918       x_return_status := FND_API.G_RET_STS_SUCCESS;
919 
920           Validate_QUOTE_HEADER_ID(
921               p_init_msg_list          => FND_API.G_FALSE,
922               p_validation_mode        => p_validation_mode,
923               p_QUOTE_HEADER_ID   => P_HEADER_RLTSHIP_Rec.QUOTE_HEADER_ID,
924               -- 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.
925               x_return_status          => x_return_status,
926               x_msg_count              => x_msg_count,
927               x_msg_data               => x_msg_data);
928           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
929               raise FND_API.G_EXC_ERROR;
930           END IF;
931 
932           Validate_RELATED_HEADER_ID(
933               p_init_msg_list          => FND_API.G_FALSE,
934               p_validation_mode        => p_validation_mode,
935               p_RELATED_HEADER_ID   => P_HEADER_RLTSHIP_Rec.RELATED_HEADER_ID,
936               -- 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.
937               x_return_status          => x_return_status,
938               x_msg_count              => x_msg_count,
939               x_msg_data               => x_msg_data);
940           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
941               raise FND_API.G_EXC_ERROR;
942           END IF;
943 
944           Validate_RLTSHIP_TYPE_CODE(
945               p_init_msg_list          => FND_API.G_FALSE,
946               p_validation_mode        => p_validation_mode,
947               p_RELATIONSHIP_TYPE_CODE   => P_HEADER_RLTSHIP_Rec.RELATIONAL_TYPE_CODE,
948               -- 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.
949               x_return_status          => x_return_status,
950               x_msg_count              => x_msg_count,
951               x_msg_data               => x_msg_data);
952           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
953               raise FND_API.G_EXC_ERROR;
954           END IF;
955 
956           Validate_RECIPROCAL_FLAG(
957               p_init_msg_list          => FND_API.G_FALSE,
958               p_validation_mode        => p_validation_mode,
959               p_RECIPROCAL_FLAG   => P_HEADER_RLTSHIP_Rec.RECIPROCAL_FLAG,
960               -- 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.
961               x_return_status          => x_return_status,
962               x_msg_count              => x_msg_count,
963               x_msg_data               => x_msg_data);
964           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
965               raise FND_API.G_EXC_ERROR;
966           END IF;
967 
968 END Validate_header_rltship;
969 
970 End ASO_HEADER_RLTSHIP_PVT;