DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSP_TASK_PART_PVT

Source


1 PACKAGE BODY CSP_TASK_PART_PVT as
2 /* $Header: cspvtapb.pls 115.4 2003/05/02 17:15:36 phegde noship $ */
3 -- Start of Comments
4 -- Package name     : CSP_TASK_PART_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSP_TASK_PART_PVT';
10 G_FILE_NAME CONSTANT VARCHAR2(12) := 'cspvtapb.pls';
11 -- Hint: Primary key needs to be returned.
12 PROCEDURE Create_task_part(
13     P_Api_Version_Number         IN   NUMBER,
14     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
15     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
16     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
17     P_TASK_PART_Rec     IN    TASK_PART_Rec_Type  := G_MISS_TASK_PART_REC,
18   --Hint: Add detail tables as parameter lists if it's master-detail relationship.
19     X_TASK_PART_ID     OUT NOCOPY  NUMBER,
20     X_Return_Status              OUT NOCOPY  VARCHAR2,
21     X_Msg_Count                  OUT NOCOPY  NUMBER,
22     X_Msg_Data                   OUT NOCOPY  VARCHAR2
23     )
24  IS
25 l_api_name                CONSTANT VARCHAR2(30) := 'Create_task_part';
26 l_api_version_number      CONSTANT NUMBER   := 1.0;
27 l_return_status_full        VARCHAR2(1);
28 --l_identity_sales_member_rec AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
29 l_access_flag               VARCHAR2(1);
30  BEGIN
31       -- Standard Start of API savepoint
32       SAVEPOINT CREATE_TASK_PART_PVT;
33       -- Standard call to check for call compatibility.
34       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
35                          	             p_api_version_number,
36                                            l_api_name,
37                                            G_PKG_NAME)
38       THEN
39           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
40       END IF;
41       -- Initialize message list if p_init_msg_list is set to TRUE.
42       IF FND_API.to_Boolean( p_init_msg_list )
43       THEN
44           FND_MSG_PUB.initialize;
45       END IF;
46       -- Debug Message
47       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: ' || l_api_name || 'start');
48       -- Initialize API return status to SUCCESS
49       x_return_status := FND_API.G_RET_STS_SUCCESS;
50       --
51       -- API body
52       --
53       -- ******************************************************************
54       -- Validate Environment
55       -- ******************************************************************
56       IF FND_GLOBAL.User_Id IS NULL
57       THEN
58           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
59           THEN
60               FND_MESSAGE.Set_Name('CSP', 'UT_CANNOT_GET_PROFILE_VALUE');
61               FND_MESSAGE.Set_Token('PROFILE', 'USER_ID', FALSE);
62               FND_MSG_PUB.ADD;
63           END IF;
64           RAISE FND_API.G_EXC_ERROR;
65       END IF;
66       -- Debug message
67       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: Validate_task_part');
68       -- Invoke validation procedures
69       Validate_task_part(
70           p_init_msg_list    => FND_API.G_FALSE,
71           p_validation_level => p_validation_level,
72           p_validation_mode  => JTF_PLSQL_API.G_CREATE,
73           P_TASK_PART_Rec  =>  P_TASK_PART_Rec,
74           x_return_status    => x_return_status,
75           x_msg_count        => x_msg_count,
76           x_msg_data         => x_msg_data);
77       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
78           RAISE FND_API.G_EXC_ERROR;
79       END IF;
80 /*
81       IF p_check_access_flag = 'Y'
82       THEN
83           -- Please un-comment here and complete it
84 --        AS_ACCESS_PUB.Has_???Access(
85 --            p_api_version_number     => 2.0
86 --           ,p_init_msg_list          => p_init_msg_list
87 --           ,p_validation_level       => p_validation_level
88 --           ,p_profile_tbl            => p_profile_tbl
89 --           ,p_admin_flag             => p_admin_flag
90 --           ,p_admin_group_id         => p_admin_group_id
91 --           ,p_person_id              => l_identity_sales_member_rec.employee_person_id
92 --           ,p_customer_id            =>
93 --           ,p_check_access_flag      => 'Y'
94 --           ,p_identity_salesforce_id => p_identity_salesforce_id
95 --           ,p_partner_cont_party_id  => NULL
96 --           ,x_return_status          => x_return_status
97 --           ,x_msg_count              => x_msg_count
98 --           ,x_msg_data               => x_msg_data
99 --           ,x_access_flag            => l_access_flag);
100 --          IF l_access_flag <> 'Y' THEN
101 --              JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
102 --                  'API_NO_CREATE_PRIVILEGE');
103 --          END IF;
104           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
105               RAISE FND_API.G_EXC_ERROR;
106           END IF;
107       END IF;
108 */
109       -- Hint: Add corresponding Master-Detail business logic here if necessary.
110       -- Debug Message
111       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Calling create table handler');
112       -- Invoke table handler(CSP_TASK_PARTS_PKG.Insert_Row)
113       CSP_TASK_PARTS_PKG.Insert_Row(
114           px_TASK_PART_ID  => x_TASK_PART_ID,
115           p_PRODUCT_TASK_ID  => p_TASK_PART_rec.PRODUCT_TASK_ID,
116           p_INVENTORY_ITEM_ID  => p_TASK_PART_rec.INVENTORY_ITEM_ID,
117           p_MANUAL_QUANTITY  => p_TASK_PART_rec.MANUAL_QUANTITY,
118           p_MANUAL_PERCENTAGE  => p_TASK_PART_rec.MANUAL_PERCENTAGE,
119           p_QUANTITY_USED  => p_TASK_PART_rec.QUANTITY_USED,
120           p_ACTUAL_TIMES_USED  => p_TASK_PART_rec.ACTUAL_TIMES_USED,
121           p_CREATED_BY  => FND_GLOBAL.USER_ID,
122           p_CREATION_DATE  => SYSDATE,
123           p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID,
124           p_LAST_UPDATE_DATE  => SYSDATE,
125           p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID,
126           p_ATTRIBUTE_CATEGORY  => p_TASK_PART_rec.ATTRIBUTE_CATEGORY,
127           p_ATTRIBUTE1  => p_TASK_PART_rec.ATTRIBUTE1,
128           p_ATTRIBUTE2  => p_TASK_PART_rec.ATTRIBUTE2,
129           p_ATTRIBUTE3  => p_TASK_PART_rec.ATTRIBUTE3,
130           p_ATTRIBUTE4  => p_TASK_PART_rec.ATTRIBUTE4,
131           p_ATTRIBUTE5  => p_TASK_PART_rec.ATTRIBUTE5,
132           p_ATTRIBUTE6  => p_TASK_PART_rec.ATTRIBUTE6,
133           p_ATTRIBUTE7  => p_TASK_PART_rec.ATTRIBUTE7,
134           p_ATTRIBUTE8  => p_TASK_PART_rec.ATTRIBUTE8,
135           p_ATTRIBUTE9  => p_TASK_PART_rec.ATTRIBUTE9,
136           p_ATTRIBUTE10  => p_TASK_PART_rec.ATTRIBUTE10,
137           p_ATTRIBUTE11  => p_TASK_PART_rec.ATTRIBUTE11,
138           p_ATTRIBUTE12  => p_TASK_PART_rec.ATTRIBUTE12,
139           p_ATTRIBUTE13  => p_TASK_PART_rec.ATTRIBUTE13,
140           p_ATTRIBUTE14  => p_TASK_PART_rec.ATTRIBUTE14,
141           p_ATTRIBUTE15  => p_TASK_PART_rec.ATTRIBUTE15,
142           p_PRIMARY_UOM_CODE  => p_TASK_PART_rec.PRIMARY_UOM_CODE,
143           p_REVISION  => p_TASK_PART_rec.REVISION,
144           p_START_DATE  => p_TASK_PART_rec.START_DATE,
145           p_END_DATE  => p_TASK_PART_rec.END_DATE,
146           p_ROLLUP_QUANTITY_USED  => p_TASK_PART_rec.ROLLUP_QUANTITY_USED,
147           p_ROLLUP_TIMES_USED  => p_TASK_PART_rec.ROLLUP_TIMES_USED,
148           p_SUBSTITUTE_ITEM => p_TASK_PART_rec.SUBSTITUTE_ITEM );
149       -- Hint: Primary key should be returned.
150       -- x_TASK_PART_ID := px_TASK_PART_ID;
151           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
152               RAISE FND_API.G_EXC_ERROR;
153           END IF;
154       --
155       -- End of API body
156       --
157       -- Standard check for p_commit
158       IF FND_API.to_Boolean( p_commit )
159       THEN
160           COMMIT WORK;
161       END IF;
162       -- Debug Message
163       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: ' || l_api_name || 'end');
164       -- Standard call to get message count and if count is 1, get message info.
165       FND_MSG_PUB.Count_And_Get
166       (  p_count          =>   x_msg_count,
167          p_data           =>   x_msg_data
168       );
169       EXCEPTION
170           WHEN FND_API.G_EXC_ERROR THEN
171               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
172                    P_API_NAME => L_API_NAME
173                   ,P_PKG_NAME => G_PKG_NAME
174                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
175                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
176                   ,X_MSG_COUNT => X_MSG_COUNT
177                   ,X_MSG_DATA => X_MSG_DATA
178                   ,X_RETURN_STATUS => X_RETURN_STATUS);
179           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
180               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
181                    P_API_NAME => L_API_NAME
182                   ,P_PKG_NAME => G_PKG_NAME
183                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
184                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
185                   ,X_MSG_COUNT => X_MSG_COUNT
186                   ,X_MSG_DATA => X_MSG_DATA
187                   ,X_RETURN_STATUS => X_RETURN_STATUS);
188           WHEN OTHERS THEN
189               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
190                    P_API_NAME => L_API_NAME
191                   ,P_PKG_NAME => G_PKG_NAME
192                   ,P_EXCEPTION_LEVEL => JTF_PLSQL_API.G_EXC_OTHERS
193                   ,P_SQLCODE => SQLCODE
194                   ,P_SQLERRM => SQLERRM
195                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
196                   ,X_MSG_COUNT => X_MSG_COUNT
197                   ,X_MSG_DATA => X_MSG_DATA
198                   ,X_RETURN_STATUS => X_RETURN_STATUS);
199 End Create_task_part;
200 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
201 PROCEDURE Update_task_part(
202     P_Api_Version_Number         IN   NUMBER,
203     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
204     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
205     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
206     P_TASK_PART_Rec     IN    TASK_PART_Rec_Type,
207     X_Return_Status              OUT NOCOPY  VARCHAR2,
208     X_Msg_Count                  OUT NOCOPY  NUMBER,
209     X_Msg_Data                   OUT NOCOPY  VARCHAR2
210     )
211  IS
212 /*
213 Cursor C_Get_task_part(TASK_PART_ID Number) IS
214     Select rowid,
215            TASK_PART_ID,
216            PRODUCT_TASK_ID,
217            INVENTORY_ITEM_ID,
218            MANUAL_QUANTITY,
219            MANUAL_PERCENTAGE,
220            QUANTITY_USED,
221            ACTUAL_TIMES_USED,
222            CALCULATED_QUANTITY,
223            PART_PERCENTAGE,
224            CREATED_BY,
225            CREATION_DATE,
226            LAST_UPDATED_BY,
227            LAST_UPDATE_DATE,
228            LAST_UPDATE_LOGIN,
229            ATTRIBUTE_CATEGORY,
230            ATTRIBUTE1,
231            ATTRIBUTE2,
232            ATTRIBUTE3,
233            ATTRIBUTE4,
234            ATTRIBUTE5,
235            ATTRIBUTE6,
236            ATTRIBUTE7,
237            ATTRIBUTE8,
238            ATTRIBUTE9,
239            ATTRIBUTE10,
240            ATTRIBUTE11,
241            ATTRIBUTE12,
242            ATTRIBUTE13,
243            ATTRIBUTE14,
244            ATTRIBUTE15,
245            PRIMARY_UOM_CODE,
246            REVISION,
247            START_DATE,
248            END_DATE
249     From  CSP_TASK_PARTS
250     -- Hint: Developer need to provide Where clause
251     For Update NOWAIT;
252 */
253 l_api_name                CONSTANT VARCHAR2(30) := 'Update_task_part';
254 l_api_version_number      CONSTANT NUMBER   := 1.0;
255 -- Local Variables
256 --l_identity_sales_member_rec   AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
257 l_ref_TASK_PART_rec  CSP_task_part_PVT.TASK_PART_Rec_Type;
258 l_tar_TASK_PART_rec  CSP_task_part_PVT.TASK_PART_Rec_Type := P_TASK_PART_Rec;
259 l_rowid  ROWID;
260  BEGIN
261       -- Standard Start of API savepoint
262       SAVEPOINT UPDATE_TASK_PART_PVT;
263       -- Standard call to check for call compatibility.
264       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
265                          	             p_api_version_number,
266                                            l_api_name,
267                                            G_PKG_NAME)
268       THEN
269           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
270       END IF;
271       -- Initialize message list if p_init_msg_list is set to TRUE.
272       IF FND_API.to_Boolean( p_init_msg_list )
273       THEN
274           FND_MSG_PUB.initialize;
275       END IF;
276       -- Debug Message
277       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: ' || l_api_name || 'start');
278       -- Initialize API return status to SUCCESS
279       x_return_status := FND_API.G_RET_STS_SUCCESS;
280       --
281       -- Api body
282       --
283       -- Debug Message
284       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: - Open Cursor to Select');
285 /*
286       Open C_Get_task_part( l_tar_TASK_PART_rec.TASK_PART_ID);
287       Fetch C_Get_task_part into
288                l_rowid,
289                l_ref_TASK_PART_rec.TASK_PART_ID,
290                l_ref_TASK_PART_rec.PRODUCT_TASK_ID,
291                l_ref_TASK_PART_rec.INVENTORY_ITEM_ID,
292                l_ref_TASK_PART_rec.MANUAL_QUANTITY,
293                l_ref_TASK_PART_rec.MANUAL_PERCENTAGE,
294                l_ref_TASK_PART_rec.QUANTITY_USED,
295                l_ref_TASK_PART_rec.ACTUAL_TIMES_USED,
296                l_ref_TASK_PART_rec.CALCULATED_QUANTITY,
297                l_ref_TASK_PART_rec.PART_PERCENTAGE,
298                l_ref_TASK_PART_rec.CREATED_BY,
299                l_ref_TASK_PART_rec.CREATION_DATE,
300                l_ref_TASK_PART_rec.LAST_UPDATED_BY,
301                l_ref_TASK_PART_rec.LAST_UPDATE_DATE,
302                l_ref_TASK_PART_rec.LAST_UPDATE_LOGIN,
303                l_ref_TASK_PART_rec.ATTRIBUTE_CATEGORY,
304                l_ref_TASK_PART_rec.ATTRIBUTE1,
305                l_ref_TASK_PART_rec.ATTRIBUTE2,
306                l_ref_TASK_PART_rec.ATTRIBUTE3,
307                l_ref_TASK_PART_rec.ATTRIBUTE4,
308                l_ref_TASK_PART_rec.ATTRIBUTE5,
309                l_ref_TASK_PART_rec.ATTRIBUTE6,
310                l_ref_TASK_PART_rec.ATTRIBUTE7,
311                l_ref_TASK_PART_rec.ATTRIBUTE8,
312                l_ref_TASK_PART_rec.ATTRIBUTE9,
313                l_ref_TASK_PART_rec.ATTRIBUTE10,
314                l_ref_TASK_PART_rec.ATTRIBUTE11,
315                l_ref_TASK_PART_rec.ATTRIBUTE12,
316                l_ref_TASK_PART_rec.ATTRIBUTE13,
317                l_ref_TASK_PART_rec.ATTRIBUTE14,
318                l_ref_TASK_PART_rec.ATTRIBUTE15,
319                l_ref_TASK_PART_rec.PRIMARY_UOM_CODE,
320                l_ref_TASK_PART_rec.REVISION,
321                l_ref_TASK_PART_rec.START_DATE,
322                l_ref_TASK_PART_rec.END_DATE;
323        If ( C_Get_task_part%NOTFOUND) Then
324            IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
325            THEN
326                FND_MESSAGE.Set_Name('CSP', 'API_MISSING_UPDATE_TARGET');
327                FND_MESSAGE.Set_Token ('INFO', 'task_part', FALSE);
328                FND_MSG_PUB.Add;
329            END IF;
330            Close C_Get_task_part;
331            raise FND_API.G_EXC_ERROR;
332        END IF;
333        -- Debug Message
334        JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: - Close Cursor');
335        Close     C_Get_task_part;
336       If (l_tar_TASK_PART_rec.last_update_date is NULL or
337           l_tar_TASK_PART_rec.last_update_date = FND_API.G_MISS_Date ) Then
338           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
339           THEN
340               FND_MESSAGE.Set_Name('CSP', 'API_MISSING_ID');
341               FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
342               FND_MSG_PUB.ADD;
343           END IF;
344           raise FND_API.G_EXC_ERROR;
345       End if;
346       -- Check Whether record has been changed by someone else
347       If (l_tar_TASK_PART_rec.last_update_date <> l_ref_TASK_PART_rec.last_update_date) Then
348           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
352               FND_MSG_PUB.ADD;
349           THEN
350               FND_MESSAGE.Set_Name('CSP', 'API_RECORD_CHANGED');
351               FND_MESSAGE.Set_Token('INFO', 'task_part', FALSE);
353           END IF;
354           raise FND_API.G_EXC_ERROR;
355       End if;
356 */
357       -- Debug message
358       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: Validate_task_part');
359       -- Invoke validation procedures
360       Validate_task_part(
361           p_init_msg_list    => FND_API.G_FALSE,
362           p_validation_level => p_validation_level,
363           p_validation_mode  => JTF_PLSQL_API.G_UPDATE,
364           P_TASK_PART_Rec  =>  P_TASK_PART_Rec,
365           x_return_status    => x_return_status,
366           x_msg_count        => x_msg_count,
367           x_msg_data         => x_msg_data);
368       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
369           RAISE FND_API.G_EXC_ERROR;
370       END IF;
371 /*
372       IF p_check_access_flag = 'Y'
373       THEN
374           -- Please un-comment here and complete it
375 --        AS_ACCESS_PUB.Has_???Access(
376 --            p_api_version_number     => 2.0
377 --           ,p_init_msg_list          => p_init_msg_list
378 --           ,p_validation_level       => p_validation_level
379 --           ,p_profile_tbl            => p_profile_tbl
380 --           ,p_admin_flag             => p_admin_flag
381 --           ,p_admin_group_id         => p_admin_group_id
382 --           ,p_person_id              => l_identity_sales_member_rec.employee_person_id
383 --           ,p_customer_id            =>
384 --           ,p_check_access_flag      => 'Y'
385 --           ,p_identity_salesforce_id => p_identity_salesforce_id
386 --           ,p_partner_cont_party_id  => NULL
387 --           ,x_return_status          => x_return_status
388 --           ,x_msg_count              => x_msg_count
389 --           ,x_msg_data               => x_msg_data
390 --           ,x_access_flag            => l_access_flag);
391 --          IF l_access_flag <> 'Y' THEN
392 --              JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
393 --                  'API_NO_UPDATE_PRIVILEGE');
394 --          END IF;
395           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
396               RAISE FND_API.G_EXC_ERROR;
397           END IF;
398       END IF;
399 */
400       -- Hint: Add corresponding Master-Detail business logic here if necessary.
401       -- Debug Message
402       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Calling update table handler');
403       -- Invoke table handler(CSP_TASK_PARTS_PKG.Update_Row)
404       CSP_TASK_PARTS_PKG.Update_Row(
405           p_TASK_PART_ID  => p_TASK_PART_rec.TASK_PART_ID,
406           p_PRODUCT_TASK_ID  => p_TASK_PART_rec.PRODUCT_TASK_ID,
407           p_INVENTORY_ITEM_ID  => p_TASK_PART_rec.INVENTORY_ITEM_ID,
408           p_MANUAL_QUANTITY  => p_TASK_PART_rec.MANUAL_QUANTITY,
409           p_MANUAL_PERCENTAGE  => p_TASK_PART_rec.MANUAL_PERCENTAGE,
410           p_QUANTITY_USED  => p_TASK_PART_rec.QUANTITY_USED,
411           p_ACTUAL_TIMES_USED  => p_TASK_PART_rec.ACTUAL_TIMES_USED,
412           p_CREATED_BY     => FND_API.G_MISS_NUM,
413           p_CREATION_DATE  => FND_API.G_MISS_DATE,
414           p_LAST_UPDATED_BY  => FND_GLOBAL.USER_ID,
415           p_LAST_UPDATE_DATE  => SYSDATE,
416           p_LAST_UPDATE_LOGIN  => FND_GLOBAL.CONC_LOGIN_ID,
417           p_ATTRIBUTE_CATEGORY  => p_TASK_PART_rec.ATTRIBUTE_CATEGORY,
418           p_ATTRIBUTE1  => p_TASK_PART_rec.ATTRIBUTE1,
419           p_ATTRIBUTE2  => p_TASK_PART_rec.ATTRIBUTE2,
420           p_ATTRIBUTE3  => p_TASK_PART_rec.ATTRIBUTE3,
421           p_ATTRIBUTE4  => p_TASK_PART_rec.ATTRIBUTE4,
422           p_ATTRIBUTE5  => p_TASK_PART_rec.ATTRIBUTE5,
423           p_ATTRIBUTE6  => p_TASK_PART_rec.ATTRIBUTE6,
424           p_ATTRIBUTE7  => p_TASK_PART_rec.ATTRIBUTE7,
425           p_ATTRIBUTE8  => p_TASK_PART_rec.ATTRIBUTE8,
426           p_ATTRIBUTE9  => p_TASK_PART_rec.ATTRIBUTE9,
427           p_ATTRIBUTE10  => p_TASK_PART_rec.ATTRIBUTE10,
428           p_ATTRIBUTE11  => p_TASK_PART_rec.ATTRIBUTE11,
429           p_ATTRIBUTE12  => p_TASK_PART_rec.ATTRIBUTE12,
430           p_ATTRIBUTE13  => p_TASK_PART_rec.ATTRIBUTE13,
431           p_ATTRIBUTE14  => p_TASK_PART_rec.ATTRIBUTE14,
432           p_ATTRIBUTE15  => p_TASK_PART_rec.ATTRIBUTE15,
433           p_PRIMARY_UOM_CODE  => p_TASK_PART_rec.PRIMARY_UOM_CODE,
434           p_REVISION  => p_TASK_PART_rec.REVISION,
435           p_START_DATE  => p_TASK_PART_rec.START_DATE,
436           p_END_DATE  => p_TASK_PART_rec.END_DATE,
437           p_ROLLUP_QUANTITY_USED  => p_TASK_PART_rec.ROLLUP_QUANTITY_USED,
438           p_ROLLUP_TIMES_USED  => p_TASK_PART_rec.ROLLUP_TIMES_USED,
439           p_SUBSTITUTE_ITEM => p_TASK_PART_rec.SUBSTITUTE_ITEM );
440 
441       --
442       -- End of API body.
443       --
444       -- Standard check for p_commit
445       IF FND_API.to_Boolean( p_commit )
446       THEN
447           COMMIT WORK;
448       END IF;
449       -- Debug Message
450       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: ' || l_api_name || 'end');
451       -- Standard call to get message count and if count is 1, get message info.
452       FND_MSG_PUB.Count_And_Get
453       (  p_count          =>   x_msg_count,
454          p_data           =>   x_msg_data
455       );
456       EXCEPTION
460                   ,P_PKG_NAME => G_PKG_NAME
457           WHEN FND_API.G_EXC_ERROR THEN
458               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
459                    P_API_NAME => L_API_NAME
461                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
462                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
463                   ,X_MSG_COUNT => X_MSG_COUNT
464                   ,X_MSG_DATA => X_MSG_DATA
465                   ,X_RETURN_STATUS => X_RETURN_STATUS);
466           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
467               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
468                    P_API_NAME => L_API_NAME
469                   ,P_PKG_NAME => G_PKG_NAME
470                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
471                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
472                   ,X_MSG_COUNT => X_MSG_COUNT
473                   ,X_MSG_DATA => X_MSG_DATA
474                   ,X_RETURN_STATUS => X_RETURN_STATUS);
475           WHEN OTHERS THEN
476               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
477                    P_API_NAME => L_API_NAME
478                   ,P_PKG_NAME => G_PKG_NAME
479                   ,P_EXCEPTION_LEVEL => JTF_PLSQL_API.G_EXC_OTHERS
480                   ,P_SQLCODE => SQLCODE
481                   ,P_SQLERRM => SQLERRM
482                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
483                   ,X_MSG_COUNT => X_MSG_COUNT
484                   ,X_MSG_DATA => X_MSG_DATA
485                   ,X_RETURN_STATUS => X_RETURN_STATUS);
486 End Update_task_part;
487 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
488 --       The Master delete procedure may not be needed depends on different business requirements.
489 PROCEDURE Delete_task_part(
490     P_Api_Version_Number         IN   NUMBER,
491     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
492     P_Commit                     IN   VARCHAR2     := FND_API.G_FALSE,
493     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
494     P_TASK_PART_Rec     IN TASK_PART_Rec_Type,
495     X_Return_Status              OUT NOCOPY  VARCHAR2,
496     X_Msg_Count                  OUT NOCOPY  NUMBER,
497     X_Msg_Data                   OUT NOCOPY  VARCHAR2
498     )
499  IS
500 l_api_name                CONSTANT VARCHAR2(30) := 'Delete_task_part';
501 l_api_version_number      CONSTANT NUMBER   := 1.0;
502 --l_identity_sales_member_rec  AS_SALES_MEMBER_PUB.Sales_member_rec_Type;
503  BEGIN
504       -- Standard Start of API savepoint
505       SAVEPOINT DELETE_TASK_PART_PVT;
506       -- Standard call to check for call compatibility.
507       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
508                          	             p_api_version_number,
509                                            l_api_name,
510                                            G_PKG_NAME)
511       THEN
512           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
513       END IF;
514       -- Initialize message list if p_init_msg_list is set to TRUE.
515       IF FND_API.to_Boolean( p_init_msg_list )
516       THEN
517           FND_MSG_PUB.initialize;
518       END IF;
519       -- Debug Message
520       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: ' || l_api_name || 'start');
521       -- Initialize API return status to SUCCESS
522       x_return_status := FND_API.G_RET_STS_SUCCESS;
523       --
524       -- Api body
525       --
526 /*
527       IF p_check_access_flag = 'Y'
528       THEN
529           -- Please un-comment here and complete it
530 --        AS_ACCESS_PUB.Has_???Access(
531 --            p_api_version_number     => 2.0
532 --           ,p_init_msg_list          => p_init_msg_list
533 --           ,p_validation_level       => p_validation_level
534 --           ,p_profile_tbl            => p_profile_tbl
535 --           ,p_admin_flag             => p_admin_flag
536 --           ,p_admin_group_id         => p_admin_group_id
537 --           ,p_person_id              => l_identity_sales_member_rec.employee_person_id
538 --           ,p_customer_id            =>
539 --           ,p_check_access_flag      => 'Y'
540 --           ,p_identity_salesforce_id => p_identity_salesforce_id
541 --           ,p_partner_cont_party_id  => NULL
542 --           ,x_return_status          => x_return_status
543 --           ,x_msg_count              => x_msg_count
544 --           ,x_msg_data               => x_msg_data
545 --           ,x_access_flag            => l_access_flag);
546 --          IF l_access_flag <> 'Y' THEN
547 --              JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_ERROR,
548 --                  'API_NO_DELETE_PRIVILEGE');
549 --          END IF;
550           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
551               RAISE FND_API.G_EXC_ERROR;
552           END IF;
553       END IF;
554 */
555       -- Debug Message
556       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Calling delete table handler');
557       -- Invoke table handler(CSP_TASK_PARTS_PKG.Delete_Row)
558       CSP_TASK_PARTS_PKG.Delete_Row(
559           p_TASK_PART_ID  => p_TASK_PART_rec.TASK_PART_ID);
560       --
561       -- End of API body
562       --
563       -- Standard check for p_commit
564       IF FND_API.to_Boolean( p_commit )
565       THEN
566           COMMIT WORK;
567       END IF;
568       -- Debug Message
572       (  p_count          =>   x_msg_count,
569       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: ' || l_api_name || 'end');
570       -- Standard call to get message count and if count is 1, get message info.
571       FND_MSG_PUB.Count_And_Get
573          p_data           =>   x_msg_data
574       );
575       EXCEPTION
576           WHEN FND_API.G_EXC_ERROR 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 => FND_MSG_PUB.G_MSG_LVL_ERROR
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           WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
586               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
587                    P_API_NAME => L_API_NAME
588                   ,P_PKG_NAME => G_PKG_NAME
589                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
590                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
591                   ,X_MSG_COUNT => X_MSG_COUNT
592                   ,X_MSG_DATA => X_MSG_DATA
593                   ,X_RETURN_STATUS => X_RETURN_STATUS);
594           WHEN OTHERS THEN
595               JTF_PLSQL_API.HANDLE_EXCEPTIONS(
596                    P_API_NAME => L_API_NAME
597                   ,P_PKG_NAME => G_PKG_NAME
598                   ,P_EXCEPTION_LEVEL => JTF_PLSQL_API.G_EXC_OTHERS
599                   ,P_SQLCODE => SQLCODE
600                   ,P_SQLERRM => SQLERRM
601                   ,P_PACKAGE_TYPE => JTF_PLSQL_API.G_PVT
602                   ,X_MSG_COUNT => X_MSG_COUNT
603                   ,X_MSG_DATA => X_MSG_DATA
604                   ,X_RETURN_STATUS => X_RETURN_STATUS);
605 End Delete_task_part;
606 -- This procudure defines the columns for the Dynamic SQL.
607 PROCEDURE Define_Columns(
608     P_TASK_PART_Rec   IN  CSP_TASK_PART_PUB.TASK_PART_Rec_Type,
609     p_cur_get_TASK_PART   IN   NUMBER
610 )
611 IS
612 BEGIN
613       -- Debug Message
614       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Define Columns Begins');
615       -- define all columns for CSP_TASK_PARTS view
616       dbms_sql.define_column(p_cur_get_TASK_PART, 1, P_TASK_PART_Rec.TASK_PART_ID);
617       dbms_sql.define_column(p_cur_get_TASK_PART, 2, P_TASK_PART_Rec.PRODUCT_TASK_ID);
618       dbms_sql.define_column(p_cur_get_TASK_PART, 3, P_TASK_PART_Rec.INVENTORY_ITEM_ID);
619       dbms_sql.define_column(p_cur_get_TASK_PART, 4, P_TASK_PART_Rec.MANUAL_QUANTITY);
620       dbms_sql.define_column(p_cur_get_TASK_PART, 5, P_TASK_PART_Rec.MANUAL_PERCENTAGE);
621       dbms_sql.define_column(p_cur_get_TASK_PART, 6, P_TASK_PART_Rec.QUANTITY_USED);
622       dbms_sql.define_column(p_cur_get_TASK_PART, 7, P_TASK_PART_Rec.ACTUAL_TIMES_USED);
623       dbms_sql.define_column(p_cur_get_TASK_PART, 10, P_TASK_PART_Rec.ATTRIBUTE_CATEGORY, 30);
624       dbms_sql.define_column(p_cur_get_TASK_PART, 11, P_TASK_PART_Rec.ATTRIBUTE1, 150);
625       dbms_sql.define_column(p_cur_get_TASK_PART, 12, P_TASK_PART_Rec.ATTRIBUTE2, 150);
626       dbms_sql.define_column(p_cur_get_TASK_PART, 13, P_TASK_PART_Rec.ATTRIBUTE3, 150);
627       dbms_sql.define_column(p_cur_get_TASK_PART, 14, P_TASK_PART_Rec.ATTRIBUTE4, 150);
628       dbms_sql.define_column(p_cur_get_TASK_PART, 15, P_TASK_PART_Rec.ATTRIBUTE5, 150);
629       dbms_sql.define_column(p_cur_get_TASK_PART, 16, P_TASK_PART_Rec.ATTRIBUTE6, 150);
630       dbms_sql.define_column(p_cur_get_TASK_PART, 17, P_TASK_PART_Rec.ATTRIBUTE7, 150);
631       dbms_sql.define_column(p_cur_get_TASK_PART, 18, P_TASK_PART_Rec.ATTRIBUTE8, 150);
632       dbms_sql.define_column(p_cur_get_TASK_PART, 19, P_TASK_PART_Rec.ATTRIBUTE9, 150);
633       dbms_sql.define_column(p_cur_get_TASK_PART, 20, P_TASK_PART_Rec.ATTRIBUTE10, 150);
634       dbms_sql.define_column(p_cur_get_TASK_PART, 21, P_TASK_PART_Rec.ATTRIBUTE11, 150);
635       dbms_sql.define_column(p_cur_get_TASK_PART, 22, P_TASK_PART_Rec.ATTRIBUTE12, 150);
636       dbms_sql.define_column(p_cur_get_TASK_PART, 23, P_TASK_PART_Rec.ATTRIBUTE13, 150);
637       dbms_sql.define_column(p_cur_get_TASK_PART, 24, P_TASK_PART_Rec.ATTRIBUTE14, 150);
638       dbms_sql.define_column(p_cur_get_TASK_PART, 25, P_TASK_PART_Rec.ATTRIBUTE15, 150);
639       dbms_sql.define_column(p_cur_get_TASK_PART, 26, P_TASK_PART_Rec.PRIMARY_UOM_CODE, 3);
640       dbms_sql.define_column(p_cur_get_TASK_PART, 27, P_TASK_PART_Rec.REVISION, 30);
641       dbms_sql.define_column(p_cur_get_TASK_PART, 28, P_TASK_PART_Rec.START_DATE);
642       dbms_sql.define_column(p_cur_get_TASK_PART, 29, P_TASK_PART_Rec.END_DATE);
643       dbms_sql.define_column(p_cur_get_TASK_PART, 29, P_TASK_PART_Rec.ROLLUP_QUANTITY_USED);
644       dbms_sql.define_column(p_cur_get_TASK_PART, 29, P_TASK_PART_Rec.ROLLUP_TIMES_USED);
645       dbms_sql.define_column(p_cur_get_TASK_PART, 30, p_TASK_PART_Rec.SUBSTITUTE_ITEM );
646       -- Debug Message
647       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Define Columns Ends');
648 END Define_Columns;
649 -- This procudure gets column values by the Dynamic SQL.
650 PROCEDURE Get_Column_Values(
651     p_cur_get_TASK_PART   IN   NUMBER,
652     X_TASK_PART_Rec   OUT NOCOPY  CSP_TASK_PART_PUB.TASK_PART_Rec_Type
653 )
654 IS
655 BEGIN
656       -- Debug Message
657       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: Get Column Values Begins');
658       -- get all column values for CSP_TASK_PARTS table
662       dbms_sql.column_value(p_cur_get_TASK_PART, 4, X_TASK_PART_Rec.MANUAL_QUANTITY);
659       dbms_sql.column_value(p_cur_get_TASK_PART, 1, X_TASK_PART_Rec.TASK_PART_ID);
660       dbms_sql.column_value(p_cur_get_TASK_PART, 2, X_TASK_PART_Rec.PRODUCT_TASK_ID);
661       dbms_sql.column_value(p_cur_get_TASK_PART, 3, X_TASK_PART_Rec.INVENTORY_ITEM_ID);
663       dbms_sql.column_value(p_cur_get_TASK_PART, 5, X_TASK_PART_Rec.MANUAL_PERCENTAGE);
664       dbms_sql.column_value(p_cur_get_TASK_PART, 6, X_TASK_PART_Rec.QUANTITY_USED);
665       dbms_sql.column_value(p_cur_get_TASK_PART, 7, X_TASK_PART_Rec.ACTUAL_TIMES_USED);
666       dbms_sql.column_value(p_cur_get_TASK_PART, 10, X_TASK_PART_Rec.ATTRIBUTE_CATEGORY);
667       dbms_sql.column_value(p_cur_get_TASK_PART, 11, X_TASK_PART_Rec.ATTRIBUTE1);
668       dbms_sql.column_value(p_cur_get_TASK_PART, 12, X_TASK_PART_Rec.ATTRIBUTE2);
669       dbms_sql.column_value(p_cur_get_TASK_PART, 13, X_TASK_PART_Rec.ATTRIBUTE3);
670       dbms_sql.column_value(p_cur_get_TASK_PART, 14, X_TASK_PART_Rec.ATTRIBUTE4);
671       dbms_sql.column_value(p_cur_get_TASK_PART, 15, X_TASK_PART_Rec.ATTRIBUTE5);
672       dbms_sql.column_value(p_cur_get_TASK_PART, 16, X_TASK_PART_Rec.ATTRIBUTE6);
673       dbms_sql.column_value(p_cur_get_TASK_PART, 17, X_TASK_PART_Rec.ATTRIBUTE7);
674       dbms_sql.column_value(p_cur_get_TASK_PART, 18, X_TASK_PART_Rec.ATTRIBUTE8);
675       dbms_sql.column_value(p_cur_get_TASK_PART, 19, X_TASK_PART_Rec.ATTRIBUTE9);
676       dbms_sql.column_value(p_cur_get_TASK_PART, 20, X_TASK_PART_Rec.ATTRIBUTE10);
677       dbms_sql.column_value(p_cur_get_TASK_PART, 21, X_TASK_PART_Rec.ATTRIBUTE11);
678       dbms_sql.column_value(p_cur_get_TASK_PART, 22, X_TASK_PART_Rec.ATTRIBUTE12);
679       dbms_sql.column_value(p_cur_get_TASK_PART, 23, X_TASK_PART_Rec.ATTRIBUTE13);
680       dbms_sql.column_value(p_cur_get_TASK_PART, 24, X_TASK_PART_Rec.ATTRIBUTE14);
681       dbms_sql.column_value(p_cur_get_TASK_PART, 25, X_TASK_PART_Rec.ATTRIBUTE15);
682       dbms_sql.column_value(p_cur_get_TASK_PART, 26, X_TASK_PART_Rec.PRIMARY_UOM_CODE);
683       dbms_sql.column_value(p_cur_get_TASK_PART, 27, X_TASK_PART_Rec.REVISION);
684       dbms_sql.column_value(p_cur_get_TASK_PART, 28, X_TASK_PART_Rec.START_DATE);
685       dbms_sql.column_value(p_cur_get_TASK_PART, 29, X_TASK_PART_Rec.END_DATE);
686       dbms_sql.column_value(p_cur_get_TASK_PART, 29, X_TASK_PART_Rec.ROLLUP_QUANTITY_USED);
687       dbms_sql.column_value(p_cur_get_TASK_PART, 29, X_TASK_PART_Rec.ROLLUP_TIMES_USED);
688       dbms_sql.column_value(p_cur_get_TASK_PART, 30, X_TASK_PART_Rec.SUBSTITUTE_ITEM );
689 
690       -- Debug Message
691       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: Get Column Values Ends');
692 END Get_Column_Values;
693 PROCEDURE Gen_TASK_PART_order_cl(
694     p_order_by_rec   IN   CSP_TASK_PART_PUB.TASK_PART_sort_rec_type,
695     x_order_by_cl    OUT NOCOPY  VARCHAR2,
696     x_return_status  OUT NOCOPY  VARCHAR2,
697     x_msg_count      OUT NOCOPY  NUMBER,
698     x_msg_data       OUT NOCOPY  VARCHAR2
699 )
700 IS
701 l_order_by_cl        VARCHAR2(1000)   := NULL;
702 l_util_order_by_tbl  JTF_PLSQL_API.Util_order_by_tbl_type;
703 BEGIN
704       -- Debug Message
705       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: Generate Order by Begins');
706       -- Hint: Developer should add more statements according to CSP_sort_rec_type
707       -- Ex:
708       -- l_util_order_by_tbl(1).col_choice := p_order_by_rec.customer_name;
709       -- l_util_order_by_tbl(1).col_name := 'Customer_Name';
710       -- Debug Message
711       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Invoke JTF_PLSQL_API.Translate_OrderBy');
712       JTF_PLSQL_API.Translate_OrderBy(
713           p_api_version_number   =>   1.0
714          ,p_init_msg_list        =>   FND_API.G_FALSE
715          ,p_validation_level     =>   FND_API.G_VALID_LEVEL_FULL
716          ,p_order_by_tbl         =>   l_util_order_by_tbl
717          ,x_order_by_clause      =>   l_order_by_cl
718          ,x_return_status        =>   x_return_status
719          ,x_msg_count            =>   x_msg_count
720          ,x_msg_data             =>   x_msg_data);
721       IF(l_order_by_cl IS NOT NULL) THEN
722           x_order_by_cl := 'order by' || l_order_by_cl;
723       ELSE
724           x_order_by_cl := NULL;
725       END IF;
726       -- Debug Message
727       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: Generate Order by Ends');
728 END Gen_TASK_PART_order_cl;
729 -- This procedure bind the variables for the Dynamic SQL
730 PROCEDURE Bind(
731     P_TASK_PART_Rec   IN   CSP_TASK_PART_PUB.TASK_PART_Rec_Type,
732     -- Hint: Add more binding variables here
733     p_cur_get_TASK_PART   IN   NUMBER
734 )
735 IS
736 BEGIN
737       -- Bind variables
738       -- Only those that are not NULL
739       -- Debug Message
740       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: Bind Variables Begins');
741       -- The following example applies to all columns,
742       -- developers can copy and paste them.
743       IF( (P_TASK_PART_Rec.TASK_PART_ID IS NOT NULL) AND (P_TASK_PART_Rec.TASK_PART_ID <> FND_API.G_MISS_NUM) )
744       THEN
745           DBMS_SQL.BIND_VARIABLE(p_cur_get_TASK_PART, ':p_TASK_PART_ID', P_TASK_PART_Rec.TASK_PART_ID);
746       END IF;
747       -- Debug Message
748       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP','Private API: Bind Variables Ends');
749 END Bind;
750 PROCEDURE Gen_Select(
751     x_select_cl   OUT NOCOPY   VARCHAR2
752 )
753 IS
754 BEGIN
758                 'CSP_TASK_PARTS.TASK_PART_ID,' ||
755       -- Debug Message
756       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Generate Select Begins');
757       x_select_cl := 'Select ' ||
759                 'CSP_TASK_PARTS.PRODUCT_TASK_ID,' ||
760                 'CSP_TASK_PARTS.INVENTORY_ITEM_ID,' ||
761                 'CSP_TASK_PARTS.MANUAL_QUANTITY,' ||
762                 'CSP_TASK_PARTS.MANUAL_PERCENTAGE,' ||
763                 'CSP_TASK_PARTS.QUANTITY_USED,' ||
764                 'CSP_TASK_PARTS.ACTUAL_TIMES_USED,' ||
765                 'CSP_TASK_PARTS.CREATED_BY,' ||
766                 'CSP_TASK_PARTS.CREATION_DATE,' ||
767                 'CSP_TASK_PARTS.LAST_UPDATED_BY,' ||
768                 'CSP_TASK_PARTS.LAST_UPDATE_DATE,' ||
769                 'CSP_TASK_PARTS.LAST_UPDATE_LOGIN,' ||
770                 'CSP_TASK_PARTS.ATTRIBUTE_CATEGORY,' ||
771                 'CSP_TASK_PARTS.ATTRIBUTE1,' ||
772                 'CSP_TASK_PARTS.ATTRIBUTE2,' ||
773                 'CSP_TASK_PARTS.ATTRIBUTE3,' ||
774                 'CSP_TASK_PARTS.ATTRIBUTE4,' ||
775                 'CSP_TASK_PARTS.ATTRIBUTE5,' ||
776                 'CSP_TASK_PARTS.ATTRIBUTE6,' ||
777                 'CSP_TASK_PARTS.ATTRIBUTE7,' ||
778                 'CSP_TASK_PARTS.ATTRIBUTE8,' ||
779                 'CSP_TASK_PARTS.ATTRIBUTE9,' ||
780                 'CSP_TASK_PARTS.ATTRIBUTE10,' ||
781                 'CSP_TASK_PARTS.ATTRIBUTE11,' ||
782                 'CSP_TASK_PARTS.ATTRIBUTE12,' ||
783                 'CSP_TASK_PARTS.ATTRIBUTE13,' ||
784                 'CSP_TASK_PARTS.ATTRIBUTE14,' ||
785                 'CSP_TASK_PARTS.ATTRIBUTE15,' ||
786                 'CSP_TASK_PARTS.PRIMARY_UOM_CODE,' ||
787                 'CSP_TASK_PARTS.REVISION,' ||
788                 'CSP_TASK_PARTS.START_DATE,' ||
789                 'CSP_TASK_PARTS.END_DATE,' ||
790                 'from CSP_TASK_PARTS';
791       -- Debug Message
792       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Generate Select Ends');
793 END Gen_Select;
794 PROCEDURE Gen_TASK_PART_Where(
795     P_TASK_PART_Rec     IN   CSP_TASK_PART_PUB.TASK_PART_Rec_Type,
796     x_TASK_PART_where   OUT NOCOPY   VARCHAR2
797 )
798 IS
799 -- cursors to check if wildcard values '%' and '_' have been passed
800 -- as item values
801 CURSOR c_chk_str1(p_rec_item VARCHAR2) IS
802     SELECT INSTR(p_rec_item, '%', 1, 1)
803     FROM DUAL;
804 CURSOR c_chk_str2(p_rec_item VARCHAR2) IS
805     SELECT INSTR(p_rec_item, '_', 1, 1)
806     FROM DUAL;
807 -- return values from cursors
808 str_csr1   NUMBER;
809 str_csr2   NUMBER;
810 l_operator VARCHAR2(10);
811 BEGIN
812       -- Debug Message
813       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Generate Where Begins');
814       -- There are three examples for each kind of datatype:
815       -- NUMBER, DATE, VARCHAR2.
816       -- Developer can copy and paste the following codes for your own record.
817       -- example for NUMBER datatype
818       IF( (P_TASK_PART_Rec.TASK_PART_ID IS NOT NULL) AND (P_TASK_PART_Rec.TASK_PART_ID <> FND_API.G_MISS_NUM) )
819       THEN
820           IF(x_TASK_PART_where IS NULL) THEN
821               x_TASK_PART_where := 'Where';
822           ELSE
823               x_TASK_PART_where := x_TASK_PART_where || ' AND ';
824           END IF;
825           x_TASK_PART_where := x_TASK_PART_where || 'P_TASK_PART_Rec.TASK_PART_ID = :p_TASK_PART_ID';
826       END IF;
827       -- example for DATE datatype
828       IF( (P_TASK_PART_Rec.CREATION_DATE IS NOT NULL) AND (P_TASK_PART_Rec.CREATION_DATE <> FND_API.G_MISS_DATE) )
829       THEN
830           -- check if item value contains '%' wildcard
831           OPEN c_chk_str1(P_TASK_PART_Rec.CREATION_DATE);
832           FETCH c_chk_str1 INTO str_csr1;
833           CLOSE c_chk_str1;
834           IF(str_csr1 <> 0) THEN
835               l_operator := ' LIKE ';
836           ELSE
837               l_operator := ' = ';
838           END IF;
839           -- check if item value contains '_' wildcard
840           OPEN c_chk_str2(P_TASK_PART_Rec.CREATION_DATE);
841           FETCH c_chk_str2 INTO str_csr2;
842           CLOSE c_chk_str2;
843           IF(str_csr2 <> 0) THEN
844               l_operator := ' LIKE ';
845           ELSE
846               l_operator := ' = ';
847           END IF;
848           IF(x_TASK_PART_where IS NULL) THEN
849               x_TASK_PART_where := 'Where ';
850           ELSE
851               x_TASK_PART_where := x_TASK_PART_where || ' AND ';
852           END IF;
853           x_TASK_PART_where := x_TASK_PART_where || 'P_TASK_PART_Rec.CREATION_DATE ' || l_operator || ' :p_CREATION_DATE';
854       END IF;
855       -- example for VARCHAR2 datatype
856       IF( (P_TASK_PART_Rec.ATTRIBUTE_CATEGORY IS NOT NULL) AND (P_TASK_PART_Rec.ATTRIBUTE_CATEGORY <> FND_API.G_MISS_CHAR) )
857       THEN
858           -- check if item value contains '%' wildcard
859           OPEN c_chk_str1(P_TASK_PART_Rec.ATTRIBUTE_CATEGORY);
860           FETCH c_chk_str1 INTO str_csr1;
861           CLOSE c_chk_str1;
862           IF(str_csr1 <> 0) THEN
863               l_operator := ' LIKE ';
864           ELSE
865               l_operator := ' = ';
866           END IF;
867           -- check if item value contains '_' wildcard
868           OPEN c_chk_str2(P_TASK_PART_Rec.ATTRIBUTE_CATEGORY);
869           FETCH c_chk_str2 INTO str_csr2;
870           CLOSE c_chk_str2;
871           IF(str_csr2 <> 0) THEN
872               l_operator := ' LIKE ';
876           IF(x_TASK_PART_where IS NULL) THEN
873           ELSE
874               l_operator := ' = ';
875           END IF;
877               x_TASK_PART_where := 'Where ';
878           ELSE
879               x_TASK_PART_where := x_TASK_PART_where || ' AND ';
880           END IF;
881           x_TASK_PART_where := x_TASK_PART_where || 'P_TASK_PART_Rec.ATTRIBUTE_CATEGORY ' || l_operator || ' :p_ATTRIBUTE_CATEGORY';
882       END IF;
883       -- Add more IF statements for each column below
884       -- Debug Message
885       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: Generate Where Ends');
886 END Gen_TASK_PART_Where;
887 
888 -- Item-level validation procedures
889 PROCEDURE Validate_TASK_PART_ID (
890     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
891     P_Validation_mode            IN   VARCHAR2,
892     P_TASK_PART_ID                IN   NUMBER,
893     -- 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.
894     X_Return_Status              OUT NOCOPY  VARCHAR2,
895     X_Msg_Count                  OUT NOCOPY  NUMBER,
896     X_Msg_Data                   OUT NOCOPY  VARCHAR2
897     )
898 IS
899 BEGIN
900       -- Initialize message list if p_init_msg_list is set to TRUE.
901       IF FND_API.to_Boolean( p_init_msg_list )
902       THEN
903           FND_MSG_PUB.initialize;
904       END IF;
905       -- Initialize API return status to SUCCESS
906       x_return_status := FND_API.G_RET_STS_SUCCESS;
907       -- validate NOT NULL column
908       IF(p_TASK_PART_ID is NULL)
909       THEN
910           JTF_PLSQL_API.Debug_Message('ERROR','CSP', 'Private task_part API: -Violate NOT NULL constraint(TASK_PART_ID)');
911           x_return_status := FND_API.G_RET_STS_ERROR;
912       END IF;
913       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
914       THEN
915           -- Hint: Validate data
916           -- IF p_TASK_PART_ID is not NULL and p_TASK_PART_ID <> G_MISS_CHAR
917           -- verify if data is valid
918           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
919           NULL;
920       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
921       THEN
922           -- Hint: Validate data
923           -- IF p_TASK_PART_ID <> G_MISS_CHAR
924           -- verify if data is valid
925           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
926           NULL;
927       END IF;
928       -- Standard call to get message count and if count is 1, get message info.
929       FND_MSG_PUB.Count_And_Get
930       (  p_count          =>   x_msg_count,
931          p_data           =>   x_msg_data
932       );
933 END Validate_TASK_PART_ID;
934 PROCEDURE Validate_PRODUCT_TASK_ID (
935     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
936     P_Validation_mode            IN   VARCHAR2,
937     P_PRODUCT_TASK_ID                IN   NUMBER,
938     -- 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.
939     X_Return_Status              OUT NOCOPY  VARCHAR2,
940     X_Msg_Count                  OUT NOCOPY  NUMBER,
941     X_Msg_Data                   OUT NOCOPY  VARCHAR2
942     )
943 IS
944 BEGIN
945       -- Initialize message list if p_init_msg_list is set to TRUE.
946       IF FND_API.to_Boolean( p_init_msg_list )
947       THEN
948           FND_MSG_PUB.initialize;
949       END IF;
950       -- Initialize API return status to SUCCESS
951       x_return_status := FND_API.G_RET_STS_SUCCESS;
952       -- validate NOT NULL column
953       IF(p_PRODUCT_TASK_ID is NULL)
954       THEN
955           JTF_PLSQL_API.Debug_Message('ERROR','CSP', 'Private task_part API: -Violate NOT NULL constraint(PRODUCT_TASK_ID)');
956           x_return_status := FND_API.G_RET_STS_ERROR;
957       END IF;
958       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
959       THEN
960           -- Hint: Validate data
961           -- IF p_PRODUCT_TASK_ID is not NULL and p_PRODUCT_TASK_ID <> G_MISS_CHAR
962           -- verify if data is valid
963           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
964           NULL;
965       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
966       THEN
967           -- Hint: Validate data
968           -- IF p_PRODUCT_TASK_ID <> G_MISS_CHAR
969           -- verify if data is valid
970           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
971           NULL;
972       END IF;
973       -- Standard call to get message count and if count is 1, get message info.
974       FND_MSG_PUB.Count_And_Get
975       (  p_count          =>   x_msg_count,
976          p_data           =>   x_msg_data
977       );
978 END Validate_PRODUCT_TASK_ID;
979 PROCEDURE Validate_INVENTORY_ITEM_ID (
980     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
981     P_Validation_mode            IN   VARCHAR2,
982     P_INVENTORY_ITEM_ID                IN   NUMBER,
983     -- 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.
984     X_Return_Status              OUT NOCOPY  VARCHAR2,
985     X_Msg_Count                  OUT NOCOPY  NUMBER,
986     X_Msg_Data                   OUT NOCOPY  VARCHAR2
987     )
988 IS
989 BEGIN
990       -- Initialize message list if p_init_msg_list is set to TRUE.
991       IF FND_API.to_Boolean( p_init_msg_list )
992       THEN
996       x_return_status := FND_API.G_RET_STS_SUCCESS;
993           FND_MSG_PUB.initialize;
994       END IF;
995       -- Initialize API return status to SUCCESS
997       -- validate NOT NULL column
998       IF(p_INVENTORY_ITEM_ID is NULL)
999       THEN
1000           JTF_PLSQL_API.Debug_Message('ERROR','CSP', 'Private task_part API: -Violate NOT NULL constraint(INVENTORY_ITEM_ID)');
1001           x_return_status := FND_API.G_RET_STS_ERROR;
1002       END IF;
1003       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1004       THEN
1005           -- Hint: Validate data
1006           -- IF p_INVENTORY_ITEM_ID is not NULL and p_INVENTORY_ITEM_ID <> G_MISS_CHAR
1007           -- verify if data is valid
1008           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1009           NULL;
1010       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1011       THEN
1012           -- Hint: Validate data
1013           -- IF p_INVENTORY_ITEM_ID <> G_MISS_CHAR
1014           -- verify if data is valid
1015           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1016           NULL;
1017       END IF;
1018       -- Standard call to get message count and if count is 1, get message info.
1019       FND_MSG_PUB.Count_And_Get
1020       (  p_count          =>   x_msg_count,
1021          p_data           =>   x_msg_data
1022       );
1023 END Validate_INVENTORY_ITEM_ID;
1024 PROCEDURE Validate_MANUAL_QUANTITY (
1025     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1026     P_Validation_mode            IN   VARCHAR2,
1027     P_MANUAL_QUANTITY                IN   NUMBER,
1028     -- 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.
1029     X_Return_Status              OUT NOCOPY  VARCHAR2,
1030     X_Msg_Count                  OUT NOCOPY  NUMBER,
1031     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1032     )
1033 IS
1034 BEGIN
1035       -- Initialize message list if p_init_msg_list is set to TRUE.
1036       IF FND_API.to_Boolean( p_init_msg_list )
1037       THEN
1038           FND_MSG_PUB.initialize;
1039       END IF;
1040       -- Initialize API return status to SUCCESS
1041       x_return_status := FND_API.G_RET_STS_SUCCESS;
1042       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1043       THEN
1044           -- Hint: Validate data
1045           -- IF p_MANUAL_QUANTITY is not NULL and p_MANUAL_QUANTITY <> G_MISS_CHAR
1046           -- verify if data is valid
1047           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1048           NULL;
1049       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1050       THEN
1051           -- Hint: Validate data
1052           -- IF p_MANUAL_QUANTITY <> G_MISS_CHAR
1053           -- verify if data is valid
1054           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1055           NULL;
1056       END IF;
1057       -- Standard call to get message count and if count is 1, get message info.
1058       FND_MSG_PUB.Count_And_Get
1059       (  p_count          =>   x_msg_count,
1060          p_data           =>   x_msg_data
1061       );
1062 END Validate_MANUAL_QUANTITY;
1063 PROCEDURE Validate_MANUAL_PERCENTAGE (
1064     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1065     P_Validation_mode            IN   VARCHAR2,
1066     P_MANUAL_PERCENTAGE                IN   NUMBER,
1067     -- 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.
1068     X_Return_Status              OUT NOCOPY  VARCHAR2,
1069     X_Msg_Count                  OUT NOCOPY  NUMBER,
1070     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1071     )
1072 IS
1073 BEGIN
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       -- Initialize API return status to SUCCESS
1080       x_return_status := FND_API.G_RET_STS_SUCCESS;
1081       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1082       THEN
1083           -- Hint: Validate data
1084           -- IF p_MANUAL_PERCENTAGE is not NULL and p_MANUAL_PERCENTAGE <> G_MISS_CHAR
1085           -- verify if data is valid
1086           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1087           NULL;
1088       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1089       THEN
1090           -- Hint: Validate data
1091           -- IF p_MANUAL_PERCENTAGE <> G_MISS_CHAR
1092           -- verify if data is valid
1093           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1094           NULL;
1095       END IF;
1096       -- Standard call to get message count and if count is 1, get message info.
1097       FND_MSG_PUB.Count_And_Get
1098       (  p_count          =>   x_msg_count,
1099          p_data           =>   x_msg_data
1100       );
1101 END Validate_MANUAL_PERCENTAGE;
1102 PROCEDURE Validate_QUANTITY_USED (
1103     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1104     P_Validation_mode            IN   VARCHAR2,
1105     P_QUANTITY_USED                IN   NUMBER,
1106     -- 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.
1107     X_Return_Status              OUT NOCOPY  VARCHAR2,
1108     X_Msg_Count                  OUT NOCOPY  NUMBER,
1109     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1110     )
1111 IS
1115       THEN
1112 BEGIN
1113       -- Initialize message list if p_init_msg_list is set to TRUE.
1114       IF FND_API.to_Boolean( p_init_msg_list )
1116           FND_MSG_PUB.initialize;
1117       END IF;
1118       -- Initialize API return status to SUCCESS
1119       x_return_status := FND_API.G_RET_STS_SUCCESS;
1120       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1121       THEN
1122           -- Hint: Validate data
1123           -- IF p_QUANTITY_USED is not NULL and p_QUANTITY_USED <> G_MISS_CHAR
1124           -- verify if data is valid
1125           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1126           NULL;
1127       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1128       THEN
1129           -- Hint: Validate data
1130           -- IF p_QUANTITY_USED <> G_MISS_CHAR
1131           -- verify if data is valid
1132           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1133           NULL;
1134       END IF;
1135       -- Standard call to get message count and if count is 1, get message info.
1136       FND_MSG_PUB.Count_And_Get
1137       (  p_count          =>   x_msg_count,
1138          p_data           =>   x_msg_data
1139       );
1140 END Validate_QUANTITY_USED;
1141 PROCEDURE Validate_ACTUAL_TIMES_USED (
1142     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1143     P_Validation_mode            IN   VARCHAR2,
1144     P_ACTUAL_TIMES_USED                IN   NUMBER,
1145     -- 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.
1146     X_Return_Status              OUT NOCOPY  VARCHAR2,
1147     X_Msg_Count                  OUT NOCOPY  NUMBER,
1148     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1149     )
1150 IS
1151 BEGIN
1152       -- Initialize message list if p_init_msg_list is set to TRUE.
1153       IF FND_API.to_Boolean( p_init_msg_list )
1154       THEN
1155           FND_MSG_PUB.initialize;
1156       END IF;
1157       -- Initialize API return status to SUCCESS
1158       x_return_status := FND_API.G_RET_STS_SUCCESS;
1159       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1160       THEN
1161           -- Hint: Validate data
1162           -- IF p_ACTUAL_TIMES_USED is not NULL and p_ACTUAL_TIMES_USED <> G_MISS_CHAR
1163           -- verify if data is valid
1164           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1165           NULL;
1166       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1167       THEN
1168           -- Hint: Validate data
1169           -- IF p_ACTUAL_TIMES_USED <> G_MISS_CHAR
1170           -- verify if data is valid
1171           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1172           NULL;
1173       END IF;
1174       -- Standard call to get message count and if count is 1, get message info.
1175       FND_MSG_PUB.Count_And_Get
1176       (  p_count          =>   x_msg_count,
1177          p_data           =>   x_msg_data
1178       );
1179 END Validate_ACTUAL_TIMES_USED;
1180 
1181 PROCEDURE Validate_PRIMARY_UOM_CODE (
1182     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1183     P_Validation_mode            IN   VARCHAR2,
1184     P_PRIMARY_UOM_CODE                IN   VARCHAR2,
1185     -- 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.
1186     X_Return_Status              OUT NOCOPY  VARCHAR2,
1187     X_Msg_Count                  OUT NOCOPY  NUMBER,
1188     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1189     )
1190 IS
1191 BEGIN
1192       -- Initialize message list if p_init_msg_list is set to TRUE.
1193       IF FND_API.to_Boolean( p_init_msg_list )
1194       THEN
1195           FND_MSG_PUB.initialize;
1196       END IF;
1197       -- Initialize API return status to SUCCESS
1198       x_return_status := FND_API.G_RET_STS_SUCCESS;
1199       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1200       THEN
1201           -- Hint: Validate data
1202           -- IF p_PRIMARY_UOM_CODE is not NULL and p_PRIMARY_UOM_CODE <> 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_PRIMARY_UOM_CODE <> 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       -- Standard call to get message count and if count is 1, get message info.
1215       FND_MSG_PUB.Count_And_Get
1216       (  p_count          =>   x_msg_count,
1217          p_data           =>   x_msg_data
1218       );
1219 END Validate_PRIMARY_UOM_CODE;
1220 PROCEDURE Validate_REVISION (
1221     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1222     P_Validation_mode            IN   VARCHAR2,
1223     P_REVISION                IN   VARCHAR2,
1224     -- 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.
1225     X_Return_Status              OUT NOCOPY  VARCHAR2,
1226     X_Msg_Count                  OUT NOCOPY  NUMBER,
1227     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1228     )
1229 IS
1230 BEGIN
1231       -- Initialize message list if p_init_msg_list is set to TRUE.
1232       IF FND_API.to_Boolean( p_init_msg_list )
1233       THEN
1237       x_return_status := FND_API.G_RET_STS_SUCCESS;
1234           FND_MSG_PUB.initialize;
1235       END IF;
1236       -- Initialize API return status to SUCCESS
1238       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1239       THEN
1240           -- Hint: Validate data
1241           -- IF p_REVISION is not NULL and p_REVISION <> G_MISS_CHAR
1242           -- verify if data is valid
1243           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1244           NULL;
1245       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1246       THEN
1247           -- Hint: Validate data
1248           -- IF p_REVISION <> G_MISS_CHAR
1249           -- verify if data is valid
1250           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1251           NULL;
1252       END IF;
1253       -- Standard call to get message count and if count is 1, get message info.
1254       FND_MSG_PUB.Count_And_Get
1255       (  p_count          =>   x_msg_count,
1256          p_data           =>   x_msg_data
1257       );
1258 END Validate_REVISION;
1259 PROCEDURE Validate_START_DATE (
1260     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1261     P_Validation_mode            IN   VARCHAR2,
1262     P_START_DATE                IN   DATE,
1263     -- 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.
1264     X_Return_Status              OUT NOCOPY  VARCHAR2,
1265     X_Msg_Count                  OUT NOCOPY  NUMBER,
1266     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1267     )
1268 IS
1269 BEGIN
1270       -- Initialize message list if p_init_msg_list is set to TRUE.
1271       IF FND_API.to_Boolean( p_init_msg_list )
1272       THEN
1273           FND_MSG_PUB.initialize;
1274       END IF;
1275       -- Initialize API return status to SUCCESS
1276       x_return_status := FND_API.G_RET_STS_SUCCESS;
1277       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1278       THEN
1279           -- Hint: Validate data
1280           -- IF p_START_DATE is not NULL and p_START_DATE <> G_MISS_CHAR
1281           -- verify if data is valid
1282           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1283           NULL;
1284       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1285       THEN
1286           -- Hint: Validate data
1287           -- IF p_START_DATE <> G_MISS_CHAR
1288           -- verify if data is valid
1289           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1290           NULL;
1291       END IF;
1292       -- Standard call to get message count and if count is 1, get message info.
1293       FND_MSG_PUB.Count_And_Get
1294       (  p_count          =>   x_msg_count,
1295          p_data           =>   x_msg_data
1296       );
1297 END Validate_START_DATE;
1298 PROCEDURE Validate_END_DATE (
1299     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1300     P_Validation_mode            IN   VARCHAR2,
1301     P_END_DATE                IN   DATE,
1302     -- 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.
1303     X_Return_Status              OUT NOCOPY  VARCHAR2,
1304     X_Msg_Count                  OUT NOCOPY  NUMBER,
1305     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1306     )
1307 IS
1308 BEGIN
1309       -- Initialize message list if p_init_msg_list is set to TRUE.
1310       IF FND_API.to_Boolean( p_init_msg_list )
1311       THEN
1312           FND_MSG_PUB.initialize;
1313       END IF;
1314       -- Initialize API return status to SUCCESS
1315       x_return_status := FND_API.G_RET_STS_SUCCESS;
1316       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1317       THEN
1318           -- Hint: Validate data
1319           -- IF p_END_DATE is not NULL and p_END_DATE <> G_MISS_CHAR
1320           -- verify if data is valid
1321           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1322           NULL;
1323       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1324       THEN
1325           -- Hint: Validate data
1326           -- IF p_END_DATE <> G_MISS_CHAR
1327           -- verify if data is valid
1328           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1329           NULL;
1330       END IF;
1331       -- Standard call to get message count and if count is 1, get message info.
1332       FND_MSG_PUB.Count_And_Get
1333       (  p_count          =>   x_msg_count,
1334          p_data           =>   x_msg_data
1335       );
1336 END Validate_END_DATE;
1337 
1338 PROCEDURE Validate_ROLLUP_QUANTITY_USED (
1339     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1340     P_Validation_mode            IN   VARCHAR2,
1341     P_ROLLUP_QUANTITY_USED                IN   NUMBER,
1342     -- 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.
1343     X_Return_Status              OUT NOCOPY  VARCHAR2,
1344     X_Msg_Count                  OUT NOCOPY  NUMBER,
1345     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1346     )
1347 IS
1348 BEGIN
1349       -- Initialize message list if p_init_msg_list is set to TRUE.
1350       IF FND_API.to_Boolean( p_init_msg_list )
1351       THEN
1352           FND_MSG_PUB.initialize;
1353       END IF;
1354       -- Initialize API return status to SUCCESS
1355       x_return_status := FND_API.G_RET_STS_SUCCESS;
1356       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1357       THEN
1361           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1358           -- Hint: Validate data
1359           -- IF p_ROLLUP_QUANTITY_USED is not NULL and p_ROLLUP_QUANTITY_USED <> G_MISS_CHAR
1360           -- verify if data is valid
1362           NULL;
1363       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1364       THEN
1365           -- Hint: Validate data
1366           -- IF p_ROLLUP_QUANTITY_USED <> G_MISS_CHAR
1367           -- verify if data is valid
1368           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1369           NULL;
1370       END IF;
1371       -- Standard call to get message count and if count is 1, get message info.
1372       FND_MSG_PUB.Count_And_Get
1373       (  p_count          =>   x_msg_count,
1374          p_data           =>   x_msg_data
1375       );
1376 END Validate_ROLLUP_QUANTITY_USED;
1377 
1378 PROCEDURE Validate_ROLLUP_TIMES_USED (
1379     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1380     P_Validation_mode            IN   VARCHAR2,
1381     P_ROLLUP_TIMES_USED          IN   NUMBER,
1382     -- 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.
1383     X_Return_Status              OUT NOCOPY  VARCHAR2,
1384     X_Msg_Count                  OUT NOCOPY  NUMBER,
1385     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1386     )
1387 IS
1388 BEGIN
1389       -- Initialize message list if p_init_msg_list is set to TRUE.
1390       IF FND_API.to_Boolean( p_init_msg_list )
1391       THEN
1392           FND_MSG_PUB.initialize;
1393       END IF;
1394       -- Initialize API return status to SUCCESS
1395       x_return_status := FND_API.G_RET_STS_SUCCESS;
1396       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1397       THEN
1398           -- Hint: Validate data
1399           -- IF p_ROLLUP_TIMES_USED is not NULL and p_ROLLUP_TIMES_USED <> G_MISS_CHAR
1400           -- verify if data is valid
1401           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1402           NULL;
1403       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1404       THEN
1405           -- Hint: Validate data
1406           -- IF p_ROLLUP_TIMES_USED <> G_MISS_CHAR
1407           -- verify if data is valid
1408           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1409           NULL;
1410       END IF;
1411       -- Standard call to get message count and if count is 1, get message info.
1412       FND_MSG_PUB.Count_And_Get
1413       (  p_count          =>   x_msg_count,
1414          p_data           =>   x_msg_data
1415       );
1416 END Validate_ROLLUP_TIMES_USED;
1417 
1418 PROCEDURE Validate_SUBSTITUTE_ITEM (
1419     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1420     P_Validation_mode            IN   VARCHAR2,
1421     P_SUBSTITUTE_ITEM          IN   NUMBER,
1422     -- 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.
1423     X_Return_Status              OUT NOCOPY  VARCHAR2,
1424     X_Msg_Count                  OUT NOCOPY  NUMBER,
1425     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1426     )
1427 IS
1428 BEGIN
1429       -- Initialize message list if p_init_msg_list is set to TRUE.
1430       IF FND_API.to_Boolean( p_init_msg_list )
1431       THEN
1432           FND_MSG_PUB.initialize;
1433       END IF;
1434       -- Initialize API return status to SUCCESS
1435       x_return_status := FND_API.G_RET_STS_SUCCESS;
1436       IF(p_validation_mode = JTF_PLSQL_API.G_CREATE)
1437       THEN
1438           -- Hint: Validate data
1439           -- IF p_SUBSTITUTE_ITEM is not NULL and p_SUBSTITUTE_ITEM <> G_MISS_CHAR
1440           -- verify if data is valid
1441           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1442           NULL;
1443       ELSIF(p_validation_mode = JTF_PLSQL_API.G_UPDATE)
1444       THEN
1445           -- Hint: Validate data
1446           -- IF p_SUBSTITUTE_ITEM <> G_MISS_CHAR
1447           -- verify if data is valid
1448           -- if data is not valid : x_return_status := FND_API.G_RET_STS_ERROR;
1449           NULL;
1450       END IF;
1451       -- Standard call to get message count and if count is 1, get message info.
1452       FND_MSG_PUB.Count_And_Get
1453       (  p_count          =>   x_msg_count,
1454          p_data           =>   x_msg_data
1455       );
1456 END Validate_SUBSTITUTE_ITEM;
1457 
1458 
1459 -- Hint: inter-field level validation can be added here.
1460 -- Hint: If p_validation_mode = JTF_PLSQL_API.G_VALIDATE_UPDATE, we should use cursor
1461 --       to get old values for all fields used in inter-field validation and set all G_MISS_XXX fields to original value
1462 --       stored in database table.
1463 PROCEDURE Validate_TASK_PART_rec(
1464     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1465     P_Validation_mode            IN   VARCHAR2,
1466     P_TASK_PART_Rec     IN    TASK_PART_Rec_Type,
1467     X_Return_Status              OUT NOCOPY  VARCHAR2,
1468     X_Msg_Count                  OUT NOCOPY  NUMBER,
1469     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1470     )
1471 IS
1472 BEGIN
1473       -- Initialize message list if p_init_msg_list is set to TRUE.
1474       IF FND_API.to_Boolean( p_init_msg_list )
1475       THEN
1476           FND_MSG_PUB.initialize;
1477       END IF;
1478       -- Initialize API return status to SUCCESS
1479       x_return_status := FND_API.G_RET_STS_SUCCESS;
1480       -- Hint: Validate data
1481       -- If data not valid
1482       -- THEN
1483       -- x_return_status := FND_API.G_RET_STS_ERROR;
1487       FND_MSG_PUB.Count_And_Get
1484       -- Debug Message
1485       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'API_INVALID_RECORD');
1486       -- Standard call to get message count and if count is 1, get message info.
1488       (  p_count          =>   x_msg_count,
1489          p_data           =>   x_msg_data
1490       );
1491 END Validate_TASK_PART_Rec;
1492 PROCEDURE Validate_task_part(
1493     P_Init_Msg_List              IN   VARCHAR2     := FND_API.G_FALSE,
1494     P_Validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1495     P_Validation_mode            IN   VARCHAR2,
1496     P_TASK_PART_Rec     IN    TASK_PART_Rec_Type,
1497     X_Return_Status              OUT NOCOPY  VARCHAR2,
1498     X_Msg_Count                  OUT NOCOPY  NUMBER,
1499     X_Msg_Data                   OUT NOCOPY  VARCHAR2
1500     )
1501 IS
1502 l_api_name   CONSTANT VARCHAR2(30) := 'Validate_task_part';
1503  BEGIN
1504       -- Debug Message
1505       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: ' || l_api_name || 'start');
1506       -- Initialize API return status to SUCCESS
1507       x_return_status := FND_API.G_RET_STS_SUCCESS;
1508       IF (p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_ITEM) THEN
1509           -- Hint: We provide validation procedure for every column. Developer should delete
1510           --       unnecessary validation procedures.
1511           Validate_TASK_PART_ID(
1512               p_init_msg_list          => FND_API.G_FALSE,
1513               p_validation_mode        => p_validation_mode,
1514               p_TASK_PART_ID   => P_TASK_PART_Rec.TASK_PART_ID,
1515               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1516               x_return_status          => x_return_status,
1517               x_msg_count              => x_msg_count,
1518               x_msg_data               => x_msg_data);
1519           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1520               raise FND_API.G_EXC_ERROR;
1521           END IF;
1522           Validate_PRODUCT_TASK_ID(
1523               p_init_msg_list          => FND_API.G_FALSE,
1524               p_validation_mode        => p_validation_mode,
1525               p_PRODUCT_TASK_ID   => P_TASK_PART_Rec.PRODUCT_TASK_ID,
1526               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1527               x_return_status          => x_return_status,
1528               x_msg_count              => x_msg_count,
1529               x_msg_data               => x_msg_data);
1530           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1531               raise FND_API.G_EXC_ERROR;
1532           END IF;
1533           Validate_INVENTORY_ITEM_ID(
1534               p_init_msg_list          => FND_API.G_FALSE,
1535               p_validation_mode        => p_validation_mode,
1536               p_INVENTORY_ITEM_ID   => P_TASK_PART_Rec.INVENTORY_ITEM_ID,
1537               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1538               x_return_status          => x_return_status,
1539               x_msg_count              => x_msg_count,
1540               x_msg_data               => x_msg_data);
1541           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1542               raise FND_API.G_EXC_ERROR;
1543           END IF;
1544           Validate_MANUAL_QUANTITY(
1545               p_init_msg_list          => FND_API.G_FALSE,
1546               p_validation_mode        => p_validation_mode,
1547               p_MANUAL_QUANTITY   => P_TASK_PART_Rec.MANUAL_QUANTITY,
1548               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1549               x_return_status          => x_return_status,
1550               x_msg_count              => x_msg_count,
1551               x_msg_data               => x_msg_data);
1552           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1553               raise FND_API.G_EXC_ERROR;
1554           END IF;
1555           Validate_MANUAL_PERCENTAGE(
1556               p_init_msg_list          => FND_API.G_FALSE,
1557               p_validation_mode        => p_validation_mode,
1558               p_MANUAL_PERCENTAGE   => P_TASK_PART_Rec.MANUAL_PERCENTAGE,
1559               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1560               x_return_status          => x_return_status,
1561               x_msg_count              => x_msg_count,
1562               x_msg_data               => x_msg_data);
1563           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1564               raise FND_API.G_EXC_ERROR;
1565           END IF;
1566           Validate_QUANTITY_USED(
1567               p_init_msg_list          => FND_API.G_FALSE,
1568               p_validation_mode        => p_validation_mode,
1569               p_QUANTITY_USED   => P_TASK_PART_Rec.QUANTITY_USED,
1570               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1571               x_return_status          => x_return_status,
1572               x_msg_count              => x_msg_count,
1573               x_msg_data               => x_msg_data);
1574           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1575               raise FND_API.G_EXC_ERROR;
1576           END IF;
1577           Validate_ACTUAL_TIMES_USED(
1578               p_init_msg_list          => FND_API.G_FALSE,
1579               p_validation_mode        => p_validation_mode,
1580               p_ACTUAL_TIMES_USED   => P_TASK_PART_Rec.ACTUAL_TIMES_USED,
1584               x_msg_data               => x_msg_data);
1581               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1582               x_return_status          => x_return_status,
1583               x_msg_count              => x_msg_count,
1585           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1586               raise FND_API.G_EXC_ERROR;
1587           END IF;
1588 
1589           Validate_PRIMARY_UOM_CODE(
1590               p_init_msg_list          => FND_API.G_FALSE,
1591               p_validation_mode        => p_validation_mode,
1592               p_PRIMARY_UOM_CODE   => P_TASK_PART_Rec.PRIMARY_UOM_CODE,
1593               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1594               x_return_status          => x_return_status,
1595               x_msg_count              => x_msg_count,
1596               x_msg_data               => x_msg_data);
1597           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1598               raise FND_API.G_EXC_ERROR;
1599           END IF;
1600           Validate_REVISION(
1601               p_init_msg_list          => FND_API.G_FALSE,
1602               p_validation_mode        => p_validation_mode,
1603               p_REVISION   => P_TASK_PART_Rec.REVISION,
1604               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1605               x_return_status          => x_return_status,
1606               x_msg_count              => x_msg_count,
1607               x_msg_data               => x_msg_data);
1608           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1609               raise FND_API.G_EXC_ERROR;
1610           END IF;
1611           Validate_START_DATE(
1612               p_init_msg_list          => FND_API.G_FALSE,
1613               p_validation_mode        => p_validation_mode,
1614               p_START_DATE   => P_TASK_PART_Rec.START_DATE,
1615               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1616               x_return_status          => x_return_status,
1617               x_msg_count              => x_msg_count,
1618               x_msg_data               => x_msg_data);
1619           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1620               raise FND_API.G_EXC_ERROR;
1621           END IF;
1622           Validate_END_DATE(
1623               p_init_msg_list          => FND_API.G_FALSE,
1624               p_validation_mode        => p_validation_mode,
1625               p_END_DATE   => P_TASK_PART_Rec.END_DATE,
1626               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1627               x_return_status          => x_return_status,
1628               x_msg_count              => x_msg_count,
1629               x_msg_data               => x_msg_data);
1630           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1631               raise FND_API.G_EXC_ERROR;
1632           END IF;
1633 
1634           Validate_ROLLUP_QUANTITY_USED(
1635               p_init_msg_list          => FND_API.G_FALSE,
1636               p_validation_mode        => p_validation_mode,
1637               p_ROLLUP_QUANTITY_USED   => P_TASK_PART_Rec.ROLLUP_QUANTITY_USED,
1638               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1639               x_return_status          => x_return_status,
1640               x_msg_count              => x_msg_count,
1641               x_msg_data               => x_msg_data);
1642           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1643               raise FND_API.G_EXC_ERROR;
1644           END IF;
1645           Validate_ROLLUP_TIMES_USED(
1646               p_init_msg_list          => FND_API.G_FALSE,
1647               p_validation_mode        => p_validation_mode,
1648               p_ROLLUP_TIMES_USED   => P_TASK_PART_Rec.ROLLUP_TIMES_USED,
1649               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1650               x_return_status          => x_return_status,
1651               x_msg_count              => x_msg_count,
1652               x_msg_data               => x_msg_data);
1653           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1654               raise FND_API.G_EXC_ERROR;
1655           END IF;
1656           Validate_SUBSTITUTE_ITEM(
1657               p_init_msg_list          => FND_API.G_FALSE,
1658               p_validation_mode        => p_validation_mode,
1659               p_SUBSTITUTE_ITEM        => P_TASK_PART_Rec.SUBSTITUTE_ITEM,
1660               -- Hint: You may add x_item_property_rec as one of your OUT parameter if you'd like to pass back item property.
1661               x_return_status          => x_return_status,
1662               x_msg_count              => x_msg_count,
1663               x_msg_data               => x_msg_data);
1664           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1665               raise FND_API.G_EXC_ERROR;
1666           END IF;
1667       END IF;
1668       IF (p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_RECORD) THEN
1669           -- Hint: Inter-field level validation can be added here
1670           -- invoke record level validation procedures
1671           Validate_TASK_PART_Rec(
1672               p_init_msg_list          => FND_API.G_FALSE,
1673               p_validation_mode        => p_validation_mode,
1674               P_TASK_PART_Rec          => P_TASK_PART_Rec,
1675               x_return_status          => x_return_status,
1679               raise FND_API.G_EXC_ERROR;
1676               x_msg_count              => x_msg_count,
1677               x_msg_data               => x_msg_data);
1678           IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1680           END IF;
1681       END IF;
1682       IF (p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_INTER_RECORD) THEN
1683           -- invoke inter-record level validation procedures
1684           NULL;
1685       END IF;
1686       IF (p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_INTER_ENTITY) THEN
1687           -- invoke inter-entity level validation procedures
1688           NULL;
1689       END IF;
1690       -- Debug Message
1691       JTF_PLSQL_API.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,'CSP', 'Private API: ' || l_api_name || 'end');
1692 END Validate_task_part;
1693 End CSP_TASK_PART_PVT;