DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSP_PACKLIST_HEADERS_PVT

Source


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