DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSP_PACKLIST_LINES_PVT

Source


1 PACKAGE BODY CSP_PACKLIST_LINES_PVT AS
2 /* $Header: cspvtalb.pls 115.8 2003/05/02 17:14:15 phegde ship $ */
3 -- Start of Comments
4 -- Package name     : CSP_PACKLIST_LINES_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSP_PACKLIST_LINES_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'cspvtalb.pls';
13 
14 G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
15 G_LOGIN_ID        NUMBER := FND_GLOBAL.LOGIN_ID;
16 
17 -- Hint: Primary key needs to be returned.
18 PROCEDURE Create_packlist_lines(
19     P_Api_Version_Number         IN   NUMBER,
20     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
21     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
22     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
23     P_PLL_Rec     IN    PLL_Rec_Type  := G_MISS_PLL_REC,
24   --Hint: Add detail tables as parameter lists if it's master-detail relationship.
25     X_PACKLIST_LINE_ID     OUT NOCOPY  NUMBER,
26     X_Return_Status              OUT NOCOPY  VARCHAR2,
27     X_Msg_Count                  OUT NOCOPY  NUMBER,
28     X_Msg_Data                   OUT NOCOPY  VARCHAR2
29     )
30 
31  IS
32 l_api_name                CONSTANT VARCHAR2(30) := 'Create_packlist_lines';
33 l_api_version_number      CONSTANT NUMBER   := 1.0;
34 l_return_status_full        VARCHAR2(1);
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_PACKLIST_LINES_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       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', '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_packlist_lines_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_PLL_Rec      =>  P_PLL_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 => 1.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           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Validate_packlist_lines');
117 
118           -- Invoke validation procedures
119           Validate_packlist_lines(
120               p_init_msg_list    => FND_API.G_FALSE,
121               p_validation_level => p_validation_level,
122               p_validation_mode  => JTF_PLSQL_API.G_CREATE,
123               P_PLL_Rec  =>  P_PLL_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       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Calling create table handler');
137 
138       -- Invoke table handler(CSP_PACKLIST_LINES_PKG.Insert_Row)
139       CSP_PACKLIST_LINES_PKG.Insert_Row(
140           px_PACKLIST_LINE_ID  => x_PACKLIST_LINE_ID,
141           p_CREATED_BY  => p_PLL_rec.CREATED_BY,
142           p_CREATION_DATE  => p_PLL_rec.CREATION_DATE,
143           p_LAST_UPDATED_BY  => p_PLL_rec.LAST_UPDATED_BY,
144           p_LAST_UPDATE_DATE  => p_PLL_rec.LAST_UPDATE_DATE,
145           p_LAST_UPDATE_LOGIN  => p_PLL_rec.LAST_UPDATE_LOGIN,
146           p_ORGANIZATION_ID  => p_PLL_rec.ORGANIZATION_ID,
147           p_PACKLIST_LINE_NUMBER  => p_PLL_rec.PACKLIST_LINE_NUMBER,
148           p_PACKLIST_HEADER_ID  => p_PLL_rec.PACKLIST_HEADER_ID,
149           p_BOX_ID  => p_PLL_rec.BOX_ID,
150           p_PICKLIST_LINE_ID  => p_PLL_rec.PICKLIST_LINE_ID,
151           p_PACKLIST_LINE_STATUS  => p_PLL_rec.PACKLIST_LINE_STATUS,
152           p_INVENTORY_ITEM_ID  => p_PLL_rec.INVENTORY_ITEM_ID,
153           p_QUANTITY_PACKED  => p_PLL_rec.QUANTITY_PACKED,
154           p_QUANTITY_SHIPPED  => p_PLL_rec.QUANTITY_SHIPPED,
155           p_QUANTITY_RECEIVED  => p_PLL_rec.QUANTITY_RECEIVED,
156           p_ATTRIBUTE_CATEGORY  => p_PLL_rec.ATTRIBUTE_CATEGORY,
157           p_ATTRIBUTE1  => p_PLL_rec.ATTRIBUTE1,
158           p_ATTRIBUTE2  => p_PLL_rec.ATTRIBUTE2,
159           p_ATTRIBUTE3  => p_PLL_rec.ATTRIBUTE3,
160           p_ATTRIBUTE4  => p_PLL_rec.ATTRIBUTE4,
161           p_ATTRIBUTE5  => p_PLL_rec.ATTRIBUTE5,
162           p_ATTRIBUTE6  => p_PLL_rec.ATTRIBUTE6,
163           p_ATTRIBUTE7  => p_PLL_rec.ATTRIBUTE7,
164           p_ATTRIBUTE8  => p_PLL_rec.ATTRIBUTE8,
165           p_ATTRIBUTE9  => p_PLL_rec.ATTRIBUTE9,
166           p_ATTRIBUTE10  => p_PLL_rec.ATTRIBUTE10,
167           p_ATTRIBUTE11  => p_PLL_rec.ATTRIBUTE11,
168           p_ATTRIBUTE12  => p_PLL_rec.ATTRIBUTE12,
169           p_ATTRIBUTE13  => p_PLL_rec.ATTRIBUTE13,
170           p_ATTRIBUTE14  => p_PLL_rec.ATTRIBUTE14,
171           p_ATTRIBUTE15  => p_PLL_rec.ATTRIBUTE15,
172           p_UOM_CODE  => p_PLL_rec.UOM_CODE,
173           p_LINE_ID  => p_PLL_rec.LINE_ID);
174       -- Hint: Primary key should be returned.
175       -- x_PACKLIST_LINE_ID := px_PACKLIST_LINE_ID;
176 
177       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
178           RAISE FND_API.G_EXC_ERROR;
179       END IF;
180 
181       --
182       -- End of API body
183       --
184 
185       -- Standard check for p_commit
186       IF FND_API.to_Boolean( p_commit )
187       THEN
188           COMMIT WORK;
189       END IF;
190 
191 
192       -- Debug Message
193       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: ' || l_api_name || 'end');
194 
195 
196       -- Standard call to get message count and if count is 1, get message info.
197       FND_MSG_PUB.Count_And_Get
198       (  p_count          =>   x_msg_count,
199          p_data           =>   x_msg_data
200       );
201 
202 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
203 /*
204       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
205       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
206       THEN
207           AS_CALLOUT_PKG.Create_packlist_lines_AC(
208                   p_api_version_number   =>  2.0,
209                   p_init_msg_list        =>  FND_API.G_FALSE,
210                   p_commit               =>  FND_API.G_FALSE,
211                   p_validation_level     =>  p_validation_level,
212                   P_PLL_Rec      =>  P_PLL_Rec,
213           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
214                   x_return_status        =>  x_return_status,
215                   x_msg_count            =>  x_msg_count,
216                   x_msg_data             =>  x_msg_data);
217       END IF;
218 */
219       EXCEPTION
220           WHEN FND_API.G_EXC_ERROR THEN
221               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
222                    P_API_NAME => L_API_NAME
223                   ,P_PKG_NAME => G_PKG_NAME
224                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
225                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
226                   ,X_MSG_COUNT => X_MSG_COUNT
227                   ,X_MSG_DATA => X_MSG_DATA
228                   ,X_RETURN_STATUS => X_RETURN_STATUS);
229 
230           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
231               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
232                    P_API_NAME => L_API_NAME
233                   ,P_PKG_NAME => G_PKG_NAME
234                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
235                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
236                   ,X_MSG_COUNT => X_MSG_COUNT
237                   ,X_MSG_DATA => X_MSG_DATA
238                   ,X_RETURN_STATUS => X_RETURN_STATUS);
239 
240           WHEN OTHERS THEN
241               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
242                    P_API_NAME => L_API_NAME
243                   ,P_PKG_NAME => G_PKG_NAME
244                   ,P_EXCEPTION_LEVEL => JTF_PLSQL_API.G_EXC_OTHERS
245                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
246                   ,X_MSG_COUNT => X_MSG_COUNT
247                   ,X_MSG_DATA => X_MSG_DATA
248                   ,X_RETURN_STATUS => X_RETURN_STATUS);
249 End Create_packlist_lines;
250 
251 
252 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
253 PROCEDURE Update_packlist_lines(
254     P_Api_Version_Number         IN   NUMBER,
255     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
256     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
257     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
258     P_Identity_Salesforce_Id     IN   NUMBER       := NULL,
259     P_PLL_Rec     IN    PLL_Rec_Type,
260     X_Return_Status              OUT NOCOPY  VARCHAR2,
261     X_Msg_Count                  OUT NOCOPY  NUMBER,
262     X_Msg_Data                   OUT NOCOPY  VARCHAR2
263     )
264 
265  IS
266 /*
267 Cursor C_Get_packlist_lines(PACKLIST_LINE_ID Number) IS
268     Select rowid,
269            PACKLIST_LINE_ID,
270            CREATED_BY,
271            CREATION_DATE,
272            LAST_UPDATED_BY,
273            LAST_UPDATE_DATE,
274            LAST_UPDATE_LOGIN,
275            ORGANIZATION_ID,
276            PACKLIST_LINE_NUMBER,
277            PACKLIST_HEADER_ID,
278            BOX_ID,
279            PICKLIST_LINE_ID,
280            PACKLIST_LINE_STATUS,
281            INVENTORY_ITEM_ID,
282            QUANTITY_PACKED,
283            QUANTITY_SHIPPED,
284            QUANTITY_RECEIVED,
285            ATTRIBUTE_CATEGORY,
286            ATTRIBUTE1,
287            ATTRIBUTE2,
288            ATTRIBUTE3,
289            ATTRIBUTE4,
290            ATTRIBUTE5,
291            ATTRIBUTE6,
292            ATTRIBUTE7,
293            ATTRIBUTE8,
294            ATTRIBUTE9,
295            ATTRIBUTE10,
296            ATTRIBUTE11,
297            ATTRIBUTE12,
298            ATTRIBUTE13,
299            ATTRIBUTE14,
300            ATTRIBUTE15,
301            UOM_CODE,
302            LINE_ID
303     From  CSP_PACKLIST_LINES
304     -- Hint: Developer need to provide Where clause
305     For Update NOWAIT;
306 */
307 l_api_name                CONSTANT VARCHAR2(30) := 'Update_packlist_lines';
308 l_api_version_number      CONSTANT NUMBER   := 1.0;
309 -- Local Variables
310 l_identity_sales_member_rec   AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
311 l_ref_PLL_rec  CSP_packlist_lines_PVT.PLL_Rec_Type;
312 l_tar_PLL_rec  CSP_packlist_lines_PVT.PLL_Rec_Type := P_PLL_Rec;
313 l_rowid  ROWID;
314  BEGIN
315       -- Standard Start of API savepoint
316       SAVEPOINT UPDATE_PACKLIST_LINES_PVT;
317 
318       -- Standard call to check for call compatibility.
319       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
320                          	               p_api_version_number,
321                                            l_api_name,
322                                            G_PKG_NAME)
323       THEN
324           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
325       END IF;
326 
327 
328       -- Initialize message list if p_init_msg_list is set to TRUE.
329       IF FND_API.to_Boolean( p_init_msg_list )
330       THEN
331           FND_MSG_PUB.initialize;
332       END IF;
333 
334 
335       -- Debug Message
336       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: ' || l_api_name || 'start');
337 
338 
339       -- Initialize API return status to SUCCESS
340       x_return_status := FND_API.G_RET_STS_SUCCESS;
341 
342       --
343       -- Api body
344       --
345 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
346 /*
347       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
348       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
349       THEN
350           AS_CALLOUT_PKG.Update_packlist_lines_BU(
351                   p_api_version_number   =>  2.0,
352                   p_init_msg_list        =>  FND_API.G_FALSE,
353                   p_commit               =>  FND_API.G_FALSE,
354                   p_validation_level     =>  p_validation_level,
355                   p_identity_salesforce_id => p_identity_salesforce_id,
356                   P_PLL_Rec      =>  P_PLL_Rec,
357           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
358                   x_return_status        =>  x_return_status,
359                   x_msg_count            =>  x_msg_count,
360                   x_msg_data             =>  x_msg_data);
361       END IF;
362 */
363 /*
364       AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
365           p_api_version_number => 1.0
366          ,p_salesforce_id => p_identity_salesforce_id
367          ,x_return_status => x_return_status
368          ,x_msg_count => x_msg_count
369          ,x_msg_data => x_msg_data
370          ,x_sales_member_rec => l_identity_sales_member_rec);
371 
372       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
373           RAISE FND_API.G_EXC_ERROR;
374       END IF;
375 */
376       -- Debug Message
377       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: - Open Cursor to Select');
378 
379 /*
380       Open C_Get_packlist_lines( l_tar_PLL_rec.PACKLIST_LINE_ID);
381 
382       Fetch C_Get_packlist_lines into
383                l_rowid,
384                l_ref_PLL_rec.PACKLIST_LINE_ID,
385                l_ref_PLL_rec.CREATED_BY,
386                l_ref_PLL_rec.CREATION_DATE,
387                l_ref_PLL_rec.LAST_UPDATED_BY,
388                l_ref_PLL_rec.LAST_UPDATE_DATE,
389                l_ref_PLL_rec.LAST_UPDATE_LOGIN,
390                l_ref_PLL_rec.ORGANIZATION_ID,
391                l_ref_PLL_rec.PACKLIST_LINE_NUMBER,
392                l_ref_PLL_rec.PACKLIST_HEADER_ID,
393                l_ref_PLL_rec.BOX_ID,
394                l_ref_PLL_rec.PICKLIST_LINE_ID,
395                l_ref_PLL_rec.PACKLIST_LINE_STATUS,
396                l_ref_PLL_rec.INVENTORY_ITEM_ID,
397                l_ref_PLL_rec.QUANTITY_PACKED,
398                l_ref_PLL_rec.QUANTITY_SHIPPED,
399                l_ref_PLL_rec.QUANTITY_RECEIVED,
400                l_ref_PLL_rec.ATTRIBUTE_CATEGORY,
401                l_ref_PLL_rec.ATTRIBUTE1,
402                l_ref_PLL_rec.ATTRIBUTE2,
403                l_ref_PLL_rec.ATTRIBUTE3,
404                l_ref_PLL_rec.ATTRIBUTE4,
405                l_ref_PLL_rec.ATTRIBUTE5,
406                l_ref_PLL_rec.ATTRIBUTE6,
407                l_ref_PLL_rec.ATTRIBUTE7,
408                l_ref_PLL_rec.ATTRIBUTE8,
409                l_ref_PLL_rec.ATTRIBUTE9,
410                l_ref_PLL_rec.ATTRIBUTE10,
411                l_ref_PLL_rec.ATTRIBUTE11,
412                l_ref_PLL_rec.ATTRIBUTE12,
413                l_ref_PLL_rec.ATTRIBUTE13,
414                l_ref_PLL_rec.ATTRIBUTE14,
415                l_ref_PLL_rec.ATTRIBUTE15,
416                l_ref_PLL_rec.UOM_CODE,
417                l_ref_PLL_rec.LINE_ID;
418 
419        If ( C_Get_packlist_lines%NOTFOUND) Then
420            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
421            THEN
422                FND_MESSAGE.Set_Name('CSP', 'API_MISSING_UPDATE_TARGET');
423                FND_MESSAGE.Set_Token ('INFO', 'packlist_lines', FALSE);
424                FND_MSG_PUB.Add;
425            END IF;
426            raise FND_API.G_EXC_ERROR;
427        END IF;
428        -- Debug Message
429        JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: - Close Cursor');
430        Close     C_Get_packlist_lines;
431 
432 
433 
434       If (l_tar_PLL_rec.last_update_date is NULL or
435           l_tar_PLL_rec.last_update_date = FND_API.G_MISS_Date ) Then
436           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
437           THEN
438               FND_MESSAGE.Set_Name('CSP', 'API_MISSING_ID');
439               FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
440               FND_MSG_PUB.ADD;
441           END IF;
442           raise FND_API.G_EXC_ERROR;
443       End if;
444       -- Check Whether record has been changed by someone else
445       If (l_tar_PLL_rec.last_update_date <> l_ref_PLL_rec.last_update_date) Then
446           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
447           THEN
448               FND_MESSAGE.Set_Name('CSP', 'API_RECORD_CHANGED');
449               FND_MESSAGE.Set_Token('INFO', 'packlist_lines', FALSE);
450               FND_MSG_PUB.ADD;
451           END IF;
452           raise FND_API.G_EXC_ERROR;
453       End if;
454 */
455       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
456       THEN
457           -- Debug message
458           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Validate_packlist_lines');
459 
460           -- Invoke validation procedures
461           Validate_packlist_lines(
462               p_init_msg_list    => FND_API.G_FALSE,
463               p_validation_level => p_validation_level,
464               p_validation_mode  => JTF_PLSQL_API.G_UPDATE,
465               P_PLL_Rec  =>  P_PLL_Rec,
466               x_return_status    => x_return_status,
467               x_msg_count        => x_msg_count,
468               x_msg_data         => x_msg_data);
469       END IF;
470 
471       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
472           RAISE FND_API.G_EXC_ERROR;
473       END IF;
474 
475       -- Hint: Add corresponding Master-Detail business logic here if necessary.
476 
477       -- Debug Message
478       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Calling update table handler');
479 
480       -- Invoke table handler(CSP_PACKLIST_LINES_PKG.Update_Row)
481       CSP_PACKLIST_LINES_PKG.Update_Row(
482           p_PACKLIST_LINE_ID  => p_PLL_rec.PACKLIST_LINE_ID,
483           p_CREATED_BY  => p_PLL_rec.CREATED_BY,
484           p_CREATION_DATE  => p_PLL_rec.creation_date,
485           p_LAST_UPDATED_BY  => p_PLL_rec.LAST_UPDATED_BY,
486           p_LAST_UPDATE_DATE  => p_PLL_rec.LAST_UPDATE_DATE,
487           p_LAST_UPDATE_LOGIN  => p_PLL_rec.LAST_UPDATE_LOGIN,
488           p_ORGANIZATION_ID  => p_PLL_rec.ORGANIZATION_ID,
489           p_PACKLIST_LINE_NUMBER  => p_PLL_rec.PACKLIST_LINE_NUMBER,
490           p_PACKLIST_HEADER_ID  => p_PLL_rec.PACKLIST_HEADER_ID,
491           p_BOX_ID  => p_PLL_rec.BOX_ID,
492           p_PICKLIST_LINE_ID  => p_PLL_rec.PICKLIST_LINE_ID,
493           p_PACKLIST_LINE_STATUS  => p_PLL_rec.PACKLIST_LINE_STATUS,
494           p_INVENTORY_ITEM_ID  => p_PLL_rec.INVENTORY_ITEM_ID,
495           p_QUANTITY_PACKED  => p_PLL_rec.QUANTITY_PACKED,
496           p_QUANTITY_SHIPPED  => p_PLL_rec.QUANTITY_SHIPPED,
497           p_QUANTITY_RECEIVED  => p_PLL_rec.QUANTITY_RECEIVED,
498           p_ATTRIBUTE_CATEGORY  => p_PLL_rec.ATTRIBUTE_CATEGORY,
499           p_ATTRIBUTE1  => p_PLL_rec.ATTRIBUTE1,
500           p_ATTRIBUTE2  => p_PLL_rec.ATTRIBUTE2,
501           p_ATTRIBUTE3  => p_PLL_rec.ATTRIBUTE3,
502           p_ATTRIBUTE4  => p_PLL_rec.ATTRIBUTE4,
503           p_ATTRIBUTE5  => p_PLL_rec.ATTRIBUTE5,
504           p_ATTRIBUTE6  => p_PLL_rec.ATTRIBUTE6,
505           p_ATTRIBUTE7  => p_PLL_rec.ATTRIBUTE7,
506           p_ATTRIBUTE8  => p_PLL_rec.ATTRIBUTE8,
507           p_ATTRIBUTE9  => p_PLL_rec.ATTRIBUTE9,
508           p_ATTRIBUTE10  => p_PLL_rec.ATTRIBUTE10,
509           p_ATTRIBUTE11  => p_PLL_rec.ATTRIBUTE11,
510           p_ATTRIBUTE12  => p_PLL_rec.ATTRIBUTE12,
511           p_ATTRIBUTE13  => p_PLL_rec.ATTRIBUTE13,
512           p_ATTRIBUTE14  => p_PLL_rec.ATTRIBUTE14,
513           p_ATTRIBUTE15  => p_PLL_rec.ATTRIBUTE15,
514           p_UOM_CODE  => p_PLL_rec.UOM_CODE,
515           p_LINE_ID  => p_PLL_rec.LINE_ID);
516       --
517       -- End of API body.
518       --
519 
520       -- Standard check for p_commit
521       IF FND_API.to_Boolean( p_commit )
522       THEN
523           COMMIT WORK;
524       END IF;
525 
526 
527       -- Debug Message
528       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: ' || l_api_name || 'end');
529 
530 
531       -- Standard call to get message count and if count is 1, get message info.
532       FND_MSG_PUB.Count_And_Get
533       (  p_count          =>   x_msg_count,
534          p_data           =>   x_msg_data
535       );
536 
537 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
538 /*
539       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
540       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
541       THEN
542           AS_CALLOUT_PKG.Update_packlist_lines_AU(
543                   p_api_version_number   =>  2.0,
544                   p_init_msg_list        =>  FND_API.G_FALSE,
545                   p_commit               =>  FND_API.G_FALSE,
546                   p_validation_level     =>  p_validation_level,
547                   p_identity_salesforce_id => p_identity_salesforce_id,
548                   P_PLL_Rec      =>  P_PLL_Rec,
549           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
550                   x_return_status        =>  x_return_status,
551                   x_msg_count            =>  x_msg_count,
552                   x_msg_data             =>  x_msg_data);
553       END IF;
554 */
555       EXCEPTION
556           WHEN FND_API.G_EXC_ERROR THEN
557               JTF_PLSQL_API.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_ERROR
561                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.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 FND_API.G_EXC_UNEXPECTED_ERROR THEN
567               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
568                    P_API_NAME => L_API_NAME
569                   ,P_PKG_NAME => G_PKG_NAME
570                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
571                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
572                   ,X_MSG_COUNT => X_MSG_COUNT
573                   ,X_MSG_DATA => X_MSG_DATA
574                   ,X_RETURN_STATUS => X_RETURN_STATUS);
575 
576           WHEN OTHERS THEN
577               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
578                    P_API_NAME => L_API_NAME
579                   ,P_PKG_NAME => G_PKG_NAME
580                   ,P_EXCEPTION_LEVEL => JTF_PLSQL_API.G_EXC_OTHERS
581                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
582                   ,X_MSG_COUNT => X_MSG_COUNT
583                   ,X_MSG_DATA => X_MSG_DATA
584                   ,X_RETURN_STATUS => X_RETURN_STATUS);
585 End Update_packlist_lines;
586 
587 
588 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
589 --       The Master delete procedure may not be needed depends on different business requirements.
590 PROCEDURE Delete_packlist_lines(
591     P_Api_Version_Number         IN   NUMBER,
592     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
593     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
594     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
595     P_identity_salesforce_id     IN   NUMBER       := NULL,
596     P_PLL_Rec     IN PLL_Rec_Type,
597     X_Return_Status              OUT NOCOPY  VARCHAR2,
598     X_Msg_Count                  OUT NOCOPY  NUMBER,
599     X_Msg_Data                   OUT NOCOPY  VARCHAR2
600     )
601 
602  IS
603 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_packlist_lines';
604 l_api_version_number      CONSTANT NUMBER   := 1.0;
605 l_identity_sales_member_rec  AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
606  BEGIN
607       -- Standard Start of API savepoint
608       SAVEPOINT DELETE_PACKLIST_LINES_PVT;
609 
610       -- Standard call to check for call compatibility.
611       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
612                          	             p_api_version_number,
613                                            l_api_name,
614                                            G_PKG_NAME)
615       THEN
616           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
617       END IF;
618 
619 
620       -- Initialize message list if p_init_msg_list is set to TRUE.
621       IF FND_API.to_Boolean( p_init_msg_list )
622       THEN
623           FND_MSG_PUB.initialize;
624       END IF;
625 
626 
627       -- Debug Message
628       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: ' || l_api_name || 'start');
629 
630 
631       -- Initialize API return status to SUCCESS
632       x_return_status := FND_API.G_RET_STS_SUCCESS;
633 
634       --
635       -- Api body
636       --
637 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
638 /*
639       -- if profile AS_PRE_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
640       IF(FND_PROFILE.VALUE('AS_PRE_CUSTOM_ENABLED')='Y')
641       THEN
642           AS_CALLOUT_PKG.Delete_packlist_lines_BD(
643                   p_api_version_number   =>  2.0,
644                   p_init_msg_list        =>  FND_API.G_FALSE,
645                   p_commit               =>  FND_API.G_FALSE,
646                   p_validation_level     =>  p_validation_level,
647                   p_identity_salesforce_id => p_identity_salesforce_id,
648                   P_PLL_Rec      =>  P_PLL_Rec,
649           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
650                   x_return_status        =>  x_return_status,
651                   x_msg_count            =>  x_msg_count,
652                   x_msg_data             =>  x_msg_data);
653       END IF;
654 */
655 /*
656       AS_SALES_ORG_MANAGER_PVT.Get_CurrentUser(
657           p_api_version_number => 1.0
658          ,p_salesforce_id => p_identity_salesforce_id
659          ,x_return_status => x_return_status
660          ,x_msg_count => x_msg_count
661          ,x_msg_data => x_msg_data
662          ,x_sales_member_rec => l_identity_sales_member_rec);
663 
664       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
665           RAISE FND_API.G_EXC_ERROR;
666       END IF;
667 */
668       -- Debug Message
669       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP',  'Private API: Calling delete table handler');
670 
671       -- Invoke table handler(CSP_PACKLIST_LINES_PKG.Delete_Row)
672       CSP_PACKLIST_LINES_PKG.Delete_Row(
673           p_PACKLIST_LINE_ID  => p_PLL_rec.PACKLIST_LINE_ID);
674       --
675       -- End of API body
676       --
677 
678       -- Standard check for p_commit
679       IF FND_API.to_Boolean( p_commit )
680       THEN
681           COMMIT WORK;
682       END IF;
683 
684 
685       -- Debug Message
686       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: ' || l_api_name || 'end');
687 
688 
689       -- Standard call to get message count and if count is 1, get message info.
690       FND_MSG_PUB.Count_And_Get
691       (  p_count          =>   x_msg_count,
692          p_data           =>   x_msg_data
693       );
694 
695 -- Un-comment the following statements when AS_CALLOUT_PKG is ready.
696 /*
697       -- if profile AS_POST_CUSTOM_ENABLED is set to 'Y', callout procedure is invoked for customization purpose
698       IF(FND_PROFILE.VALUE('AS_POST_CUSTOM_ENABLED')='Y')
699       THEN
700           AS_CALLOUT_PKG.Delete_packlist_lines_AD(
701                   p_api_version_number   =>  2.0,
702                   p_init_msg_list        =>  FND_API.G_FALSE,
703                   p_commit               =>  FND_API.G_FALSE,
704                   p_validation_level     =>  p_validation_level,
705                   p_identity_salesforce_id => p_identity_salesforce_id,
706                   P_PLL_Rec      =>  P_PLL_Rec,
707           -- Hint: Add detail tables as parameter lists if it's master-detail relationship.
708                   x_return_status        =>  x_return_status,
709                   x_msg_count            =>  x_msg_count,
710                   x_msg_data             =>  x_msg_data);
711       END IF;
712 */
713       EXCEPTION
714           WHEN FND_API.G_EXC_ERROR THEN
715               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
716                    P_API_NAME => L_API_NAME
717                   ,P_PKG_NAME => G_PKG_NAME
718                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
719                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
720                   ,X_MSG_COUNT => X_MSG_COUNT
721                   ,X_MSG_DATA => X_MSG_DATA
722                   ,X_RETURN_STATUS => X_RETURN_STATUS);
723 
724           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
725               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
726                    P_API_NAME => L_API_NAME
727                   ,P_PKG_NAME => G_PKG_NAME
728                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
729                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
730                   ,X_MSG_COUNT => X_MSG_COUNT
731                   ,X_MSG_DATA => X_MSG_DATA
732                   ,X_RETURN_STATUS => X_RETURN_STATUS);
733 
734           WHEN OTHERS THEN
735               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
736                    P_API_NAME => L_API_NAME
737                   ,P_PKG_NAME => G_PKG_NAME
738                   ,P_EXCEPTION_LEVEL => JTF_PLSQL_API.G_EXC_OTHERS
739                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
740                   ,X_MSG_COUNT => X_MSG_COUNT
741                   ,X_MSG_DATA => X_MSG_DATA
742                   ,X_RETURN_STATUS => X_RETURN_STATUS);
743 End Delete_packlist_lines;
744 
745 
746 -- This procudure defines the columns for the Dynamic SQL.
747 PROCEDURE Define_Columns(
748     P_PLL_Rec   IN  CSP_PACKLIST_LINES_PUB.PLL_Rec_Type,
749     p_cur_get_PLL   IN   NUMBER
750 )
751 IS
752 BEGIN
753       -- Debug Message
754       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Define Columns Begins');
755 
756       -- define all columns for CSP_PACKLIST_LINES_V view
757       dbms_sql.define_column(p_cur_get_PLL, 1, P_PLL_Rec.PACKLIST_LINE_ID);
758       dbms_sql.define_column(p_cur_get_PLL, 2, P_PLL_Rec.ORGANIZATION_ID);
759       dbms_sql.define_column(p_cur_get_PLL, 3, P_PLL_Rec.PACKLIST_LINE_NUMBER);
760       dbms_sql.define_column(p_cur_get_PLL, 4, P_PLL_Rec.PACKLIST_HEADER_ID);
761       dbms_sql.define_column(p_cur_get_PLL, 5, P_PLL_Rec.BOX_ID);
762       dbms_sql.define_column(p_cur_get_PLL, 6, P_PLL_Rec.PICKLIST_LINE_ID);
763       dbms_sql.define_column(p_cur_get_PLL, 7, P_PLL_Rec.PACKLIST_LINE_STATUS, 30);
764       dbms_sql.define_column(p_cur_get_PLL, 8, P_PLL_Rec.INVENTORY_ITEM_ID);
765       dbms_sql.define_column(p_cur_get_PLL, 9, P_PLL_Rec.QUANTITY_PACKED);
766       dbms_sql.define_column(p_cur_get_PLL, 10, P_PLL_Rec.QUANTITY_SHIPPED);
767       dbms_sql.define_column(p_cur_get_PLL, 11, P_PLL_Rec.QUANTITY_RECEIVED);
768       dbms_sql.define_column(p_cur_get_PLL, 12, P_PLL_Rec.ATTRIBUTE_CATEGORY, 30);
769       dbms_sql.define_column(p_cur_get_PLL, 13, P_PLL_Rec.ATTRIBUTE1, 150);
770       dbms_sql.define_column(p_cur_get_PLL, 14, P_PLL_Rec.ATTRIBUTE2, 150);
771       dbms_sql.define_column(p_cur_get_PLL, 15, P_PLL_Rec.ATTRIBUTE3, 150);
772       dbms_sql.define_column(p_cur_get_PLL, 16, P_PLL_Rec.ATTRIBUTE4, 150);
773       dbms_sql.define_column(p_cur_get_PLL, 17, P_PLL_Rec.ATTRIBUTE5, 150);
774       dbms_sql.define_column(p_cur_get_PLL, 18, P_PLL_Rec.ATTRIBUTE6, 150);
775       dbms_sql.define_column(p_cur_get_PLL, 19, P_PLL_Rec.ATTRIBUTE7, 150);
776       dbms_sql.define_column(p_cur_get_PLL, 20, P_PLL_Rec.ATTRIBUTE8, 150);
777       dbms_sql.define_column(p_cur_get_PLL, 21, P_PLL_Rec.ATTRIBUTE9, 150);
778       dbms_sql.define_column(p_cur_get_PLL, 22, P_PLL_Rec.ATTRIBUTE10, 150);
779       dbms_sql.define_column(p_cur_get_PLL, 23, P_PLL_Rec.ATTRIBUTE11, 150);
780       dbms_sql.define_column(p_cur_get_PLL, 24, P_PLL_Rec.ATTRIBUTE12, 150);
781       dbms_sql.define_column(p_cur_get_PLL, 25, P_PLL_Rec.ATTRIBUTE13, 150);
782       dbms_sql.define_column(p_cur_get_PLL, 26, P_PLL_Rec.ATTRIBUTE14, 150);
783       dbms_sql.define_column(p_cur_get_PLL, 27, P_PLL_Rec.ATTRIBUTE15, 150);
784       dbms_sql.define_column(p_cur_get_PLL, 28, P_PLL_Rec.UOM_CODE, 3);
785       dbms_sql.define_column(p_cur_get_PLL, 29, P_PLL_Rec.LINE_ID);
786 
787       -- Debug Message
788       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Define Columns Ends');
789 END Define_Columns;
790 
791 -- This procudure gets column values by the Dynamic SQL.
792 PROCEDURE Get_Column_Values(
793     p_cur_get_PLL   IN   NUMBER,
794     X_PLL_Rec   OUT NOCOPY  CSP_PACKLIST_LINES_PUB.PLL_Rec_Type
795 )
796 IS
797 BEGIN
798       -- Debug Message
799       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Get Column Values Begins');
800 
801       -- get all column values for CSP_PACKLIST_LINES_V table
802       dbms_sql.column_value(p_cur_get_PLL, 1, X_PLL_Rec.PACKLIST_LINE_ID);
803       dbms_sql.column_value(p_cur_get_PLL, 2, X_PLL_Rec.ORGANIZATION_ID);
804       dbms_sql.column_value(p_cur_get_PLL, 3, X_PLL_Rec.PACKLIST_LINE_NUMBER);
805       dbms_sql.column_value(p_cur_get_PLL, 4, X_PLL_Rec.PACKLIST_HEADER_ID);
806       dbms_sql.column_value(p_cur_get_PLL, 5, X_PLL_Rec.BOX_ID);
807       dbms_sql.column_value(p_cur_get_PLL, 6, X_PLL_Rec.PICKLIST_LINE_ID);
808       dbms_sql.column_value(p_cur_get_PLL, 7, X_PLL_Rec.PACKLIST_LINE_STATUS);
809       dbms_sql.column_value(p_cur_get_PLL, 8, X_PLL_Rec.INVENTORY_ITEM_ID);
810       dbms_sql.column_value(p_cur_get_PLL, 9, X_PLL_Rec.QUANTITY_PACKED);
811       dbms_sql.column_value(p_cur_get_PLL, 10, X_PLL_Rec.QUANTITY_SHIPPED);
812       dbms_sql.column_value(p_cur_get_PLL, 11, X_PLL_Rec.QUANTITY_RECEIVED);
813       dbms_sql.column_value(p_cur_get_PLL, 12, X_PLL_Rec.ATTRIBUTE_CATEGORY);
814       dbms_sql.column_value(p_cur_get_PLL, 13, X_PLL_Rec.ATTRIBUTE1);
815       dbms_sql.column_value(p_cur_get_PLL, 14, X_PLL_Rec.ATTRIBUTE2);
816       dbms_sql.column_value(p_cur_get_PLL, 15, X_PLL_Rec.ATTRIBUTE3);
817       dbms_sql.column_value(p_cur_get_PLL, 16, X_PLL_Rec.ATTRIBUTE4);
818       dbms_sql.column_value(p_cur_get_PLL, 17, X_PLL_Rec.ATTRIBUTE5);
819       dbms_sql.column_value(p_cur_get_PLL, 18, X_PLL_Rec.ATTRIBUTE6);
820       dbms_sql.column_value(p_cur_get_PLL, 19, X_PLL_Rec.ATTRIBUTE7);
821       dbms_sql.column_value(p_cur_get_PLL, 20, X_PLL_Rec.ATTRIBUTE8);
822       dbms_sql.column_value(p_cur_get_PLL, 21, X_PLL_Rec.ATTRIBUTE9);
823       dbms_sql.column_value(p_cur_get_PLL, 22, X_PLL_Rec.ATTRIBUTE10);
824       dbms_sql.column_value(p_cur_get_PLL, 23, X_PLL_Rec.ATTRIBUTE11);
825       dbms_sql.column_value(p_cur_get_PLL, 24, X_PLL_Rec.ATTRIBUTE12);
826       dbms_sql.column_value(p_cur_get_PLL, 25, X_PLL_Rec.ATTRIBUTE13);
827       dbms_sql.column_value(p_cur_get_PLL, 26, X_PLL_Rec.ATTRIBUTE14);
828       dbms_sql.column_value(p_cur_get_PLL, 27, X_PLL_Rec.ATTRIBUTE15);
829       dbms_sql.column_value(p_cur_get_PLL, 28, X_PLL_Rec.UOM_CODE);
830       dbms_sql.column_value(p_cur_get_PLL, 29, X_PLL_Rec.LINE_ID);
831 
832       -- Debug Message
833       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Get Column Values Ends');
834 END Get_Column_Values;
835 
836 PROCEDURE Gen_PLL_order_cl(
837     p_order_by_rec   IN   CSP_PACKLIST_LINES_PUB.PLL_sort_rec_type,
838     x_order_by_cl    OUT NOCOPY  VARCHAR2,
839     x_return_status  OUT NOCOPY  VARCHAR2,
840     x_msg_count      OUT NOCOPY  NUMBER,
841     x_msg_data       OUT NOCOPY  VARCHAR2
842 )
843 IS
844 l_order_by_cl        VARCHAR2(1000)   := NULL;
845 l_util_order_by_tbl  JTF_PLSQL_API.Util_order_by_tbl_type;
846 BEGIN
847       -- Debug Message
848       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Generate Order by Begins');
849 
850       -- Hint: Developer should add more statements according to CSP_sort_rec_type
851       -- Ex:
852       -- l_util_order_by_tbl(1).col_choice := p_order_by_rec.customer_name;
853       -- l_util_order_by_tbl(1).col_name := 'Customer_Name';
854 
855       -- Debug Message
856       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Invoke JTF_PLSQL_API.Translate_OrderBy');
857 
858       JTF_PLSQL_API.Translate_OrderBy(
859           p_api_version_number   =>   1.0
860          ,p_init_msg_list        =>   FND_API.G_FALSE
861          ,p_validation_level     =>   FND_API.G_VALID_LEVEL_FULL
862          ,p_order_by_tbl         =>   l_util_order_by_tbl
863          ,x_order_by_clause      =>   l_order_by_cl
864          ,x_return_status        =>   x_return_status
865          ,x_msg_count            =>   x_msg_count
866          ,x_msg_data             =>   x_msg_data);
867 
868       IF(l_order_by_cl IS NOT NULL) THEN
869           x_order_by_cl := 'order by' || l_order_by_cl;
870       ELSE
871           x_order_by_cl := NULL;
872       END IF;
873 
874       -- Debug Message
875       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Generate Order by Ends');
876 END Gen_PLL_order_cl;
877 
878 -- This procedure bind the variables for the Dynamic SQL
879 PROCEDURE Bind(
880     P_PLL_Rec   IN   CSP_PACKLIST_LINES_PUB.PLL_Rec_Type,
881     -- Hint: Add more binding variables here
882     p_cur_get_PLL   IN   NUMBER
883 )
884 IS
885 BEGIN
886       -- Bind variables
887       -- Only those that are not NULL
888       -- Debug Message
889       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Bind Variables Begins');
890 
891       -- The following example applies to all columns,
892       -- developers can copy and paste them.
893       IF( (P_PLL_Rec.PACKLIST_LINE_ID IS NOT NULL) AND (P_PLL_Rec.PACKLIST_LINE_ID <> FND_API.G_MISS_NUM) )
894       THEN
895           DBMS_SQL.BIND_VARIABLE(p_cur_get_PLL, ':p_PACKLIST_LINE_ID', P_PLL_Rec.PACKLIST_LINE_ID);
896       END IF;
897 
898       -- Debug Message
899       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Bind Variables Ends');
900 END Bind;
901 
902 PROCEDURE Gen_Select(
903     x_select_cl   OUT NOCOPY   VARCHAR2
904 )
905 IS
906 BEGIN
907       -- Debug Message
908       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Generate Select Begins');
909 
910       x_select_cl := 'Select ' ||
911                 'CSP_PACKLIST_LINES_V.PACKLIST_LINE_ID,' ||
912                 'CSP_PACKLIST_LINES_V.CREATED_BY,' ||
913                 'CSP_PACKLIST_LINES_V.CREATION_DATE,' ||
914                 'CSP_PACKLIST_LINES_V.LAST_UPDATED_BY,' ||
915                 'CSP_PACKLIST_LINES_V.LAST_UPDATE_DATE,' ||
916                 'CSP_PACKLIST_LINES_V.LAST_UPDATE_LOGIN,' ||
917                 'CSP_PACKLIST_LINES_V.ORGANIZATION_ID,' ||
918                 'CSP_PACKLIST_LINES_V.PACKLIST_LINE_NUMBER,' ||
919                 'CSP_PACKLIST_LINES_V.PACKLIST_HEADER_ID,' ||
920                 'CSP_PACKLIST_LINES_V.BOX_ID,' ||
921                 'CSP_PACKLIST_LINES_V.PICKLIST_LINE_ID,' ||
922                 'CSP_PACKLIST_LINES_V.PACKLIST_LINE_STATUS,' ||
923                 'CSP_PACKLIST_LINES_V.INVENTORY_ITEM_ID,' ||
924                 'CSP_PACKLIST_LINES_V.QUANTITY_PACKED,' ||
925                 'CSP_PACKLIST_LINES_V.QUANTITY_SHIPPED,' ||
926                 'CSP_PACKLIST_LINES_V.QUANTITY_RECEIVED,' ||
927                 'CSP_PACKLIST_LINES_V.ATTRIBUTE_CATEGORY,' ||
928                 'CSP_PACKLIST_LINES_V.ATTRIBUTE1,' ||
929                 'CSP_PACKLIST_LINES_V.ATTRIBUTE2,' ||
930                 'CSP_PACKLIST_LINES_V.ATTRIBUTE3,' ||
931                 'CSP_PACKLIST_LINES_V.ATTRIBUTE4,' ||
932                 'CSP_PACKLIST_LINES_V.ATTRIBUTE5,' ||
933                 'CSP_PACKLIST_LINES_V.ATTRIBUTE6,' ||
934                 'CSP_PACKLIST_LINES_V.ATTRIBUTE7,' ||
935                 'CSP_PACKLIST_LINES_V.ATTRIBUTE8,' ||
936                 'CSP_PACKLIST_LINES_V.ATTRIBUTE9,' ||
937                 'CSP_PACKLIST_LINES_V.ATTRIBUTE10,' ||
938                 'CSP_PACKLIST_LINES_V.ATTRIBUTE11,' ||
939                 'CSP_PACKLIST_LINES_V.ATTRIBUTE12,' ||
940                 'CSP_PACKLIST_LINES_V.ATTRIBUTE13,' ||
941                 'CSP_PACKLIST_LINES_V.ATTRIBUTE14,' ||
942                 'CSP_PACKLIST_LINES_V.ATTRIBUTE15,' ||
943                 'CSP_PACKLIST_LINES_V.UOM_CODE,' ||
944                 'CSP_PACKLIST_LINES_V.LINE_ID,' ||
945                 'from CSP_PACKLIST_LINES_V';
946       -- Debug Message
947       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Generate Select Ends');
948 
949 END Gen_Select;
950 
951 PROCEDURE Gen_PLL_Where(
952     P_PLL_Rec     IN   CSP_PACKLIST_LINES_PUB.PLL_Rec_Type,
953     x_PLL_where   OUT NOCOPY   VARCHAR2
954 )
955 IS
956 -- cursors to check if wildcard values '%' and '_' have been passed
957 -- as item values
958 CURSOR c_chk_str1(p_rec_item VARCHAR2) IS
959     SELECT INSTR(p_rec_item, '%', 1, 1)
960     FROM DUAL;
961 CURSOR c_chk_str2(p_rec_item VARCHAR2) IS
962     SELECT INSTR(p_rec_item, '_', 1, 1)
963     FROM DUAL;
964 
965 -- return values from cursors
966 str_csr1   NUMBER;
967 str_csr2   NUMBER;
968 l_operator VARCHAR2(10);
969 BEGIN
970       -- Debug Message
971       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Generate Where Begins');
972 
973       -- There are three examples for each kind of datatype:
974       -- NUMBER, DATE, VARCHAR2.
975       -- Developer can copy and paste the following codes for your own record.
976 
977       -- example for NUMBER datatype
978       IF( (P_PLL_Rec.PACKLIST_LINE_ID IS NOT NULL) AND (P_PLL_Rec.PACKLIST_LINE_ID <> FND_API.G_MISS_NUM) )
979       THEN
980           IF(x_PLL_where IS NULL) THEN
981               x_PLL_where := 'Where';
982           ELSE
983               x_PLL_where := x_PLL_where || ' AND ';
984           END IF;
985           x_PLL_where := x_PLL_where || 'P_PLL_Rec.PACKLIST_LINE_ID = :p_PACKLIST_LINE_ID';
986       END IF;
987 
988       -- example for DATE datatype
989       IF( (P_PLL_Rec.CREATION_DATE IS NOT NULL) AND (P_PLL_Rec.CREATION_DATE <> FND_API.G_MISS_DATE) )
990       THEN
991           -- check if item value contains '%' wildcard
992           OPEN c_chk_str1(P_PLL_Rec.CREATION_DATE);
993           FETCH c_chk_str1 INTO str_csr1;
994           CLOSE c_chk_str1;
995 
996           IF(str_csr1 <> 0) THEN
997               l_operator := ' LIKE ';
998           ELSE
999               l_operator := ' = ';
1000           END IF;
1001 
1002           -- check if item value contains '_' wildcard
1003           OPEN c_chk_str2(P_PLL_Rec.CREATION_DATE);
1004           FETCH c_chk_str2 INTO str_csr2;
1005           CLOSE c_chk_str2;
1006 
1007           IF(str_csr2 <> 0) THEN
1008               l_operator := ' LIKE ';
1009           ELSE
1010               l_operator := ' = ';
1011           END IF;
1012 
1013           IF(x_PLL_where IS NULL) THEN
1014               x_PLL_where := 'Where ';
1015           ELSE
1016               x_PLL_where := x_PLL_where || ' AND ';
1017           END IF;
1018           x_PLL_where := x_PLL_where || 'P_PLL_Rec.CREATION_DATE ' || l_operator || ' :p_CREATION_DATE';
1019       END IF;
1020 
1021       -- example for VARCHAR2 datatype
1022       IF( (P_PLL_Rec.PACKLIST_LINE_STATUS IS NOT NULL) AND (P_PLL_Rec.PACKLIST_LINE_STATUS <> FND_API.G_MISS_CHAR) )
1023       THEN
1024           -- check if item value contains '%' wildcard
1025           OPEN c_chk_str1(P_PLL_Rec.PACKLIST_LINE_STATUS);
1026           FETCH c_chk_str1 INTO str_csr1;
1027           CLOSE c_chk_str1;
1028 
1029           IF(str_csr1 <> 0) THEN
1030               l_operator := ' LIKE ';
1031           ELSE
1032               l_operator := ' = ';
1033           END IF;
1034 
1035           -- check if item value contains '_' wildcard
1036           OPEN c_chk_str2(P_PLL_Rec.PACKLIST_LINE_STATUS);
1037           FETCH c_chk_str2 INTO str_csr2;
1038           CLOSE c_chk_str2;
1039 
1040           IF(str_csr2 <> 0) THEN
1041               l_operator := ' LIKE ';
1042           ELSE
1043               l_operator := ' = ';
1044           END IF;
1045 
1046           IF(x_PLL_where IS NULL) THEN
1047               x_PLL_where := 'Where ';
1048           ELSE
1049               x_PLL_where := x_PLL_where || ' AND ';
1050           END IF;
1051           x_PLL_where := x_PLL_where || 'P_PLL_Rec.PACKLIST_LINE_STATUS ' || l_operator || ' :p_PACKLIST_LINE_STATUS';
1052       END IF;
1053 
1054       -- Add more IF statements for each column below
1055 
1056       -- Debug Message
1057       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: Generate Where Ends');
1058 
1059 END Gen_PLL_Where;
1060 
1061 -- Item-level validation procedures
1062 PROCEDURE Validate_PACKLIST_LINE_ID (
1063     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1064     P_Validation_mode            IN   VARCHAR2,
1065     P_PACKLIST_LINE_ID                IN   NUMBER,
1066     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1067     X_Return_Status              OUT NOCOPY  VARCHAR2,
1068     X_Msg_Count                  OUT NOCOPY  NUMBER,
1069     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1070     )
1071 IS
1072 BEGIN
1073 
1074       -- Initialize message list if p_init_msg_list is set to TRUE.
1075       IF FND_API.to_Boolean( p_init_msg_list )
1076       THEN
1077           FND_MSG_PUB.initialize;
1078       END IF;
1079 
1080 
1081       -- Initialize API return status to SUCCESS
1082       x_return_status := FND_API.G_RET_STS_SUCCESS;
1083 
1084       -- validate NOT NULL column
1085       IF(p_PACKLIST_LINE_ID is NULL)
1086       THEN
1087           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(PACKLIST_LINE_ID)');
1088           x_return_status := FND_API.G_RET_STS_ERROR;
1089       END IF;
1090 
1091       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1092       THEN
1093           -- Hint: Validate data
1094           -- IF p_PACKLIST_LINE_ID is not NULL and p_PACKLIST_LINE_ID <> G_MISS_CHAR
1095           -- verify if data is valid
1096           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1097           NULL;
1098       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1099       THEN
1100           -- Hint: Validate data
1101           -- IF p_PACKLIST_LINE_ID <> G_MISS_CHAR
1102           -- verify if data is valid
1103           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1104           NULL;
1105       END IF;
1106 
1107       -- Standard call to get message count and if count is 1, get message info.
1108       FND_MSG_PUB.Count_And_Get
1109       (  p_count          =>   x_msg_count,
1110          p_data           =>   x_msg_data
1111       );
1112 
1113 END Validate_PACKLIST_LINE_ID;
1114 
1115 
1116 PROCEDURE Validate_ORGANIZATION_ID (
1117     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1118     P_Validation_mode            IN   VARCHAR2,
1119     P_ORGANIZATION_ID                IN   NUMBER,
1120     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1121     X_Return_Status              OUT NOCOPY  VARCHAR2,
1122     X_Msg_Count                  OUT NOCOPY  NUMBER,
1123     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1124     )
1125 IS
1126 BEGIN
1127 
1128       -- Initialize message list if p_init_msg_list is set to TRUE.
1129       IF FND_API.to_Boolean( p_init_msg_list )
1130       THEN
1131           FND_MSG_PUB.initialize;
1132       END IF;
1133 
1134 
1135       -- Initialize API return status to SUCCESS
1136       x_return_status := FND_API.G_RET_STS_SUCCESS;
1137 
1138       -- validate NOT NULL column
1139       IF(p_ORGANIZATION_ID is NULL)
1140       THEN
1141           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(ORGANIZATION_ID)');
1142           x_return_status := FND_API.G_RET_STS_ERROR;
1143       END IF;
1144 
1145       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1146       THEN
1147           -- Hint: Validate data
1148           -- IF p_ORGANIZATION_ID is not NULL and p_ORGANIZATION_ID <> G_MISS_CHAR
1149           -- verify if data is valid
1150           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1151           NULL;
1152       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1153       THEN
1154           -- Hint: Validate data
1155           -- IF p_ORGANIZATION_ID <> G_MISS_CHAR
1156           -- verify if data is valid
1157           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1158           NULL;
1159       END IF;
1160 
1161       -- Standard call to get message count and if count is 1, get message info.
1162       FND_MSG_PUB.Count_And_Get
1163       (  p_count          =>   x_msg_count,
1164          p_data           =>   x_msg_data
1165       );
1166 
1167 END Validate_ORGANIZATION_ID;
1168 
1169 
1170 PROCEDURE Validate_PACKLIST_LINE_NUMBER (
1171     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1172     P_Validation_mode            IN   VARCHAR2,
1173     P_PACKLIST_LINE_NUMBER                IN   NUMBER,
1174     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1175     X_Return_Status              OUT NOCOPY  VARCHAR2,
1176     X_Msg_Count                  OUT NOCOPY  NUMBER,
1177     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1178     )
1179 IS
1180 BEGIN
1181 
1182       -- Initialize message list if p_init_msg_list is set to TRUE.
1183       IF FND_API.to_Boolean( p_init_msg_list )
1184       THEN
1185           FND_MSG_PUB.initialize;
1186       END IF;
1187 
1188 
1189       -- Initialize API return status to SUCCESS
1190       x_return_status := FND_API.G_RET_STS_SUCCESS;
1191 
1192       -- validate NOT NULL column
1193       IF(p_PACKLIST_LINE_NUMBER is NULL)
1194       THEN
1195           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(PACKLIST_LINE_NUMBER)');
1196           x_return_status := FND_API.G_RET_STS_ERROR;
1197       END IF;
1198 
1199       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1200       THEN
1201           -- Hint: Validate data
1202           -- IF p_PACKLIST_LINE_NUMBER is not NULL and p_PACKLIST_LINE_NUMBER <> G_MISS_CHAR
1203           -- verify if data is valid
1204           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1205           NULL;
1206       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1207       THEN
1208           -- Hint: Validate data
1209           -- IF p_PACKLIST_LINE_NUMBER <> G_MISS_CHAR
1210           -- verify if data is valid
1211           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1212           NULL;
1213       END IF;
1214 
1215       -- Standard call to get message count and if count is 1, get message info.
1216       FND_MSG_PUB.Count_And_Get
1217       (  p_count          =>   x_msg_count,
1218          p_data           =>   x_msg_data
1219       );
1220 
1221 END Validate_PACKLIST_LINE_NUMBER;
1222 
1223 
1224 PROCEDURE Validate_PACKLIST_HEADER_ID (
1225     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1226     P_Validation_mode            IN   VARCHAR2,
1227     P_PACKLIST_HEADER_ID                IN   NUMBER,
1228     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1229     X_Return_Status              OUT NOCOPY  VARCHAR2,
1230     X_Msg_Count                  OUT NOCOPY  NUMBER,
1231     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1232     )
1233 IS
1234 BEGIN
1235 
1236       -- Initialize message list if p_init_msg_list is set to TRUE.
1237       IF FND_API.to_Boolean( p_init_msg_list )
1238       THEN
1239           FND_MSG_PUB.initialize;
1240       END IF;
1241 
1242 
1243       -- Initialize API return status to SUCCESS
1244       x_return_status := FND_API.G_RET_STS_SUCCESS;
1245 
1246       -- validate NOT NULL column
1247       IF(p_PACKLIST_HEADER_ID is NULL)
1248       THEN
1249           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(PACKLIST_HEADER_ID)');
1250           x_return_status := FND_API.G_RET_STS_ERROR;
1251       END IF;
1252 
1253       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1254       THEN
1255           -- Hint: Validate data
1256           -- IF p_PACKLIST_HEADER_ID is not NULL and p_PACKLIST_HEADER_ID <> G_MISS_CHAR
1257           -- verify if data is valid
1258           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1259           NULL;
1260       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1261       THEN
1262           -- Hint: Validate data
1263           -- IF p_PACKLIST_HEADER_ID <> G_MISS_CHAR
1264           -- verify if data is valid
1265           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1266           NULL;
1267       END IF;
1268 
1269       -- Standard call to get message count and if count is 1, get message info.
1270       FND_MSG_PUB.Count_And_Get
1271       (  p_count          =>   x_msg_count,
1272          p_data           =>   x_msg_data
1273       );
1274 
1275 END Validate_PACKLIST_HEADER_ID;
1276 
1277 
1278 PROCEDURE Validate_BOX_ID (
1279     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1280     P_Validation_mode            IN   VARCHAR2,
1281     P_BOX_ID                IN   NUMBER,
1282     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1283     X_Return_Status              OUT NOCOPY  VARCHAR2,
1284     X_Msg_Count                  OUT NOCOPY  NUMBER,
1285     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1286     )
1287 IS
1288 BEGIN
1289 
1290       -- Initialize message list if p_init_msg_list is set to TRUE.
1291       IF FND_API.to_Boolean( p_init_msg_list )
1292       THEN
1293           FND_MSG_PUB.initialize;
1294       END IF;
1295 
1296 
1297       -- Initialize API return status to SUCCESS
1298       x_return_status := FND_API.G_RET_STS_SUCCESS;
1299 
1300       -- validate NOT NULL column
1301       IF(p_BOX_ID is NULL)
1302       THEN
1303           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(BOX_ID)');
1304           x_return_status := FND_API.G_RET_STS_ERROR;
1305       END IF;
1306 
1307       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1308       THEN
1309           -- Hint: Validate data
1310           -- IF p_BOX_ID is not NULL and p_BOX_ID <> G_MISS_CHAR
1311           -- verify if data is valid
1312           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1313           NULL;
1314       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1315       THEN
1316           -- Hint: Validate data
1317           -- IF p_BOX_ID <> G_MISS_CHAR
1318           -- verify if data is valid
1319           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1320           NULL;
1321       END IF;
1322 
1323       -- Standard call to get message count and if count is 1, get message info.
1324       FND_MSG_PUB.Count_And_Get
1325       (  p_count          =>   x_msg_count,
1326          p_data           =>   x_msg_data
1327       );
1328 
1329 END Validate_BOX_ID;
1330 
1331 
1332 PROCEDURE Validate_PICKLIST_LINE_ID (
1333     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1334     P_Validation_mode            IN   VARCHAR2,
1335     P_PICKLIST_LINE_ID                IN   NUMBER,
1336     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1337     X_Return_Status              OUT NOCOPY  VARCHAR2,
1338     X_Msg_Count                  OUT NOCOPY  NUMBER,
1339     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1340     )
1341 IS
1342 BEGIN
1343 
1344       -- Initialize message list if p_init_msg_list is set to TRUE.
1345       IF FND_API.to_Boolean( p_init_msg_list )
1346       THEN
1347           FND_MSG_PUB.initialize;
1348       END IF;
1349 
1350 
1351       -- Initialize API return status to SUCCESS
1352       x_return_status := FND_API.G_RET_STS_SUCCESS;
1353 
1354       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1355       THEN
1356           -- Hint: Validate data
1357           -- IF p_PICKLIST_LINE_ID is not NULL and p_PICKLIST_LINE_ID <> G_MISS_CHAR
1358           -- verify if data is valid
1359           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1360           NULL;
1361       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1362       THEN
1363           -- Hint: Validate data
1364           -- IF p_PICKLIST_LINE_ID <> G_MISS_CHAR
1365           -- verify if data is valid
1366           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1367           NULL;
1368       END IF;
1369 
1370       -- Standard call to get message count and if count is 1, get message info.
1371       FND_MSG_PUB.Count_And_Get
1372       (  p_count          =>   x_msg_count,
1373          p_data           =>   x_msg_data
1374       );
1375 
1376 END Validate_PICKLIST_LINE_ID;
1377 
1378 
1379 PROCEDURE Validate_PACKLIST_LINE_STATUS (
1380     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1381     P_Validation_mode            IN   VARCHAR2,
1382     P_PACKLIST_LINE_STATUS                IN   VARCHAR2,
1383     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1384     X_Return_Status              OUT NOCOPY  VARCHAR2,
1385     X_Msg_Count                  OUT NOCOPY  NUMBER,
1386     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1387     )
1388 IS
1389 BEGIN
1390 
1391       -- Initialize message list if p_init_msg_list is set to TRUE.
1392       IF FND_API.to_Boolean( p_init_msg_list )
1393       THEN
1394           FND_MSG_PUB.initialize;
1395       END IF;
1396 
1397 
1398       -- Initialize API return status to SUCCESS
1399       x_return_status := FND_API.G_RET_STS_SUCCESS;
1400 
1401       -- validate NOT NULL column
1402       IF(p_PACKLIST_LINE_STATUS is NULL)
1403       THEN
1404           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(PACKLIST_LINE_STATUS)');
1405           x_return_status := FND_API.G_RET_STS_ERROR;
1406       END IF;
1407 
1408       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1409       THEN
1410           -- Hint: Validate data
1411           -- IF p_PACKLIST_LINE_STATUS is not NULL and p_PACKLIST_LINE_STATUS <> G_MISS_CHAR
1412           -- verify if data is valid
1413           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1414           NULL;
1415       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1416       THEN
1417           -- Hint: Validate data
1418           -- IF p_PACKLIST_LINE_STATUS <> G_MISS_CHAR
1419           -- verify if data is valid
1420           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1421           NULL;
1422       END IF;
1423 
1424       -- Standard call to get message count and if count is 1, get message info.
1425       FND_MSG_PUB.Count_And_Get
1426       (  p_count          =>   x_msg_count,
1427          p_data           =>   x_msg_data
1428       );
1429 
1430 END Validate_PACKLIST_LINE_STATUS;
1431 
1432 
1433 PROCEDURE Validate_INVENTORY_ITEM_ID (
1434     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1435     P_Validation_mode            IN   VARCHAR2,
1436     P_INVENTORY_ITEM_ID                IN   NUMBER,
1437     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1438     X_Return_Status              OUT NOCOPY  VARCHAR2,
1439     X_Msg_Count                  OUT NOCOPY  NUMBER,
1440     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1441     )
1442 IS
1443 BEGIN
1444 
1445       -- Initialize message list if p_init_msg_list is set to TRUE.
1446       IF FND_API.to_Boolean( p_init_msg_list )
1447       THEN
1448           FND_MSG_PUB.initialize;
1449       END IF;
1450 
1451 
1452       -- Initialize API return status to SUCCESS
1453       x_return_status := FND_API.G_RET_STS_SUCCESS;
1454 
1455       -- validate NOT NULL column
1456       IF(p_INVENTORY_ITEM_ID is NULL)
1457       THEN
1458           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(INVENTORY_ITEM_ID)');
1459           x_return_status := FND_API.G_RET_STS_ERROR;
1460       END IF;
1461 
1462       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1463       THEN
1464           -- Hint: Validate data
1465           -- IF p_INVENTORY_ITEM_ID is not NULL and p_INVENTORY_ITEM_ID <> G_MISS_CHAR
1466           -- verify if data is valid
1467           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1468           NULL;
1469       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1470       THEN
1471           -- Hint: Validate data
1472           -- IF p_INVENTORY_ITEM_ID <> G_MISS_CHAR
1473           -- verify if data is valid
1474           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1475           NULL;
1476       END IF;
1477 
1478       -- Standard call to get message count and if count is 1, get message info.
1479       FND_MSG_PUB.Count_And_Get
1480       (  p_count          =>   x_msg_count,
1481          p_data           =>   x_msg_data
1482       );
1483 
1484 END Validate_INVENTORY_ITEM_ID;
1485 
1486 
1487 PROCEDURE Validate_QUANTITY_PACKED (
1488     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1489     P_Validation_mode            IN   VARCHAR2,
1490     P_QUANTITY_PACKED                IN   NUMBER,
1491     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1492     X_Return_Status              OUT NOCOPY  VARCHAR2,
1493     X_Msg_Count                  OUT NOCOPY  NUMBER,
1494     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1495     )
1496 IS
1497 BEGIN
1498 
1499       -- Initialize message list if p_init_msg_list is set to TRUE.
1500       IF FND_API.to_Boolean( p_init_msg_list )
1501       THEN
1502           FND_MSG_PUB.initialize;
1503       END IF;
1504 
1505 
1506       -- Initialize API return status to SUCCESS
1507       x_return_status := FND_API.G_RET_STS_SUCCESS;
1508 
1509       -- validate NOT NULL column
1510       IF(p_QUANTITY_PACKED is NULL)
1511       THEN
1512           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(QUANTITY_PACKED)');
1513           x_return_status := FND_API.G_RET_STS_ERROR;
1514       END IF;
1515 
1516       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1517       THEN
1518           -- Hint: Validate data
1519           -- IF p_QUANTITY_PACKED is not NULL and p_QUANTITY_PACKED <> G_MISS_CHAR
1520           -- verify if data is valid
1521           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1522           NULL;
1523       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1524       THEN
1525           -- Hint: Validate data
1526           -- IF p_QUANTITY_PACKED <> G_MISS_CHAR
1527           -- verify if data is valid
1528           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1529           NULL;
1530       END IF;
1531 
1532       -- Standard call to get message count and if count is 1, get message info.
1533       FND_MSG_PUB.Count_And_Get
1534       (  p_count          =>   x_msg_count,
1535          p_data           =>   x_msg_data
1536       );
1537 
1538 END Validate_QUANTITY_PACKED;
1539 
1540 
1541 PROCEDURE Validate_QUANTITY_SHIPPED (
1542     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1543     P_Validation_mode            IN   VARCHAR2,
1544     P_QUANTITY_SHIPPED                IN   NUMBER,
1545     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1546     X_Return_Status              OUT NOCOPY  VARCHAR2,
1547     X_Msg_Count                  OUT NOCOPY  NUMBER,
1548     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1549     )
1550 IS
1551 BEGIN
1552 
1553       -- Initialize message list if p_init_msg_list is set to TRUE.
1554       IF FND_API.to_Boolean( p_init_msg_list )
1555       THEN
1556           FND_MSG_PUB.initialize;
1557       END IF;
1558 
1559 
1560       -- Initialize API return status to SUCCESS
1561       x_return_status := FND_API.G_RET_STS_SUCCESS;
1562 
1563       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1564       THEN
1565           -- Hint: Validate data
1566           -- IF p_QUANTITY_SHIPPED is not NULL and p_QUANTITY_SHIPPED <> G_MISS_CHAR
1567           -- verify if data is valid
1568           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1569           NULL;
1570       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1571       THEN
1572           -- Hint: Validate data
1573           -- IF p_QUANTITY_SHIPPED <> G_MISS_CHAR
1574           -- verify if data is valid
1575           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1576           NULL;
1577       END IF;
1578 
1579       -- Standard call to get message count and if count is 1, get message info.
1580       FND_MSG_PUB.Count_And_Get
1581       (  p_count          =>   x_msg_count,
1582          p_data           =>   x_msg_data
1583       );
1584 
1585 END Validate_QUANTITY_SHIPPED;
1586 
1587 
1588 PROCEDURE Validate_QUANTITY_RECEIVED (
1589     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1590     P_Validation_mode            IN   VARCHAR2,
1591     P_QUANTITY_RECEIVED                IN   NUMBER,
1592     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1593     X_Return_Status              OUT NOCOPY  VARCHAR2,
1594     X_Msg_Count                  OUT NOCOPY  NUMBER,
1595     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1596     )
1597 IS
1598 BEGIN
1599 
1600       -- Initialize message list if p_init_msg_list is set to TRUE.
1601       IF FND_API.to_Boolean( p_init_msg_list )
1602       THEN
1603           FND_MSG_PUB.initialize;
1604       END IF;
1605 
1606 
1607       -- Initialize API return status to SUCCESS
1608       x_return_status := FND_API.G_RET_STS_SUCCESS;
1609 
1610       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1611       THEN
1612           -- Hint: Validate data
1613           -- IF p_QUANTITY_RECEIVED is not NULL and p_QUANTITY_RECEIVED <> G_MISS_CHAR
1614           -- verify if data is valid
1615           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1616           NULL;
1617       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1618       THEN
1619           -- Hint: Validate data
1620           -- IF p_QUANTITY_RECEIVED <> G_MISS_CHAR
1621           -- verify if data is valid
1622           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1623           NULL;
1624       END IF;
1625 
1626       -- Standard call to get message count and if count is 1, get message info.
1627       FND_MSG_PUB.Count_And_Get
1628       (  p_count          =>   x_msg_count,
1629          p_data           =>   x_msg_data
1630       );
1631 
1632 END Validate_QUANTITY_RECEIVED;
1633 
1634 
1635 PROCEDURE Validate_UOM_CODE (
1636     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1637     P_Validation_mode            IN   VARCHAR2,
1638     P_UOM_CODE                IN   VARCHAR2,
1639     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1640     X_Return_Status              OUT NOCOPY  VARCHAR2,
1641     X_Msg_Count                  OUT NOCOPY  NUMBER,
1642     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1643     )
1644 IS
1645 BEGIN
1646 
1647       -- Initialize message list if p_init_msg_list is set to TRUE.
1648       IF FND_API.to_Boolean( p_init_msg_list )
1649       THEN
1650           FND_MSG_PUB.initialize;
1651       END IF;
1652 
1653 
1654       -- Initialize API return status to SUCCESS
1655       x_return_status := FND_API.G_RET_STS_SUCCESS;
1656 
1657       -- validate NOT NULL column
1658       IF(p_UOM_CODE is NULL)
1659       THEN
1660           JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR, 'CSP', 'Private packlist_lines API: -Violate NOT NULL constraint(UOM_CODE)');
1661           x_return_status := FND_API.G_RET_STS_ERROR;
1662       END IF;
1663 
1664       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1665       THEN
1666           -- Hint: Validate data
1667           -- IF p_UOM_CODE is not NULL and p_UOM_CODE <> G_MISS_CHAR
1668           -- verify if data is valid
1669           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1670           NULL;
1671       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1672       THEN
1673           -- Hint: Validate data
1674           -- IF p_UOM_CODE <> G_MISS_CHAR
1675           -- verify if data is valid
1676           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1677           NULL;
1678       END IF;
1679 
1680       -- Standard call to get message count and if count is 1, get message info.
1681       FND_MSG_PUB.Count_And_Get
1682       (  p_count          =>   x_msg_count,
1683          p_data           =>   x_msg_data
1684       );
1685 
1686 END Validate_UOM_CODE;
1687 
1688 
1689 PROCEDURE Validate_LINE_ID (
1690     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1691     P_Validation_mode            IN   VARCHAR2,
1692     P_LINE_ID                IN   NUMBER,
1693     -- Hint: You may add 'X_Item_Property_Rec  OUT NOCOPY     JTF_PLSQL_API.ITEM_PROPERTY_REC_TYPE' here if you'd like to pass back item property.
1694     X_Return_Status              OUT NOCOPY  VARCHAR2,
1695     X_Msg_Count                  OUT NOCOPY  NUMBER,
1696     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1697     )
1698 IS
1699 BEGIN
1700 
1701       -- Initialize message list if p_init_msg_list is set to TRUE.
1702       IF FND_API.to_Boolean( p_init_msg_list )
1703       THEN
1704           FND_MSG_PUB.initialize;
1705       END IF;
1706 
1707 
1708       -- Initialize API return status to SUCCESS
1709       x_return_status := FND_API.G_RET_STS_SUCCESS;
1710 
1711       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1712       THEN
1713           -- Hint: Validate data
1714           -- IF p_LINE_ID is not NULL and p_LINE_ID <> G_MISS_CHAR
1715           -- verify if data is valid
1716           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1717           NULL;
1718       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1719       THEN
1720           -- Hint: Validate data
1721           -- IF p_LINE_ID <> G_MISS_CHAR
1722           -- verify if data is valid
1723           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1724           NULL;
1725       END IF;
1726 
1727       -- Standard call to get message count and if count is 1, get message info.
1728       FND_MSG_PUB.Count_And_Get
1729       (  p_count          =>   x_msg_count,
1730          p_data           =>   x_msg_data
1731       );
1732 
1733 END Validate_LINE_ID;
1734 
1735 
1736 -- Hint: inter-field level validation can be added here.
1737 -- Hint: If p_validation_mode = JTF_PLSQL_API.G_VALIDATE_UPDATE, we should use cursor
1738 --       to get old values for all fields used in inter-field validation and set all G_MISS_XXX fields to original value
1739 --       stored in database table.
1740 PROCEDURE Validate_PLL_rec(
1741     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1742     P_Validation_mode            IN   VARCHAR2,
1743     P_PLL_Rec     IN    PLL_Rec_Type,
1744     X_Return_Status              OUT NOCOPY  VARCHAR2,
1745     X_Msg_Count                  OUT NOCOPY  NUMBER,
1746     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1747     )
1748 IS
1749 BEGIN
1750 
1751       -- Initialize message list if p_init_msg_list is set to TRUE.
1752       IF FND_API.to_Boolean( p_init_msg_list )
1753       THEN
1754           FND_MSG_PUB.initialize;
1755       END IF;
1756 
1757 
1758       -- Initialize API return status to SUCCESS
1759       x_return_status := FND_API.G_RET_STS_SUCCESS;
1760 
1761       -- Hint: Validate data
1762       -- If data not valid
1763       -- THEN
1764       -- x_return_status := FND_API.G_RET_STS_ERROR;
1765 
1766       -- Debug Message
1767       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'API_INVALID_RECORD');
1768 
1769       -- Standard call to get message count and if count is 1, get message info.
1770       FND_MSG_PUB.Count_And_Get
1771       (  p_count          =>   x_msg_count,
1772          p_data           =>   x_msg_data
1773       );
1774 
1775 END Validate_PLL_Rec;
1776 
1777 PROCEDURE Validate_packlist_lines(
1778     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1779     P_Validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1780     P_Validation_mode            IN   VARCHAR2,
1781     P_PLL_Rec     IN    PLL_Rec_Type,
1782     X_Return_Status              OUT NOCOPY  VARCHAR2,
1783     X_Msg_Count                  OUT NOCOPY  NUMBER,
1784     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1785     )
1786 IS
1787 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_packlist_lines';
1788  BEGIN
1789 
1790       -- Debug Message
1791       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: ' || l_api_name || 'start');
1792 
1793 
1794       -- Initialize API return status to SUCCESS
1795       x_return_status := FND_API.G_RET_STS_SUCCESS;
1796 
1797       IF (p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_ITEM) THEN
1798           -- Hint: We provide validation procedure for every column. Developer should delete
1799           --       unnecessary validation procedures.
1800           Validate_PACKLIST_LINE_ID(
1801               p_init_msg_list          => FND_API.G_FALSE,
1802               p_validation_mode        => p_validation_mode,
1803               p_PACKLIST_LINE_ID   => P_PLL_Rec.PACKLIST_LINE_ID,
1804               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1805               x_return_status          => x_return_status,
1806               x_msg_count              => x_msg_count,
1807               x_msg_data               => x_msg_data);
1808           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1809               raise FND_API.G_EXC_ERROR;
1810           END IF;
1811 
1812           Validate_ORGANIZATION_ID(
1813               p_init_msg_list          => FND_API.G_FALSE,
1814               p_validation_mode        => p_validation_mode,
1815               p_ORGANIZATION_ID   => P_PLL_Rec.ORGANIZATION_ID,
1816               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1817               x_return_status          => x_return_status,
1818               x_msg_count              => x_msg_count,
1819               x_msg_data               => x_msg_data);
1820           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1821               raise FND_API.G_EXC_ERROR;
1822           END IF;
1823 
1824           Validate_PACKLIST_LINE_NUMBER(
1825               p_init_msg_list          => FND_API.G_FALSE,
1826               p_validation_mode        => p_validation_mode,
1827               p_PACKLIST_LINE_NUMBER   => P_PLL_Rec.PACKLIST_LINE_NUMBER,
1828               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1829               x_return_status          => x_return_status,
1830               x_msg_count              => x_msg_count,
1831               x_msg_data               => x_msg_data);
1832           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1833               raise FND_API.G_EXC_ERROR;
1834           END IF;
1835 
1836           Validate_PACKLIST_HEADER_ID(
1837               p_init_msg_list          => FND_API.G_FALSE,
1838               p_validation_mode        => p_validation_mode,
1839               p_PACKLIST_HEADER_ID   => P_PLL_Rec.PACKLIST_HEADER_ID,
1840               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1841               x_return_status          => x_return_status,
1842               x_msg_count              => x_msg_count,
1843               x_msg_data               => x_msg_data);
1844           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1845               raise FND_API.G_EXC_ERROR;
1846           END IF;
1847 
1848           Validate_BOX_ID(
1849               p_init_msg_list          => FND_API.G_FALSE,
1850               p_validation_mode        => p_validation_mode,
1851               p_BOX_ID   => P_PLL_Rec.BOX_ID,
1852               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1853               x_return_status          => x_return_status,
1854               x_msg_count              => x_msg_count,
1855               x_msg_data               => x_msg_data);
1856           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1857               raise FND_API.G_EXC_ERROR;
1858           END IF;
1859 
1860           Validate_PICKLIST_LINE_ID(
1861               p_init_msg_list          => FND_API.G_FALSE,
1862               p_validation_mode        => p_validation_mode,
1863               p_PICKLIST_LINE_ID   => P_PLL_Rec.PICKLIST_LINE_ID,
1864               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1865               x_return_status          => x_return_status,
1866               x_msg_count              => x_msg_count,
1867               x_msg_data               => x_msg_data);
1868           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1869               raise FND_API.G_EXC_ERROR;
1870           END IF;
1871 
1872           Validate_PACKLIST_LINE_STATUS(
1873               p_init_msg_list          => FND_API.G_FALSE,
1874               p_validation_mode        => p_validation_mode,
1875               p_PACKLIST_LINE_STATUS   => P_PLL_Rec.PACKLIST_LINE_STATUS,
1876               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1877               x_return_status          => x_return_status,
1878               x_msg_count              => x_msg_count,
1879               x_msg_data               => x_msg_data);
1880           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1881               raise FND_API.G_EXC_ERROR;
1882           END IF;
1883 
1884           Validate_INVENTORY_ITEM_ID(
1885               p_init_msg_list          => FND_API.G_FALSE,
1886               p_validation_mode        => p_validation_mode,
1887               p_INVENTORY_ITEM_ID   => P_PLL_Rec.INVENTORY_ITEM_ID,
1888               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1889               x_return_status          => x_return_status,
1890               x_msg_count              => x_msg_count,
1891               x_msg_data               => x_msg_data);
1892           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1893               raise FND_API.G_EXC_ERROR;
1894           END IF;
1895 
1896           Validate_QUANTITY_PACKED(
1897               p_init_msg_list          => FND_API.G_FALSE,
1898               p_validation_mode        => p_validation_mode,
1899               p_QUANTITY_PACKED   => P_PLL_Rec.QUANTITY_PACKED,
1900               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1901               x_return_status          => x_return_status,
1902               x_msg_count              => x_msg_count,
1903               x_msg_data               => x_msg_data);
1904           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1905               raise FND_API.G_EXC_ERROR;
1906           END IF;
1907 
1908           Validate_QUANTITY_SHIPPED(
1909               p_init_msg_list          => FND_API.G_FALSE,
1910               p_validation_mode        => p_validation_mode,
1911               p_QUANTITY_SHIPPED   => P_PLL_Rec.QUANTITY_SHIPPED,
1912               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1913               x_return_status          => x_return_status,
1914               x_msg_count              => x_msg_count,
1915               x_msg_data               => x_msg_data);
1916           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1917               raise FND_API.G_EXC_ERROR;
1918           END IF;
1919 
1920           Validate_QUANTITY_RECEIVED(
1921               p_init_msg_list          => FND_API.G_FALSE,
1922               p_validation_mode        => p_validation_mode,
1923               p_QUANTITY_RECEIVED   => P_PLL_Rec.QUANTITY_RECEIVED,
1924               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1925               x_return_status          => x_return_status,
1926               x_msg_count              => x_msg_count,
1927               x_msg_data               => x_msg_data);
1928           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1929               raise FND_API.G_EXC_ERROR;
1930           END IF;
1931 
1932           Validate_UOM_CODE(
1933               p_init_msg_list          => FND_API.G_FALSE,
1934               p_validation_mode        => p_validation_mode,
1935               p_UOM_CODE   => P_PLL_Rec.UOM_CODE,
1936               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1937               x_return_status          => x_return_status,
1938               x_msg_count              => x_msg_count,
1939               x_msg_data               => x_msg_data);
1940           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1941               raise FND_API.G_EXC_ERROR;
1942           END IF;
1943 
1944           Validate_LINE_ID(
1945               p_init_msg_list          => FND_API.G_FALSE,
1946               p_validation_mode        => p_validation_mode,
1947               p_LINE_ID   => P_PLL_Rec.LINE_ID,
1948               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1949               x_return_status          => x_return_status,
1950               x_msg_count              => x_msg_count,
1951               x_msg_data               => x_msg_data);
1952           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1953               raise FND_API.G_EXC_ERROR;
1954           END IF;
1955 
1956       END IF;
1957 
1958       IF (p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_RECORD) THEN
1959           -- Hint: Inter-field level validation can be added here
1960           -- invoke record level validation procedures
1961           Validate_PLL_Rec(
1962               p_init_msg_list          => FND_API.G_FALSE,
1963               p_validation_mode        => p_validation_mode,
1964           P_PLL_Rec     =>    P_PLL_Rec,
1965               x_return_status          => x_return_status,
1966               x_msg_count              => x_msg_count,
1967               x_msg_data               => x_msg_data);
1968 
1969           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1970               raise FND_API.G_EXC_ERROR;
1971           END IF;
1972       END IF;
1973 
1974       IF (p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_INTER_RECORD) THEN
1975           -- invoke inter-record level validation procedures
1976           NULL;
1977       END IF;
1978 
1979       IF (p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_INTER_ENTITY) THEN
1980           -- invoke inter-entity level validation procedures
1981           NULL;
1982       END IF;
1983 
1984 
1985       -- Debug Message
1986       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW, 'CSP', 'Private API: ' || l_api_name || 'end');
1987 
1988 END Validate_packlist_lines;
1989 
1990 End CSP_PACKLIST_LINES_PVT;