DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_LINE_ATTRIBS_PVT

Source


1 PACKAGE BODY ASO_LINE_ATTRIBS_PVT as
2 /* $Header: asovlatb.pls 120.1 2005/06/29 12:41:58 appldev ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_LINE_ATTRIBS_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'ASO_LINE_ATTRIBS_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asovlatb.pls';
13 
14 
15 -- Hint: Primary key needs to be returned.
16 PROCEDURE Create_line_attribs(
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_LINE_ATTRIBS_Rec     IN    ASO_quote_PUB.LINE_ATTRIBS_EXT_rec_type  := ASO_quote_PUB.G_MISS_LINE_ATTRIBS_EXT_REC,
22   --Hint: Add detail tables as parameter lists if it's master-detail relationship.
23     X_LINE_ATTRIB_ID     OUT NOCOPY /* file.sql.39 change */    NUMBER,
24     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
25     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
26     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
27     )
28 
29  IS
30 l_api_name                CONSTANT VARCHAR2(30) := 'Create_line_attribs';
31 l_api_version_number      CONSTANT NUMBER   := 1.0;
32 l_return_status_full        VARCHAR2(1);
33 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
34 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
35 --l_identity_sales_member_rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
36  BEGIN
37       -- Standard Start of API savepoint
38       SAVEPOINT CREATE_LINE_ATTRIBS_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
46           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
47       END IF;
48 
49 
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       -- Debug Message
58 --      ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
59 
60 
61       -- Initialize API return status to SUCCESS
62       x_return_status := FND_API.G_RET_STS_SUCCESS;
63 
64       --
65       -- API body
66       --
67 
68 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
69 /*
70       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
71       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
72       THEN
73           AS_CALLOUT_PKG.Create_line_attribs_BC(
74                   p_api_version_number   =>  2.0,
75                   p_init_msg_list        =>  FND_API.G_FALSE,
76                   p_commit               =>  FND_API.G_FALSE,
77                   p_validation_level     =>  p_validation_level,
78                   P_LINE_ATTRIBS_Rec      =>  P_LINE_ATTRIBS_Rec,
79           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
80                   x_return_status        =>  x_return_status,
81                   x_msg_count            =>  x_msg_count,
82                   x_msg_data             =>  x_msg_data);
83       END IF;
84 */
85       -- ******************************************************************
86       -- Validate Environment
87       -- ******************************************************************
88       IF FND_GLOBAL.User_Id IS NULL
89       THEN
90           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
91           THEN
92               FND_MESSAGE.Set_Name(' + appShortName +', 'UT_CANNOT_GET_PROFILE_VALUE');
93               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
94               FND_MSG_PUB.ADD;
95           END IF;
96           RAISE FND_API.G_EXC_ERROR;
97       END IF;
98 
99 /*
100       AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
101           p_api_version_number => 2.0
102          ,p_salesforce_id => NULL
103          ,x_return_status => x_return_status
104          ,x_msg_count => x_msg_count
105          ,x_msg_data => x_msg_data
106          ,x_sales_member_rec => l_identity_sales_member_rec);
107 
108       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
109           RAISE FND_API.G_EXC_ERROR;
110       END IF;
111 */
112 
113       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
114       THEN
115           -- Debug message
116   --        ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: Validate_line_attribs');
117 
118           -- Invoke validation procedures
119           Validate_line_attribs(
120               p_init_msg_list    => FND_API.G_FALSE,
121               p_validation_level => p_validation_level,
122               p_validation_mode  => ASO_UTILITY_PVT.G_CREATE,
123               P_LINE_ATTRIBS_Rec  =>  P_LINE_ATTRIBS_Rec,
124               x_return_status    => x_return_status,
125               x_msg_count        => x_msg_count,
126               x_msg_data         => x_msg_data);
127       END IF;
128 
129       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
130           RAISE FND_API.G_EXC_ERROR;
131       END IF;
132 
133       -- Hint: Add corresponding Master-Detail business logic here if necessary.
134 
135       -- Debug Message
136 --      ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: Calling create table handler');
137 
138       -- Invoke table handler(ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row)
139       ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Insert_Row(
140           px_LINE_ATTRIBUTE_ID  => x_LINE_ATTRIB_ID,
141           p_CREATION_DATE  => SYSDATE,
142           p_CREATED_BY  => G_USER_ID,
143           p_LAST_UPDATE_DATE  => SYSDATE,
144           p_LAST_UPDATED_BY  => G_USER_ID,
145           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
146           p_REQUEST_ID  => p_LINE_ATTRIBS_rec.REQUEST_ID,
147           p_PROGRAM_APPLICATION_ID  => p_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
148           p_PROGRAM_ID  => p_LINE_ATTRIBS_rec.PROGRAM_ID,
149 		p_application_id => p_line_attribs_rec.application_id,
150 		p_status => p_line_attribs_rec.status,
151           p_PROGRAM_UPDATE_DATE  => p_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
152           p_QUOTE_HEADER_ID  => p_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
153           p_QUOTE_LINE_ID  => p_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
154           p_QUOTE_SHIPMENT_ID  => p_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
155           p_ATTRIBUTE_TYPE_CODE  => p_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
156           p_NAME  => p_LINE_ATTRIBS_rec.NAME,
157           p_VALUE  => p_LINE_ATTRIBS_rec.VALUE,
158 		p_VALUE_TYPE => p_LINE_ATTRIBS_REC.value_type,
159           p_START_DATE_ACTIVE  => p_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
160           p_END_DATE_ACTIVE  => p_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
161 		p_OBJECT_VERSION_NUMBER => p_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER
162 		);
163       -- Hint: Primary key should be returned.
164       -- x_LINE_ATTRIBUTE_ID := px_LINE_ATTRIBUTE_ID;
165 
166       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
167           RAISE FND_API.G_EXC_ERROR;
168       END IF;
169 
170       --
171       -- End of API body
172       --
173 
174       -- Standard check for p_commit
175       IF FND_API.to_Boolean( p_commit )
176       THEN
177           COMMIT WORK;
178       END IF;
179 
180 
181       -- Debug Message
182 --      ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
183 
184 
185       -- Standard call to get message count and if count is 1, get message info.
186       FND_MSG_PUB.Count_And_Get
187       (  p_count          =>   x_msg_count,
188          p_data           =>   x_msg_data
189       );
190 
191 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
192 /*
193       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
194       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
195       THEN
196           AS_CALLOUT_PKG.Create_line_attribs_AC(
197                   p_api_version_number   =>  2.0,
198                   p_init_msg_list        =>  FND_API.G_FALSE,
199                   p_commit               =>  FND_API.G_FALSE,
200                   p_validation_level     =>  p_validation_level,
201                   P_LINE_ATTRIBS_Rec      =>  P_LINE_ATTRIBS_Rec,
202           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
203                   x_return_status        =>  x_return_status,
204                   x_msg_count            =>  x_msg_count,
205                   x_msg_data             =>  x_msg_data);
206       END IF;
207 */
208       EXCEPTION
209                   WHEN FND_API.G_EXC_ERROR THEN
210               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
211                    P_API_NAME => L_API_NAME
212                   ,P_PKG_NAME => G_PKG_NAME
213                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
214                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
215                   ,X_MSG_COUNT => X_MSG_COUNT
216                   ,X_MSG_DATA => X_MSG_DATA
217                   ,X_RETURN_STATUS => X_RETURN_STATUS);
218 
219           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
220               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
221                    P_API_NAME => L_API_NAME
222                   ,P_PKG_NAME => G_PKG_NAME
223                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
224                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
225                   ,X_MSG_COUNT => X_MSG_COUNT
226                   ,X_MSG_DATA => X_MSG_DATA
227                   ,X_RETURN_STATUS => X_RETURN_STATUS);
228 
229           WHEN OTHERS THEN
230               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
231                    P_API_NAME => L_API_NAME
232                   ,P_PKG_NAME => G_PKG_NAME
233                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
234                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
235                   ,X_MSG_COUNT => X_MSG_COUNT
236                   ,X_MSG_DATA => X_MSG_DATA
237                   ,X_RETURN_STATUS => X_RETURN_STATUS);
238 End Create_line_attribs;
239 
240 
241 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
242 PROCEDURE Update_line_attribs(
243     P_Api_Version_Number         IN   NUMBER,
244     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
245     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
246     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
247 --    P_Identity_Salesforce_Id     IN   NUMBER       := NULL,
248     P_LINE_ATTRIBS_Rec     IN    ASO_quote_PUB.LINE_ATTRIBS_EXT_rec_type,
249     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
250     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
251     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
252     )
253 
254  IS
255 
256 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
257 G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
258 Cursor C_Get_line_attribs(P_LINE_ATTRIBUTE_ID Number)
259 	    IS Select --rowid,
260            LINE_ATTRIBUTE_ID,
261            CREATION_DATE,
262            CREATED_BY,
263            LAST_UPDATE_DATE,
264            LAST_UPDATED_BY,
265            LAST_UPDATE_LOGIN,
266            REQUEST_ID,
267            PROGRAM_APPLICATION_ID,
268            PROGRAM_ID,
269            PROGRAM_UPDATE_DATE,
270 		 APPLICATION_ID,
271 		 status,
272 		 QUOTE_LINE_ID,
273 		 ATTRIBUTE_TYPE_CODE,
274            NAME,
275            VALUE,
276 		 VALUE_TYPE,
277            START_DATE_ACTIVE,
278            END_DATE_ACTIVE
279     From  ASO_QUOTE_LINE_ATTRIBS_EXT
280     where LINE_ATTRIBUTE_ID = P_LINE_ATTRIBUTE_ID;
281     -- Hint: Developer need to provide Where clause
282     --For Update NOWIAT;
283 
284 l_api_name                CONSTANT VARCHAR2(30) := 'Update_line_attribs';
285 l_api_version_number      CONSTANT NUMBER   := 1.0;
286 -- Local Variables
287 --l_identity_sales_member_rec   AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
288 l_ref_LINE_ATTRIBS_rec  ASO_quote_PUB.LINE_ATTRIBS_EXT_rec_type;
289 l_tar_LINE_ATTRIBS_rec  ASO_quote_PUB.LINE_ATTRIBS_EXT_rec_type := P_LINE_ATTRIBS_Rec;
290 l_rowid  ROWID;
291  BEGIN
292       -- Standard Start of API savepoint
293       SAVEPOINT UPDATE_LINE_ATTRIBS_PVT;
294 
295       -- Standard call to check for call compatibility.
296       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
297                          	             p_api_version_number,
298                                            l_api_name,
299                                            G_PKG_NAME)
300       THEN
301           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
302       END IF;
303 
304 
305       -- Initialize message list if p_init_msg_list is set to TRUE.
306       IF FND_API.to_Boolean( p_init_msg_list )
307       THEN
308           FND_MSG_PUB.initialize;
309       END IF;
310 
311 
312       -- Debug Message
313 --      ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
314 
315 
316       -- Initialize API return status to SUCCESS
317       x_return_status := FND_API.G_RET_STS_SUCCESS;
318 
319       --
320       -- Api body
321       --
322 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
323 /*
324       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
325       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
326       THEN
327           AS_CALLOUT_PKG.Update_line_attribs_BU(
328                   p_api_version_number   =>  2.0,
329                   p_init_msg_list        =>  FND_API.G_FALSE,
330                   p_commit               =>  FND_API.G_FALSE,
331                   p_validation_level     =>  p_validation_level,
332                   p_identity_salesforce_id => p_identity_salesforce_id,
333                   P_LINE_ATTRIBS_Rec      =>  P_LINE_ATTRIBS_Rec,
334           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
335                   x_return_status        =>  x_return_status,
336                   x_msg_count            =>  x_msg_count,
337                   x_msg_data             =>  x_msg_data);
338       END IF;
339 
340 
341       AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
342           p_api_version_number => 2.0
343          ,p_salesforce_id => p_identity_salesforce_id
344          ,x_return_status => x_return_status
345          ,x_msg_count => x_msg_count
346          ,x_msg_data => x_msg_data
347          ,x_sales_member_rec => l_identity_sales_member_rec);
348 
349       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
350           RAISE FND_API.G_EXC_ERROR;
351       END IF;
352 
353       -- Debug Message
354       ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Open Cursor to Select');
355 
356 */
357       Open C_Get_line_attribs( l_tar_LINE_ATTRIBS_rec.LINE_ATTRIBUTE_ID);
358 
359       Fetch C_Get_line_attribs into
360        --        l_rowid,
361                l_ref_LINE_ATTRIBS_rec.LINE_ATTRIBUTE_ID,
362                l_ref_LINE_ATTRIBS_rec.CREATION_DATE,
363                l_ref_LINE_ATTRIBS_rec.CREATED_BY,
364                l_ref_LINE_ATTRIBS_rec.LAST_UPDATE_DATE,
365                l_ref_LINE_ATTRIBS_rec.LAST_UPDATED_BY,
366                l_ref_LINE_ATTRIBS_rec.LAST_UPDATE_LOGIN,
367                l_ref_LINE_ATTRIBS_rec.REQUEST_ID,
368                l_ref_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
369                l_ref_LINE_ATTRIBS_rec.PROGRAM_ID,
370                l_ref_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
374                l_ref_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
371 			l_ref_LINE_ATTRIBS_rec.APPLICATION_ID,
372 			l_ref_LINE_ATTRIBS_rec.STATUS,
373                l_ref_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
375                l_ref_LINE_ATTRIBS_rec.NAME,
376                l_ref_LINE_ATTRIBS_rec.VALUE,
377 			l_ref_LINE_ATTRIBS_rec.VALUE_TYPE,
378                l_ref_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
379                l_ref_LINE_ATTRIBS_rec.END_DATE_ACTIVE;
380 
381        If ( C_Get_line_attribs%NOTFOUND) Then
382            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
383            THEN
384                FND_MESSAGE.Set_Name('ASO', 'API_MISSING_UPDATE_TARGET');
385                FND_MESSAGE.Set_Token ('INFO', 'line_attribs', FALSE);
386                FND_MSG_PUB.Add;
387            END IF;
388            raise FND_API.G_EXC_ERROR;
389        END IF;
390        -- Debug Message
391 --       ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: - Close Cursor');
392        Close     C_Get_line_attribs;
393 
394 
395 
396       If (l_tar_LINE_ATTRIBS_rec.last_update_date is NULL or
397           l_tar_LINE_ATTRIBS_rec.last_update_date = FND_API.G_MISS_Date ) Then
398           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
399           THEN
400               FND_MESSAGE.Set_Name('ASO', 'API_MISSING_ID');
401               FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
402               FND_MSG_PUB.ADD;
403           END IF;
404           raise FND_API.G_EXC_ERROR;
405       End if;
406       -- Check Whether record has been changed by someone else
407       If (l_tar_LINE_ATTRIBS_rec.last_update_date <> l_ref_LINE_ATTRIBS_rec.last_update_date) Then
408           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
409           THEN
410               FND_MESSAGE.Set_Name('ASO', 'API_RECORD_CHANGED');
411               FND_MESSAGE.Set_Token('INFO', 'line_attribs', FALSE);
412               FND_MSG_PUB.ADD;
413           END IF;
414           raise FND_API.G_EXC_ERROR;
415       End if;
416 
417       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
418       THEN
419           -- Debug message
420   --        ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'Private API: Validate_line_attribs');
421 
422           -- Invoke validation procedures
423           Validate_line_attribs(
424               p_init_msg_list    => FND_API.G_FALSE,
425               p_validation_level => p_validation_level,
426               p_validation_mode  => ASO_UTILITY_PVT.G_UPDATE,
427               P_LINE_ATTRIBS_Rec  =>  P_LINE_ATTRIBS_Rec,
428               x_return_status    => x_return_status,
429               x_msg_count        => x_msg_count,
430               x_msg_data         => x_msg_data);
431       END IF;
432 
433       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
434           RAISE FND_API.G_EXC_ERROR;
435       END IF;
436 
437       -- Hint: Add corresponding Master-Detail business logic here if necessary.
438 
439       -- Debug Message
440   --    ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: Calling update table handler');
441 
442       -- Invoke table handler(ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Update_Row)
443       ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Update_Row(
444           p_LINE_ATTRIBUTE_ID  => p_LINE_ATTRIBS_rec.LINE_ATTRIBUTE_ID,
445           p_CREATION_DATE  => SYSDATE,
446           p_CREATED_BY  => G_USER_ID,
447           p_LAST_UPDATE_DATE  => SYSDATE,
448           p_LAST_UPDATED_BY  => G_USER_ID,
449           p_LAST_UPDATE_LOGIN  => G_LOGIN_ID,
450           p_REQUEST_ID  => p_LINE_ATTRIBS_rec.REQUEST_ID,
451           p_PROGRAM_APPLICATION_ID  => p_LINE_ATTRIBS_rec.PROGRAM_APPLICATION_ID,
452           p_PROGRAM_ID  => p_LINE_ATTRIBS_rec.PROGRAM_ID,
453           p_PROGRAM_UPDATE_DATE  => p_LINE_ATTRIBS_rec.PROGRAM_UPDATE_DATE,
454 		p_APPLICATION_ID=> p_LINE_ATTRIBS_rec.application_id,
455 		p_STATUS => p_LINE_ATTRIBS_rec.status,
456           p_QUOTE_HEADER_ID  => p_LINE_ATTRIBS_rec.QUOTE_HEADER_ID,
457           p_QUOTE_LINE_ID  => p_LINE_ATTRIBS_rec.QUOTE_LINE_ID,
458           p_QUOTE_SHIPMENT_ID  => p_LINE_ATTRIBS_rec.QUOTE_SHIPMENT_ID,
459           p_ATTRIBUTE_TYPE_CODE  => p_LINE_ATTRIBS_rec.ATTRIBUTE_TYPE_CODE,
460           p_NAME  => p_LINE_ATTRIBS_rec.NAME,
461           p_VALUE  => p_LINE_ATTRIBS_rec.VALUE,
462 		p_VALUE_TYPE => P_LINE_ATTRIBS_rec.VALUE_TYPE,
463           p_START_DATE_ACTIVE  => p_LINE_ATTRIBS_rec.START_DATE_ACTIVE,
464           p_END_DATE_ACTIVE  => p_LINE_ATTRIBS_rec.END_DATE_ACTIVE,
465 		p_OBJECT_VERSION_NUMBER => p_LINE_ATTRIBS_rec.OBJECT_VERSION_NUMBER
466 		);
467       --
468       -- End of API body.
469       --
470 
471       -- Standard check for p_commit
472       IF FND_API.to_Boolean( p_commit )
473       THEN
474           COMMIT WORK;
475       END IF;
476 
477 
478       -- Debug Message
479  --     ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
480 
481 
482       -- Standard call to get message count and if count is 1, get message info.
483       FND_MSG_PUB.Count_And_Get
484       (  p_count          =>   x_msg_count,
485          p_data           =>   x_msg_data
486       );
487 
488 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
489 /*
493           AS_CALLOUT_PKG.Update_line_attribs_AU(
490       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
491       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
492       THEN
494                   p_api_version_number   =>  2.0,
495                   p_init_msg_list        =>  FND_API.G_FALSE,
496                   p_commit               =>  FND_API.G_FALSE,
497                   p_validation_level     =>  p_validation_level,
498                   p_identity_salesforce_id => p_identity_salesforce_id,
499                   P_LINE_ATTRIBS_Rec      =>  P_LINE_ATTRIBS_Rec,
500           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
501                   x_return_status        =>  x_return_status,
502                   x_msg_count            =>  x_msg_count,
503                   x_msg_data             =>  x_msg_data);
504       END IF;
505 */
506       EXCEPTION
507                   WHEN FND_API.G_EXC_ERROR THEN
508               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
509                    P_API_NAME => L_API_NAME
510                   ,P_PKG_NAME => G_PKG_NAME
511                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
512                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
513                   ,X_MSG_COUNT => X_MSG_COUNT
514                   ,X_MSG_DATA => X_MSG_DATA
515                   ,X_RETURN_STATUS => X_RETURN_STATUS);
516 
517           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
518               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
519                    P_API_NAME => L_API_NAME
520                   ,P_PKG_NAME => G_PKG_NAME
521                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
522                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
523                   ,X_MSG_COUNT => X_MSG_COUNT
524                   ,X_MSG_DATA => X_MSG_DATA
525                   ,X_RETURN_STATUS => X_RETURN_STATUS);
526 
527           WHEN OTHERS THEN
528               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
529                    P_API_NAME => L_API_NAME
530                   ,P_PKG_NAME => G_PKG_NAME
531                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
532                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
533                   ,X_MSG_COUNT => X_MSG_COUNT
534                   ,X_MSG_DATA => X_MSG_DATA
535                   ,X_RETURN_STATUS => X_RETURN_STATUS);
536 End Update_line_attribs;
537 
538 
539 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
540 --       The Master delete procedure may not be needed depends on different business requirements.
541 PROCEDURE Delete_line_attribs(
542     P_Api_Version_Number         IN   NUMBER,
543     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
544     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
545     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
546  --   P_identity_salesforce_id     IN   NUMBER       := NULL,
547     P_LINE_ATTRIBS_Rec     IN ASO_quote_PUB.LINE_ATTRIBS_EXT_rec_type,
548     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
549     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
550     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
551     )
552 
553  IS
554 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_line_attribs';
555 l_api_version_number      CONSTANT NUMBER   := 1.0;
556 --l_identity_sales_member_rec  AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
557  BEGIN
558       -- Standard Start of API savepoint
559       SAVEPOINT DELETE_LINE_ATTRIBS_PVT;
560 
561       -- Standard call to check for call compatibility.
562       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
563                          	             p_api_version_number,
564                                            l_api_name,
565                                            G_PKG_NAME)
566       THEN
567           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
568       END IF;
569 
570 
571       -- Initialize message list if p_init_msg_list is set to TRUE.
572       IF FND_API.to_Boolean( p_init_msg_list )
573       THEN
574           FND_MSG_PUB.initialize;
575       END IF;
576 
577 
578       -- Debug Message
579  --     ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'start');
580 
581 
582       -- Initialize API return status to SUCCESS
583       x_return_status := FND_API.G_RET_STS_SUCCESS;
584 
585       --
586       -- Api body
587       --
588 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
589 /*
590       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
591       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
592       THEN
593           AS_CALLOUT_PKG.Delete_line_attribs_BD(
594                   p_api_version_number   =>  2.0,
595                   p_init_msg_list        =>  FND_API.G_FALSE,
596                   p_commit               =>  FND_API.G_FALSE,
597                   p_validation_level     =>  p_validation_level,
598                   p_identity_salesforce_id => p_identity_salesforce_id,
599                   P_LINE_ATTRIBS_Rec      =>  P_LINE_ATTRIBS_Rec,
600           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
604       END IF;
601                   x_return_status        =>  x_return_status,
602                   x_msg_count            =>  x_msg_count,
603                   x_msg_data             =>  x_msg_data);
605 
606 
607       AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
608           p_api_version_number => 2.0
609          ,p_salesforce_id => p_identity_salesforce_id
610          ,x_return_status => x_return_status
611          ,x_msg_count => x_msg_count
612          ,x_msg_data => x_msg_data
613          ,x_sales_member_rec => l_identity_sales_member_rec);
614 
615       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
616           RAISE FND_API.G_EXC_ERROR;
617       END IF;
618 
619       -- Debug Message
620       ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: Calling delete table handler');
621 */
622       -- Invoke table handler(ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Delete_Row)
623       ASO_QUOTE_LINE_ATTRIBS_EXT_PKG.Delete_Row(
624           p_LINE_ATTRIB_ID  => p_LINE_ATTRIBS_rec.LINE_ATTRIBUTE_ID);
625       --
626       -- End of API body
627       --
628 
629       -- Standard check for p_commit
630       IF FND_API.to_Boolean( p_commit )
631       THEN
632           COMMIT WORK;
633       END IF;
634 
635 
636       -- Debug Message
637  --     ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'Private API: ' || l_api_name || 'end');
638 
639 
640       -- Standard call to get message count and if count is 1, get message info.
641       FND_MSG_PUB.Count_And_Get
642       (  p_count          =>   x_msg_count,
643          p_data           =>   x_msg_data
644       );
645 
646 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
647 /*
648       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
649       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
650       THEN
651           AS_CALLOUT_PKG.Delete_line_attribs_AD(
652                   p_api_version_number   =>  2.0,
653                   p_init_msg_list        =>  FND_API.G_FALSE,
654                   p_commit               =>  FND_API.G_FALSE,
655                   p_validation_level     =>  p_validation_level,
656                   p_identity_salesforce_id => p_identity_salesforce_id,
657                   P_LINE_ATTRIBS_Rec      =>  P_LINE_ATTRIBS_Rec,
658           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
659                   x_return_status        =>  x_return_status,
660                   x_msg_count            =>  x_msg_count,
661                   x_msg_data             =>  x_msg_data);
662       END IF;
663 */
664       EXCEPTION
665                   WHEN FND_API.G_EXC_ERROR THEN
666               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
667                    P_API_NAME => L_API_NAME
668                   ,P_PKG_NAME => G_PKG_NAME
669                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
670                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
671                   ,X_MSG_COUNT => X_MSG_COUNT
672                   ,X_MSG_DATA => X_MSG_DATA
673                   ,X_RETURN_STATUS => X_RETURN_STATUS);
674 
675           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
676               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
677                    P_API_NAME => L_API_NAME
678                   ,P_PKG_NAME => G_PKG_NAME
679                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
680                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
681                   ,X_MSG_COUNT => X_MSG_COUNT
682                   ,X_MSG_DATA => X_MSG_DATA
683                   ,X_RETURN_STATUS => X_RETURN_STATUS);
684 
685           WHEN OTHERS THEN
686               ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
687                    P_API_NAME => L_API_NAME
688                   ,P_PKG_NAME => G_PKG_NAME
689                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
690                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
691                   ,X_MSG_COUNT => X_MSG_COUNT
692                   ,X_MSG_DATA => X_MSG_DATA
693                   ,X_RETURN_STATUS => X_RETURN_STATUS);
694 End Delete_line_attribs;
695 
696 
697 
698 
699 
700 -- Item-level validation procedures
701 PROCEDURE Validate_LINE_ATTRIBUTE_ID (
702     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
703     P_Validation_mode            IN   VARCHAR2,
704     P_LINE_ATTRIBUTE_ID                IN   NUMBER,
705     -- 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.
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       -- validate NOT NULL column
724       IF(p_LINE_ATTRIBUTE_ID is NULL)
728       END IF;
725       THEN
726           --ASO_UTILITY_PVT.Print('ERROR', 'Private line_attribs API: -Violate NOT NULL constraint(LINE_ATTRIBUTE_ID)');
727           x_return_status := FND_API.G_RET_STS_ERROR;
729 
730       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
731       THEN
732           -- Hint: Validate data
733           -- IF p_LINE_ATTRIBUTE_ID is not NULL and p_LINE_ATTRIBUTE_ID <> G_MISS_CHAR
734           -- verify if data is valid
735           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
736           NULL;
737       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
738       THEN
739           -- Hint: Validate data
740           -- IF p_LINE_ATTRIBUTE_ID <> G_MISS_CHAR
741           -- verify if data is valid
742           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
743           NULL;
744       END IF;
745 
746       -- Standard call to get message count and if count is 1, get message info.
747       FND_MSG_PUB.Count_And_Get
748       (  p_count          =>   x_msg_count,
749          p_data           =>   x_msg_data
750       );
751 
752 END Validate_LINE_ATTRIBUTE_ID;
753 
754 
755 PROCEDURE Validate_REQUEST_ID (
756     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
757     P_Validation_mode            IN   VARCHAR2,
758     P_REQUEST_ID                IN   NUMBER,
759     -- 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.
760     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
761     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
762     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
763     )
764 IS
765 BEGIN
766 
767       -- Initialize message list if p_init_msg_list is set to TRUE.
768       IF FND_API.to_Boolean( p_init_msg_list )
769       THEN
770           FND_MSG_PUB.initialize;
771       END IF;
772 
773 
774       -- Initialize API return status to SUCCESS
775       x_return_status := FND_API.G_RET_STS_SUCCESS;
776 
777       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
778       THEN
779           -- Hint: Validate data
780           -- IF p_REQUEST_ID is not NULL and p_REQUEST_ID <> G_MISS_CHAR
781           -- verify if data is valid
782           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
783           NULL;
784       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
785       THEN
786           -- Hint: Validate data
787           -- IF p_REQUEST_ID <> G_MISS_CHAR
788           -- verify if data is valid
789           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
790           NULL;
791       END IF;
792 
793       -- Standard call to get message count and if count is 1, get message info.
794       FND_MSG_PUB.Count_And_Get
795       (  p_count          =>   x_msg_count,
796          p_data           =>   x_msg_data
797       );
798 
799 END Validate_REQUEST_ID;
800 
801 
802 PROCEDURE Validate_PROG_APPL_ID (
803     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
804     P_Validation_mode            IN   VARCHAR2,
805     P_PROGRAM_APPLICATION_ID                IN   NUMBER,
806     -- 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.
807     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
808     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
809     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
810     )
811 IS
812 BEGIN
813 
814       -- Initialize message list if p_init_msg_list is set to TRUE.
815       IF FND_API.to_Boolean( p_init_msg_list )
816       THEN
817           FND_MSG_PUB.initialize;
818       END IF;
819 
820 
821       -- Initialize API return status to SUCCESS
822       x_return_status := FND_API.G_RET_STS_SUCCESS;
823 
824       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
825       THEN
826           -- Hint: Validate data
827           -- IF p_PROGRAM_APPLICATION_ID is not NULL and p_PROGRAM_APPLICATION_ID <> G_MISS_CHAR
828           -- verify if data is valid
829           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
830           NULL;
831       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
832       THEN
833           -- Hint: Validate data
834           -- IF p_PROGRAM_APPLICATION_ID <> G_MISS_CHAR
835           -- verify if data is valid
836           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
837           NULL;
838       END IF;
839 
840       -- Standard call to get message count and if count is 1, get message info.
841       FND_MSG_PUB.Count_And_Get
842       (  p_count          =>   x_msg_count,
843          p_data           =>   x_msg_data
844       );
845 
846 END Validate_PROG_APPL_ID;
847 
848 
849 PROCEDURE Validate_PROGRAM_ID (
850     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
851     P_Validation_mode            IN   VARCHAR2,
852     P_PROGRAM_ID                IN   NUMBER,
856     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
853     -- 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.
854     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
855     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
857     )
858 IS
859 BEGIN
860 
861       -- Initialize message list if p_init_msg_list is set to TRUE.
862       IF FND_API.to_Boolean( p_init_msg_list )
863       THEN
864           FND_MSG_PUB.initialize;
865       END IF;
866 
867 
868       -- Initialize API return status to SUCCESS
869       x_return_status := FND_API.G_RET_STS_SUCCESS;
870 
871       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
872       THEN
873           -- Hint: Validate data
874           -- IF p_PROGRAM_ID is not NULL and p_PROGRAM_ID <> G_MISS_CHAR
875           -- verify if data is valid
876           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
877           NULL;
878       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
879       THEN
880           -- Hint: Validate data
881           -- IF p_PROGRAM_ID <> G_MISS_CHAR
882           -- verify if data is valid
883           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
884           NULL;
885       END IF;
886 
887       -- Standard call to get message count and if count is 1, get message info.
888       FND_MSG_PUB.Count_And_Get
889       (  p_count          =>   x_msg_count,
890          p_data           =>   x_msg_data
891       );
892 
893 END Validate_PROGRAM_ID;
894 
895 
896 PROCEDURE Validate_PROGRAM_UPDATE_DATE (
897     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
898     P_Validation_mode            IN   VARCHAR2,
899     P_PROGRAM_UPDATE_DATE                IN   DATE,
900     -- 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.
901     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
902     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
903     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
904     )
905 IS
906 BEGIN
907 
908       -- Initialize message list if p_init_msg_list is set to TRUE.
909       IF FND_API.to_Boolean( p_init_msg_list )
910       THEN
911           FND_MSG_PUB.initialize;
912       END IF;
913 
914 
915       -- Initialize API return status to SUCCESS
916       x_return_status := FND_API.G_RET_STS_SUCCESS;
917 
918       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
919       THEN
920           -- Hint: Validate data
921           -- IF p_PROGRAM_UPDATE_DATE is not NULL and p_PROGRAM_UPDATE_DATE <> G_MISS_CHAR
922           -- verify if data is valid
923           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
924           NULL;
925       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
926       THEN
927           -- Hint: Validate data
928           -- IF p_PROGRAM_UPDATE_DATE <> G_MISS_CHAR
929           -- verify if data is valid
930           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
931           NULL;
932       END IF;
933 
934       -- Standard call to get message count and if count is 1, get message info.
935       FND_MSG_PUB.Count_And_Get
936       (  p_count          =>   x_msg_count,
937          p_data           =>   x_msg_data
938       );
939 
940 END Validate_PROGRAM_UPDATE_DATE;
941 
942 
943 PROCEDURE Validate_QUOTE_LINE_ID (
944     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
945     P_Validation_mode            IN   VARCHAR2,
946     P_QUOTE_LINE_ID                IN   NUMBER,
947     -- 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.
948     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
949     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
950     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
951     )
952 IS
953 l_count  NUMBER;
954 BEGIN
955 
956       -- Initialize message list if p_init_msg_list is set to TRUE.
957       IF FND_API.to_Boolean( p_init_msg_list )
958       THEN
959           FND_MSG_PUB.initialize;
960       END IF;
961 
962 
963       -- Initialize API return status to SUCCESS
964       x_return_status := FND_API.G_RET_STS_SUCCESS;
965 
966       -- validate NOT NULL column
967       IF(p_QUOTE_LINE_ID is NULL)
968       THEN
969           --ASO_UTILITY_PVT.Print('ERROR', 'Private line_attribs API: -Violate NOT NULL constraint(QUOTE_LINE_ID)');
970           x_return_status := FND_API.G_RET_STS_ERROR;
971       END IF;
972 
973       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
974       THEN
975           -- Hint: Validate data
976           -- IF p_QUOTE_LINE_ID is not NULL and p_QUOTE_LINE_ID <> G_MISS_CHAR
977           -- verify if data is valid
978           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
979           NULL;
980 
981          select count(*) into l_count
985          if l_count <> 1 then
982          from aso_quote_lines_all
983          where quote_line_id = p_quote_line_id;
984 
986          x_return_status := FND_API.G_RET_STS_ERROR;
987          end if;
988 
989       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
990       THEN
991           -- Hint: Validate data
992           -- IF p_QUOTE_LINE_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          if (p_QUOTE_LINE_ID <> FND_API.G_MISS_CHAR) then
999             select count(*) into l_count
1000             from aso_quote_lines_all
1001             where quote_line_id = p_quote_line_id;
1002 
1003             if l_count <> 1 then
1004             x_return_status := FND_API.G_RET_STS_ERROR;
1005             end if;
1006          end if;
1007       END IF;
1008 
1009       -- Standard call to get message count and if count is 1, get message info.
1010       FND_MSG_PUB.Count_And_Get
1011       (  p_count          =>   x_msg_count,
1012          p_data           =>   x_msg_data
1013       );
1014 
1015 END Validate_QUOTE_LINE_ID;
1016 
1017 
1018 PROCEDURE Validate_NAME (
1019     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1020     P_Validation_mode            IN   VARCHAR2,
1021     P_NAME                IN   VARCHAR2,
1022     -- 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.
1023     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
1024     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
1025     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
1026     )
1027 IS
1028 BEGIN
1029 
1030       -- Initialize message list if p_init_msg_list is set to TRUE.
1031       IF FND_API.to_Boolean( p_init_msg_list )
1032       THEN
1033           FND_MSG_PUB.initialize;
1034       END IF;
1035 
1036 
1037       -- Initialize API return status to SUCCESS
1038       x_return_status := FND_API.G_RET_STS_SUCCESS;
1039 
1040       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1041       THEN
1042           -- Hint: Validate data
1043           -- IF p_NAME is not NULL and p_NAME <> G_MISS_CHAR
1044           -- verify if data is valid
1045           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1046           NULL;
1047       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1048       THEN
1049           -- Hint: Validate data
1050           -- IF p_NAME <> G_MISS_CHAR
1051           -- verify if data is valid
1052           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1053           NULL;
1054       END IF;
1055 
1056       -- Standard call to get message count and if count is 1, get message info.
1057       FND_MSG_PUB.Count_And_Get
1058       (  p_count          =>   x_msg_count,
1059          p_data           =>   x_msg_data
1060       );
1061 
1062 END Validate_NAME;
1063 
1064 PROCEDURE Validate_ATTRIBUTE_TYPE_CODE(
1065     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1066     P_Validation_mode            IN   VARCHAR2,
1067     P_ATTRIBUTE_TYPE_CODE        IN   VARCHAR2,
1068     -- 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.
1069     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
1070     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
1071     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2)
1072 
1073 IS
1074 l_count  NUMBER;
1075 BEGIN
1076 
1077       -- Initialize message list if p_init_msg_list is set to TRUE.
1078       IF FND_API.to_Boolean( p_init_msg_list )
1079       THEN
1080           FND_MSG_PUB.initialize;
1081       END IF;
1082 
1083 
1084       -- Initialize API return status to SUCCESS
1085       x_return_status := FND_API.G_RET_STS_SUCCESS;
1086 
1087       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1088       THEN
1089           -- Hint: Validate data
1090           -- IF p_NAME is not NULL and p_NAME <> G_MISS_CHAR
1091           -- verify if data is valid
1092           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1093           NULL;
1094           select count(*) into l_count
1095           from aso_lookups
1096           where lookup_type = 'ASO_LINE_ATTRIBUTE_TYPE'
1097           and lookup_code = p_ATTRIBUTE_TYPE_CODE;
1098 
1099           IF l_count < 1 then
1100            x_return_status := FND_API.G_RET_STS_ERROR;
1101           END IF;
1102 
1103 
1104       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1105       THEN
1106           -- Hint: Validate data
1107           -- IF p_NAME <> G_MISS_CHAR
1108           -- verify if data is valid
1109           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1110           NULL;
1111 
1112         IF p_ATTRIBUTE_TYPE_CODE <> FND_API.G_MISS_CHAR THEN
1113           select count(*) into l_count
1114           from aso_lookups
1115           where lookup_type = 'ASO_LINE_ATTRIBUTE_TYPE'
1119            x_return_status := FND_API.G_RET_STS_ERROR;
1116           and lookup_code = p_ATTRIBUTE_TYPE_CODE;
1117 
1118           IF l_count < 1 then
1120           END IF;
1121 
1122         END IF;
1123       END IF;
1124 
1125       -- Standard call to get message count and if count is 1, get message info.
1126       FND_MSG_PUB.Count_And_Get
1127       (  p_count          =>   x_msg_count,
1128          p_data           =>   x_msg_data
1129       );
1130 End Validate_ATTRIBUTE_TYPE_CODE;
1131 
1132 PROCEDURE  Validate_STATUS(
1133     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1134     P_Validation_mode            IN   VARCHAR2,
1135     P_STATUS                     IN   VARCHAR2,
1136     -- 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.
1137     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
1138     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
1139     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2)
1140 IS
1141 l_count NUMBER;
1142 BEGIN
1143 
1144       -- Initialize message list if p_init_msg_list is set to TRUE.
1145       IF FND_API.to_Boolean( p_init_msg_list )
1146       THEN
1147           FND_MSG_PUB.initialize;
1148       END IF;
1149 
1150 
1151       -- Initialize API return status to SUCCESS
1152       x_return_status := FND_API.G_RET_STS_SUCCESS;
1153 
1154       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1155       THEN
1156           -- Hint: Validate data
1157           -- IF p_NAME is not NULL and p_NAME <> G_MISS_CHAR
1158           -- verify if data is valid
1159           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1160           NULL;
1161 
1162           select count(*) into l_count
1163           from aso_lookups
1164           where lookup_type = 'ASO_LINE_ATTRIBUTE_STATUS'
1165           and lookup_code = p_status;
1166 
1167           if l_count < 1 then
1168              x_return_status := FND_API.G_RET_STS_ERROR;
1169           end if;
1170 
1171       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1172       THEN
1173           -- Hint: Validate data
1174           -- IF p_NAME <> G_MISS_CHAR
1175           -- verify if data is valid
1176           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1177           NULL;
1178        IF p_STATUS <> FND_API.G_MISS_CHAR THEN
1179          select count(*) into l_count
1180           from aso_lookups
1181           where lookup_type = 'ATTRIBUTE_STATUS'
1182           and lookup_code = p_status;
1183 
1184           if l_count < 1 then
1185              x_return_status := FND_API.G_RET_STS_ERROR;
1186           end if;
1187         END IF;
1188       END IF;
1189 
1190       -- Standard call to get message count and if count is 1, get message info.
1191       FND_MSG_PUB.Count_And_Get
1192       (  p_count          =>   x_msg_count,
1193          p_data           =>   x_msg_data
1194       );
1195 END VALIDATE_STATUS;
1196 
1197 
1198 
1199 PROCEDURE Validate_VALUE (
1200     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1201     P_Validation_mode            IN   VARCHAR2,
1202     P_VALUE                IN   VARCHAR2,
1203     -- 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.
1204     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
1205     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
1206     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
1207     )
1208 IS
1209 BEGIN
1210 
1211       -- Initialize message list if p_init_msg_list is set to TRUE.
1212       IF FND_API.to_Boolean( p_init_msg_list )
1213       THEN
1214           FND_MSG_PUB.initialize;
1215       END IF;
1216 
1217 
1218       -- Initialize API return status to SUCCESS
1219       x_return_status := FND_API.G_RET_STS_SUCCESS;
1220 
1221       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1222       THEN
1223           -- Hint: Validate data
1224           -- IF p_VALUE is not NULL and p_VALUE <> G_MISS_CHAR
1225           -- verify if data is valid
1226           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1227           NULL;
1228       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1229       THEN
1230           -- Hint: Validate data
1231           -- IF p_VALUE <> G_MISS_CHAR
1232           -- verify if data is valid
1233           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1234           NULL;
1235       END IF;
1236 
1237       -- Standard call to get message count and if count is 1, get message info.
1238       FND_MSG_PUB.Count_And_Get
1239       (  p_count          =>   x_msg_count,
1240          p_data           =>   x_msg_data
1241       );
1242 
1243 END Validate_VALUE;
1244 
1245 
1246 PROCEDURE Validate_START_DATE_ACTIVE (
1247     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1248     P_Validation_mode            IN   VARCHAR2,
1249     P_START_DATE_ACTIVE                IN   DATE,
1253     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
1250     -- 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.
1251     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
1252     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
1254     )
1255 IS
1256 BEGIN
1257 
1258       -- Initialize message list if p_init_msg_list is set to TRUE.
1259       IF FND_API.to_Boolean( p_init_msg_list )
1260       THEN
1261           FND_MSG_PUB.initialize;
1262       END IF;
1263 
1264 
1265       -- Initialize API return status to SUCCESS
1266       x_return_status := FND_API.G_RET_STS_SUCCESS;
1267 
1268       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1269       THEN
1270           -- Hint: Validate data
1271           -- IF p_START_DATE_ACTIVE is not NULL and p_START_DATE_ACTIVE <> G_MISS_CHAR
1272           -- verify if data is valid
1273           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1274           NULL;
1275       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1276       THEN
1277           -- Hint: Validate data
1278           -- IF p_START_DATE_ACTIVE <> G_MISS_CHAR
1279           -- verify if data is valid
1280           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1281           NULL;
1282       END IF;
1283 
1284       -- Standard call to get message count and if count is 1, get message info.
1285       FND_MSG_PUB.Count_And_Get
1286       (  p_count          =>   x_msg_count,
1287          p_data           =>   x_msg_data
1288       );
1289 
1290 END Validate_START_DATE_ACTIVE;
1291 
1292 
1293 PROCEDURE Validate_END_DATE_ACTIVE (
1294     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1295     P_Validation_mode            IN   VARCHAR2,
1296     P_END_DATE_ACTIVE                IN   DATE,
1297     -- 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.
1298     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
1299     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
1300     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
1301     )
1302 IS
1303 BEGIN
1304 
1305       -- Initialize message list if p_init_msg_list is set to TRUE.
1306       IF FND_API.to_Boolean( p_init_msg_list )
1307       THEN
1308           FND_MSG_PUB.initialize;
1309       END IF;
1310 
1311 
1312       -- Initialize API return status to SUCCESS
1313       x_return_status := FND_API.G_RET_STS_SUCCESS;
1314 
1315       IF(p_validation_mode = ASO_UTILITY_PVT.G_CREATE)
1316       THEN
1317           -- Hint: Validate data
1318           -- IF p_END_DATE_ACTIVE is not NULL and p_END_DATE_ACTIVE <> G_MISS_CHAR
1319           -- verify if data is valid
1320           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1321           NULL;
1322       ELSIF(p_validation_mode = ASO_UTILITY_PVT.G_UPDATE)
1323       THEN
1324           -- Hint: Validate data
1325           -- IF p_END_DATE_ACTIVE <> G_MISS_CHAR
1326           -- verify if data is valid
1327           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1328           NULL;
1329       END IF;
1330 
1331       -- Standard call to get message count and if count is 1, get message info.
1332       FND_MSG_PUB.Count_And_Get
1333       (  p_count          =>   x_msg_count,
1334          p_data           =>   x_msg_data
1335       );
1336 
1337 END Validate_END_DATE_ACTIVE;
1338 
1339 
1340 -- Hint: inter-field level validation can be added here.
1341 -- Hint: If p_validation_mode = ASO_UTILITY_PVT.G_VALIDATE_UPDATE, we should use cursor
1342 --       to get old values for all fields used in inter-field validation and set all G_MISS_XXX fields to original value
1343 --       stored in database table.
1344 PROCEDURE Validate_LINE_ATTRIBS_rec(
1345     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1346     P_Validation_mode            IN   VARCHAR2,
1347     P_LINE_ATTRIBS_Rec     IN    ASO_quote_PUB.LINE_ATTRIBS_EXT_rec_type,
1348     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
1349     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
1350     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
1351     )
1352 IS
1353 BEGIN
1354 
1355       -- Initialize message list if p_init_msg_list is set to TRUE.
1356       IF FND_API.to_Boolean( p_init_msg_list )
1357       THEN
1358           FND_MSG_PUB.initialize;
1359       END IF;
1360 
1361 
1362       -- Initialize API return status to SUCCESS
1363       x_return_status := FND_API.G_RET_STS_SUCCESS;
1364 
1365       -- Hint: Validate data
1366       -- If data not valid
1367       -- THEN
1368       -- x_return_status := FND_API.G_RET_STS_ERROR;
1369 
1370       -- Debug Message
1371       --ASO_UTILITY_PVT.Print(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'API_INVALID_RECORD');
1372 
1373       -- Standard call to get message count and if count is 1, get message info.
1374       FND_MSG_PUB.Count_And_Get
1375       (  p_count          =>   x_msg_count,
1376          p_data           =>   x_msg_data
1377       );
1378 
1379 END Validate_LINE_ATTRIBS_Rec;
1380 
1384     P_Validation_mode            IN   VARCHAR2,
1381 PROCEDURE Validate_line_attribs(
1382     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1383     P_Validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1385     P_LINE_ATTRIBS_Rec     IN    ASO_quote_PUB.LINE_ATTRIBS_EXT_rec_type,
1386     X_Return_Status              OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
1387     X_Msg_Count                  OUT NOCOPY /* file.sql.39 change */    NUMBER,
1388     X_Msg_Data                   OUT NOCOPY /* file.sql.39 change */    VARCHAR2
1389     )
1390 IS
1391 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_line_attribs';
1392  BEGIN
1393 
1394 
1395 
1396       -- Initialize API return status to SUCCESS
1397       x_return_status := FND_API.G_RET_STS_SUCCESS;
1398 
1399       IF (p_validation_level >= ASO_UTILITY_PVT.G_VALID_LEVEL_ITEM) THEN
1400           -- Hint: We provide validation procedure for every column. Developer should delete
1401           --       unnecessary validation procedures.
1402           Validate_QUOTE_LINE_ID(
1403               p_init_msg_list          => FND_API.G_FALSE,
1404               p_validation_mode        => p_validation_mode,
1405               p_QUOTE_LINE_ID   => P_LINE_ATTRIBS_Rec.QUOTE_LINE_ID,
1406               x_return_status          => x_return_status,
1407               x_msg_count              => x_msg_count,
1408               x_msg_data               => x_msg_data);
1409           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1410               raise FND_API.G_EXC_ERROR;
1411           END IF;
1412 
1413            Validate_ATTRIBUTE_TYPE_CODE(
1414               p_init_msg_list          => FND_API.G_FALSE,
1415               p_validation_mode        => p_validation_mode,
1416               p_ATTRIBUTE_TYPE_CODE   => P_LINE_ATTRIBS_Rec.ATTRIBUTE_TYPE_CODE,
1417               x_return_status          => x_return_status,
1418               x_msg_count              => x_msg_count,
1419               x_msg_data               => x_msg_data);
1420           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1421               raise FND_API.G_EXC_ERROR;
1422           END IF;
1423 
1424            Validate_STATUS(
1425               p_init_msg_list          => FND_API.G_FALSE,
1426               p_validation_mode        => p_validation_mode,
1427               p_STATUS   => P_LINE_ATTRIBS_Rec.STATUS,
1428               x_return_status          => x_return_status,
1429               x_msg_count              => x_msg_count,
1430               x_msg_data               => x_msg_data);
1431           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1432               raise FND_API.G_EXC_ERROR;
1433           END IF;
1434       END IF;
1435 
1436 END Validate_line_attribs;
1437 
1438 End ASO_LINE_ATTRIBS_PVT;