DBA Data[Home] [Help]

PACKAGE BODY: APPS.PV_GE_TEMP_APPROVERS_PVT

Source


1 PACKAGE BODY Pv_Ge_Temp_Approvers_PVT as
2 /* $Header: pvxvptab.pls 120.3 2006/01/25 15:43:01 ktsao ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          Pv_Ge_Temp_Approvers_PVT
7 -- Purpose
8 --
9 -- History
10 --
11 -- NOTE
12 --
13 -- This Api is generated with Latest version of
14 -- Rosetta, where g_miss indicates NULL and
15 -- NULL indicates missing value. Rosetta Version 1.55
16 -- End of Comments
17 -- ===============================================================
18 
19 
20 G_PKG_NAME CONSTANT VARCHAR2(30):= 'Pv_Ge_Temp_Approvers_PVT';
21 G_FILE_NAME CONSTANT VARCHAR2(12) := 'pvxvptab.pls';
22 
23 -- G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
24 -- G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
25 --
26 -- Foreward Procedure Declarations
27 --
28 
29 PROCEDURE Default_Approver_Items (
30    p_approver_rec IN  approver_rec_type ,
31    x_approver_rec OUT NOCOPY approver_rec_type
32 ) ;
33 
34 
35 
36 -- Hint: Primary key needs to be returned.
37 --   ==============================================================================
38 --    Start of Comments
39 --   ==============================================================================
40 --   API Name
41 --           Create_Ptr_Enr_Temp_Appr
42 --   Type
43 --           Private
44 --   Pre-Req
45 --
46 --   Parameters
47 --
48 --   IN
49 --       p_api_version_number      IN   NUMBER     Required
50 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
51 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
52 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
53 --       p_approver_rec            IN   approver_rec_type  Required
54 --
55 --   OUT
56 --       x_return_status           OUT  VARCHAR2
57 --       x_msg_count               OUT  NUMBER
58 --       x_msg_data                OUT  VARCHAR2
59 --   Version : Current version 1.0
60 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
61 --         and basic operation, developer must manually add parameters and business logic as necessary.
62 --
63 --   History
64 --
65 --   NOTE
66 --
67 --   End of Comments
68 --   ==============================================================================
69 
70 PV_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
71 PV_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
72 PV_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
73 
74 PROCEDURE Create_Ptr_Enr_Temp_Appr(
75     p_api_version_number         IN   NUMBER,
76     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
77     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
78     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
79 
80     x_return_status              OUT NOCOPY  VARCHAR2,
81     x_msg_count                  OUT NOCOPY  NUMBER,
82     x_msg_data                   OUT NOCOPY  VARCHAR2,
83 
84     p_approver_rec              IN   approver_rec_type  := g_miss_approver_rec,
85     x_entity_approver_id              OUT NOCOPY  NUMBER
86      )
87 
88  IS
89 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Ptr_Enr_Temp_Appr';
90 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
91    l_return_status_full        VARCHAR2(1);
92    l_object_version_number     NUMBER := 1;
93    l_org_id                    NUMBER := FND_API.G_MISS_NUM;
94    l_entity_approver_id              NUMBER;
95    l_dummy                     NUMBER;
96    CURSOR c_id IS
97       SELECT pv_ge_temp_approvers_s.NEXTVAL
98       FROM dual;
99 
100    CURSOR c_id_exists (l_id IN NUMBER) IS
101       SELECT 1
102       FROM PV_GE_TEMP_APPROVERS
103       WHERE entity_approver_id = l_id;
104 BEGIN
105       -- Standard Start of API savepoint
106       SAVEPOINT create_ptr_enr_temp_appr_pvt;
107 
108       -- Standard call to check for call compatibility.
109       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
110                                            p_api_version_number,
111                                            l_api_name,
112                                            G_PKG_NAME)
113       THEN
114           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
115       END IF;
116 
117 
118       -- Initialize message list if p_init_msg_list is set to TRUE.
119       IF FND_API.to_Boolean( p_init_msg_list )
120       THEN
121          FND_MSG_PUB.initialize;
122       END IF;
123 
124 
125 
126       -- Debug Message
127       IF (PV_DEBUG_HIGH_ON) THEN
128 
129       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
130       END IF;
131 
132 
133 
134       -- Initialize API return status to SUCCESS
135       x_return_status := FND_API.G_RET_STS_SUCCESS;
136 
137       -- =========================================================================
138       -- Validate Environment
139       -- =========================================================================
140 
141       IF FND_GLOBAL.USER_ID IS NULL
142       THEN
143          FND_MESSAGE.Set_Name ('PV', 'USER_PROFILE_MISSING');
144          FND_MSG_PUB.Add;
145          RAISE FND_API.G_EXC_ERROR;
146       END IF;
147 
148 
149 
150       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
151       THEN
152           -- Debug message
153           IF (PV_DEBUG_HIGH_ON) THEN
154 
155           PVX_UTILITY_PVT.debug_message('Private API: Validate_Ptr_Enr_Temp_Appr');
156           END IF;
157 
158           -- Invoke validation procedures
159           Validate_ptr_enr_temp_appr(
160             p_api_version_number     => 1.0,
161             p_init_msg_list    => FND_API.G_FALSE,
162             p_validation_level => p_validation_level,
163             p_validation_mode => JTF_PLSQL_API.g_create,
164             p_approver_rec  =>  p_approver_rec,
165             x_return_status    => x_return_status,
166             x_msg_count        => x_msg_count,
167             x_msg_data         => x_msg_data);
168       END IF;
169 
170       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
171           RAISE FND_API.G_EXC_ERROR;
172       END IF;
173 
174    -- Local variable initialization
175 
176    IF p_approver_rec.entity_approver_id IS NULL OR p_approver_rec.entity_approver_id = FND_API.g_miss_num THEN
177       LOOP
178          l_dummy := NULL;
179          OPEN c_id;
180          FETCH c_id INTO l_entity_approver_id;
181          CLOSE c_id;
182 
183          OPEN c_id_exists(l_entity_approver_id);
184          FETCH c_id_exists INTO l_dummy;
185          CLOSE c_id_exists;
186          EXIT WHEN l_dummy IS NULL;
187       END LOOP;
188    ELSE
189          l_entity_approver_id := p_approver_rec.entity_approver_id;
190    END IF;
191 
192       -- Debug Message
193       IF (PV_DEBUG_HIGH_ON) THEN
194 
195       PVX_UTILITY_PVT.debug_message( 'Private API: Calling create table handler');
196       END IF;
197 
198       -- Invoke table handler(Pv_Ge_Temp_Approvers_Pkg.Insert_Row)
199       Pv_Ge_Temp_Approvers_Pkg.Insert_Row(
200           px_entity_approver_id  => l_entity_approver_id,
201           px_object_version_number  => l_object_version_number,
202           p_arc_appr_for_entity_code  => p_approver_rec.arc_appr_for_entity_code,
203           p_appr_for_entity_id  => p_approver_rec.appr_for_entity_id,
204           p_approver_id  => p_approver_rec.approver_id,
205           p_approver_type_code  => p_approver_rec.approver_type_code,
206           p_approval_status_code  => p_approver_rec.approval_status_code,
207           p_workflow_item_key  => p_approver_rec.workflow_item_key,
208           p_created_by  => FND_GLOBAL.USER_ID,
209           p_creation_date  => SYSDATE,
210           p_last_updated_by  => FND_GLOBAL.USER_ID,
211           p_last_update_date  => SYSDATE,
212           p_last_update_login  => FND_GLOBAL.conc_login_id
213 );
214 
215           x_entity_approver_id := l_entity_approver_id;
216       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
217           RAISE FND_API.G_EXC_ERROR;
218       END IF;
219 --
220 -- End of API body
221 --
222 
223       -- Standard check for p_commit
224       IF FND_API.to_Boolean( p_commit )
225       THEN
226          COMMIT WORK;
227       END IF;
228 
229 
230       -- Debug Message
231       IF (PV_DEBUG_HIGH_ON) THEN
232 
233       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
234       END IF;
235 
236 
237       -- Standard call to get message count and if count is 1, get message info.
238       FND_MSG_PUB.Count_And_Get
239         (p_count          =>   x_msg_count,
240          p_data           =>   x_msg_data
241       );
242 EXCEPTION
243 
244    WHEN PVX_UTILITY_PVT.resource_locked THEN
245      x_return_status := FND_API.g_ret_sts_error;
246          FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
247          FND_MSG_PUB.Add;
248 
249    WHEN FND_API.G_EXC_ERROR THEN
250      ROLLBACK TO CREATE_Ptr_Enr_Temp_Appr_PVT;
251      x_return_status := FND_API.G_RET_STS_ERROR;
252      -- Standard call to get message count and if count=1, get the message
253      FND_MSG_PUB.Count_And_Get (
254             p_encoded => FND_API.G_FALSE,
255             p_count   => x_msg_count,
256             p_data    => x_msg_data
257      );
258 
259    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
260      ROLLBACK TO CREATE_Ptr_Enr_Temp_Appr_PVT;
261      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
262      -- Standard call to get message count and if count=1, get the message
263      FND_MSG_PUB.Count_And_Get (
264             p_encoded => FND_API.G_FALSE,
265             p_count => x_msg_count,
266             p_data  => x_msg_data
267      );
268 
269    WHEN OTHERS THEN
270      ROLLBACK TO CREATE_Ptr_Enr_Temp_Appr_PVT;
271      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
272      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
273      THEN
274         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
275      END IF;
276      -- Standard call to get message count and if count=1, get the message
277      FND_MSG_PUB.Count_And_Get (
278             p_encoded => FND_API.G_FALSE,
279             p_count => x_msg_count,
280             p_data  => x_msg_data
281      );
282 End Create_Ptr_Enr_Temp_Appr;
283 
284 
285 --   ==============================================================================
286 --    Start of Comments
287 --   ==============================================================================
288 --   API Name
289 --           Update_Ptr_Enr_Temp_Appr
290 --   Type
291 --           Private
292 --   Pre-Req
293 --
294 --   Parameters
295 --
296 --   IN
297 --       p_api_version_number      IN   NUMBER     Required
298 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
299 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
300 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
301 --       p_approver_rec            IN   approver_rec_type  Required
302 --
303 --   OUT
304 --       x_return_status           OUT  VARCHAR2
305 --       x_msg_count               OUT  NUMBER
306 --       x_msg_data                OUT  VARCHAR2
307 --   Version : Current version 1.0
308 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
309 --         and basic operation, developer must manually add parameters and business logic as necessary.
310 --
311 --   History
312 --
313 --   NOTE
314 --
315 --   End of Comments
316 --   ==============================================================================
317 
318 PROCEDURE Update_Ptr_Enr_Temp_Appr(
319     p_api_version_number         IN   NUMBER,
320     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
321     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
322     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
323 
324     x_return_status              OUT NOCOPY  VARCHAR2,
325     x_msg_count                  OUT NOCOPY  NUMBER,
326     x_msg_data                   OUT NOCOPY  VARCHAR2,
327 
328     p_approver_rec               IN    approver_rec_type
329     )
330 
331  IS
332 
333 
334 CURSOR c_get_ptr_enr_temp_appr(entity_approver_id NUMBER) IS
335     SELECT *
336     FROM  PV_GE_TEMP_APPROVERS
337     WHERE  entity_approver_id = p_approver_rec.entity_approver_id;
338     -- Hint: Developer need to provide Where clause
339 
340 
341 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Ptr_Enr_Temp_Appr';
342 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
343 -- Local Variables
344 l_object_version_number     NUMBER;
345 l_entity_approver_id    NUMBER;
346 l_ref_approver_rec  c_get_Ptr_Enr_Temp_Appr%ROWTYPE ;
347 l_tar_approver_rec  approver_rec_type := P_approver_rec;
348 l_rowid  ROWID;
349 
350  BEGIN
351       -- Standard Start of API savepoint
352       SAVEPOINT update_ptr_enr_temp_appr_pvt;
353 
354       -- Standard call to check for call compatibility.
355       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
356                                            p_api_version_number,
357                                            l_api_name,
358                                            G_PKG_NAME)
359       THEN
360           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
361       END IF;
362 
363 
364       -- Initialize message list if p_init_msg_list is set to TRUE.
365       IF FND_API.to_Boolean( p_init_msg_list )
366       THEN
367          FND_MSG_PUB.initialize;
368       END IF;
369 
370 
371 
372       -- Debug Message
373       IF (PV_DEBUG_HIGH_ON) THEN
374 
375       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
376       END IF;
377 
378 
379 
380       -- Initialize API return status to SUCCESS
381       x_return_status := FND_API.G_RET_STS_SUCCESS;
382 
383       -- Debug Message
384       IF (PV_DEBUG_HIGH_ON) THEN
385 
386       PVX_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
387       END IF;
388 
389       OPEN c_get_Ptr_Enr_Temp_Appr( l_tar_approver_rec.entity_approver_id);
390 
391       FETCH c_get_Ptr_Enr_Temp_Appr INTO l_ref_approver_rec  ;
392 
393       If ( c_get_Ptr_Enr_Temp_Appr%NOTFOUND) THEN
394 
395         --kvattiku: Oct 27, 05 Commented out and replacing it with FND_MSG calls
396 	--PVX_UTILITY_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
397 	--	p_token_name   => 'INFO',
398 	--	p_token_value  => 'Ptr_Enr_Temp_Appr') ;
399 	--RAISE FND_API.G_EXC_ERROR;
400 
401 	FND_MESSAGE.Set_Name ('PV', 'API_MISSING_UPDATE_TARGET');
402         FND_MESSAGE.Set_Token('INFO', 'Ptr_Enr_Temp_Appr');
403         FND_MSG_PUB.Add;
404 	x_return_status := FND_API.G_RET_STS_ERROR;
405 	RAISE FND_API.G_EXC_ERROR;
406       END IF;
407 
408        -- Debug Message
409        IF (PV_DEBUG_HIGH_ON) THEN
410 
414 
411        PVX_UTILITY_PVT.debug_message('Private API: - Close Cursor');
412        END IF;
413        CLOSE     c_get_Ptr_Enr_Temp_Appr;
415 
416       If (l_tar_approver_rec.object_version_number is NULL or
417           l_tar_approver_rec.object_version_number = FND_API.G_MISS_NUM )
418       Then
419 
420 	--kvattiku: Oct 27, 05 Commented out and replacing it with FND_MSG calls
421 	--PVX_UTILITY_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
422 	--	p_token_name   => 'COLUMN',
423 	--	p_token_value  => 'Last_Update_Date') ;
424 	--raise FND_API.G_EXC_ERROR;
425 
426 	FND_MESSAGE.Set_Name ('PV', 'API_VERSION_MISSING');
427         FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date');
428         FND_MSG_PUB.Add;
429 	x_return_status := FND_API.G_RET_STS_ERROR;
430 	RAISE FND_API.G_EXC_ERROR;
431 
432       End if;
433       -- Check Whether record has been changed by someone else
434       If (l_tar_approver_rec.object_version_number <> l_ref_approver_rec.object_version_number)
435       Then
436 
437 	--kvattiku: Oct 27, 05 Commented out and replacing it with FND_MSG calls
438 	--PVX_UTILITY_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
439 	--	p_token_name   => 'INFO',
440 	--	p_token_value  => 'Ptr_Enr_Temp_Appr') ;
441         --raise FND_API.G_EXC_ERROR;
442 
443 	FND_MESSAGE.Set_Name ('PV', 'API_RECORD_CHANGED');
444         FND_MESSAGE.Set_Token('INFO', 'Ptr_Enr_Temp_Appr');
445         FND_MSG_PUB.Add;
446 	x_return_status := FND_API.G_RET_STS_ERROR;
447 	RAISE FND_API.G_EXC_ERROR;
448 
449       End if;
450 
451 
452       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
453       THEN
454           -- Debug message
455           IF (PV_DEBUG_HIGH_ON) THEN
456 
457           PVX_UTILITY_PVT.debug_message('Private API: Validate_Ptr_Enr_Temp_Appr');
458           END IF;
459 
460           -- Invoke validation procedures
461           Validate_ptr_enr_temp_appr(
462             p_api_version_number     => 1.0,
463             p_init_msg_list    => FND_API.G_FALSE,
464             p_validation_level => p_validation_level,
465             p_validation_mode => JTF_PLSQL_API.g_update,
466             p_approver_rec  =>  p_approver_rec,
467             x_return_status    => x_return_status,
468             x_msg_count        => x_msg_count,
469             x_msg_data         => x_msg_data);
470       END IF;
471 
472       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
473           RAISE FND_API.G_EXC_ERROR;
474       END IF;
475 
476 
477       -- Debug Message
478       IF (PV_DEBUG_HIGH_ON) THEN
479 
480       PVX_UTILITY_PVT.debug_message( 'Private API: Calling update table handler');
481       END IF;
482 
483       -- Invoke table handler(Pv_Ge_Temp_Approvers_Pkg.Update_Row)
484       Pv_Ge_Temp_Approvers_Pkg.Update_Row(
485           p_entity_approver_id  => p_approver_rec.entity_approver_id,
486           p_object_version_number  => p_approver_rec.object_version_number,
487           p_arc_appr_for_entity_code  => p_approver_rec.arc_appr_for_entity_code,
488           p_appr_for_entity_id  => p_approver_rec.appr_for_entity_id,
489           p_approver_id  => p_approver_rec.approver_id,
490           p_approver_type_code  => p_approver_rec.approver_type_code,
491           p_approval_status_code  => p_approver_rec.approval_status_code,
492           p_workflow_item_key  => p_approver_rec.workflow_item_key,
493           p_last_updated_by  => FND_GLOBAL.USER_ID,
494           p_last_update_date  => SYSDATE,
495           p_last_update_login  => FND_GLOBAL.conc_login_id
496 );
497       --
498       -- End of API body.
499       --
500 
501       -- Standard check for p_commit
502       IF FND_API.to_Boolean( p_commit )
503       THEN
504          COMMIT WORK;
505       END IF;
506 
507 
508       -- Debug Message
509       IF (PV_DEBUG_HIGH_ON) THEN
510 
511       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
512       END IF;
513 
514 
515       -- Standard call to get message count and if count is 1, get message info.
516       FND_MSG_PUB.Count_And_Get
517         (p_count          =>   x_msg_count,
518          p_data           =>   x_msg_data
519       );
520 EXCEPTION
521    WHEN PVX_Utility_PVT.API_RECORD_CHANGED THEN
522       x_return_status := Fnd_Api.G_RET_STS_ERROR;
523       IF (PV_DEBUG_HIGH_ON) THEN
524          Pvx_Utility_Pvt.debug_message('PRIVATE API: - OPEN CURSOR');
525       END IF;
526       OPEN c_get_Ptr_Enr_Temp_Appr( l_tar_approver_rec.entity_approver_id);
527       FETCH c_get_Ptr_Enr_Temp_Appr INTO l_ref_approver_rec  ;
528       If ( c_get_Ptr_Enr_Temp_Appr%NOTFOUND) THEN
529          FND_MESSAGE.Set_Name ('PV', 'API_MISSING_UPDATE_TARGET');
530          FND_MESSAGE.Set_Token('INFO', 'Ptr_Enr_Temp_Appr');
531          FND_MSG_PUB.Add;
532        END IF;
533        -- Debug Message
534        IF (PV_DEBUG_HIGH_ON) THEN
535            Pvx_Utility_Pvt.debug_message('PRIVATE API: - CLOSE CURSOR');
536        END IF;
537        CLOSE     c_get_Ptr_Enr_Temp_Appr;
538        If (l_tar_approver_rec.object_version_number <> l_ref_approver_rec.object_version_number) THEN
539          x_return_status := Fnd_Api.G_RET_STS_ERROR;
540          FND_MESSAGE.Set_Name ('PV', 'API_RECORD_CHANGED');
541          FND_MESSAGE.Set_Token('INFO', 'Ptr_Enr_Temp_Appr');
542          FND_MSG_PUB.Add;
543        END IF;
544       Fnd_Msg_Pub.Count_And_Get (
545                 p_encoded => Fnd_Api.G_FALSE,
546                 p_count   => x_msg_count,
547                 p_data    => x_msg_data
548          );
549 
550    WHEN PVX_UTILITY_PVT.resource_locked THEN
551 
552    	--kvattiku: Oct 27, 05 Commented out and replacing it with FND_MSG calls
556 	FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
553 	--x_return_status := FND_API.g_ret_sts_error;
554         --PVX_UTILITY_PVT.Error_Message(p_message_name => 'PV_API_RESOURCE_LOCKED');
555 
557         FND_MSG_PUB.Add;
558 	x_return_status := FND_API.G_RET_STS_ERROR;
559 
560 	FND_MSG_PUB.Count_And_Get (
561             p_encoded => FND_API.G_FALSE,
562             p_count   => x_msg_count,
563             p_data    => x_msg_data
564 	);
565 
566 
567    WHEN FND_API.G_EXC_ERROR THEN
568      ROLLBACK TO UPDATE_Ptr_Enr_Temp_Appr_PVT;
569      x_return_status := FND_API.G_RET_STS_ERROR;
570      -- Standard call to get message count and if count=1, get the message
571      FND_MSG_PUB.Count_And_Get (
572             p_encoded => FND_API.G_FALSE,
573             p_count   => x_msg_count,
574             p_data    => x_msg_data
575      );
576 
577    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
578      ROLLBACK TO UPDATE_Ptr_Enr_Temp_Appr_PVT;
579      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
580      -- Standard call to get message count and if count=1, get the message
581      FND_MSG_PUB.Count_And_Get (
582             p_encoded => FND_API.G_FALSE,
583             p_count => x_msg_count,
584             p_data  => x_msg_data
585      );
586 
587    WHEN OTHERS THEN
588      ROLLBACK TO UPDATE_Ptr_Enr_Temp_Appr_PVT;
589      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
590      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
591      THEN
592         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
593      END IF;
594      -- Standard call to get message count and if count=1, get the message
595      FND_MSG_PUB.Count_And_Get (
596             p_encoded => FND_API.G_FALSE,
597             p_count => x_msg_count,
598             p_data  => x_msg_data
599      );
600 End Update_Ptr_Enr_Temp_Appr;
601 
602 
603 --   ==============================================================================
604 --    Start of Comments
605 --   ==============================================================================
606 --   API Name
607 --           Delete_Ptr_Enr_Temp_Appr
608 --   Type
609 --           Private
610 --   Pre-Req
611 --
612 --   Parameters
613 --
614 --   IN
615 --       p_api_version_number      IN   NUMBER     Required
616 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
617 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
618 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
619 --       p_entity_approver_id                IN   NUMBER
620 --       p_object_version_number   IN   NUMBER     Optional  Default = NULL
621 --
622 --   OUT
623 --       x_return_status           OUT  VARCHAR2
624 --       x_msg_count               OUT  NUMBER
625 --       x_msg_data                OUT  VARCHAR2
626 --   Version : Current version 1.0
627 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
628 --         and basic operation, developer must manually add parameters and business logic as necessary.
629 --
630 --   History
631 --
632 --   NOTE
633 --
634 --   End of Comments
635 --   ==============================================================================
636 
637 PROCEDURE Delete_Ptr_Enr_Temp_Appr(
638     p_api_version_number         IN   NUMBER,
639     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
640     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
641     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
642     x_return_status              OUT NOCOPY  VARCHAR2,
643     x_msg_count                  OUT NOCOPY  NUMBER,
644     x_msg_data                   OUT NOCOPY  VARCHAR2,
645     p_entity_approver_id                   IN  NUMBER,
646     p_object_version_number      IN   NUMBER
647     )
648 
649  IS
650 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Ptr_Enr_Temp_Appr';
651 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
652 l_object_version_number     NUMBER;
653 
654  BEGIN
655       -- Standard Start of API savepoint
656       SAVEPOINT delete_ptr_enr_temp_appr_pvt;
657 
658       -- Standard call to check for call compatibility.
659       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
660                                            p_api_version_number,
661                                            l_api_name,
662                                            G_PKG_NAME)
663       THEN
664           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
665       END IF;
666 
667 
668       -- Initialize message list if p_init_msg_list is set to TRUE.
669       IF FND_API.to_Boolean( p_init_msg_list )
670       THEN
671          FND_MSG_PUB.initialize;
672       END IF;
673 
674 
675 
676       -- Debug Message
677       IF (PV_DEBUG_HIGH_ON) THEN
678 
679       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
680       END IF;
681 
682 
683 
684       -- Initialize API return status to SUCCESS
685       x_return_status := FND_API.G_RET_STS_SUCCESS;
686 
687       --
688       -- Api body
689       --
690       -- Debug Message
691       IF (PV_DEBUG_HIGH_ON) THEN
692 
693       PVX_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
694       END IF;
695 
696       -- Invoke table handler(Pv_Ge_Temp_Approvers_Pkg.Delete_Row)
697       Pv_Ge_Temp_Approvers_Pkg.Delete_Row(
698           p_entity_approver_id  => p_entity_approver_id,
699           p_object_version_number => p_object_version_number     );
703 
700       --
701       -- End of API body
702       --
704       -- Standard check for p_commit
705       IF FND_API.to_Boolean( p_commit )
706       THEN
707          COMMIT WORK;
708       END IF;
709 
710 
711       -- Debug Message
712       IF (PV_DEBUG_HIGH_ON) THEN
713 
714       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
715       END IF;
716 
717 
718       -- Standard call to get message count and if count is 1, get message info.
719       FND_MSG_PUB.Count_And_Get
720         (p_count          =>   x_msg_count,
721          p_data           =>   x_msg_data
722       );
723 EXCEPTION
724 
725    WHEN PVX_UTILITY_PVT.resource_locked THEN
726      x_return_status := FND_API.g_ret_sts_error;
727          FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
728          FND_MSG_PUB.Add;
729 
730    WHEN FND_API.G_EXC_ERROR THEN
731      ROLLBACK TO DELETE_Ptr_Enr_Temp_Appr_PVT;
732      x_return_status := FND_API.G_RET_STS_ERROR;
733      -- Standard call to get message count and if count=1, get the message
734      FND_MSG_PUB.Count_And_Get (
735             p_encoded => FND_API.G_FALSE,
736             p_count   => x_msg_count,
737             p_data    => x_msg_data
738      );
739 
740    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
741      ROLLBACK TO DELETE_Ptr_Enr_Temp_Appr_PVT;
742      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
743      -- Standard call to get message count and if count=1, get the message
744      FND_MSG_PUB.Count_And_Get (
745             p_encoded => FND_API.G_FALSE,
746             p_count => x_msg_count,
747             p_data  => x_msg_data
748      );
749 
750    WHEN OTHERS THEN
751      ROLLBACK TO DELETE_Ptr_Enr_Temp_Appr_PVT;
752      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
753      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
754      THEN
755         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
756      END IF;
757      -- Standard call to get message count and if count=1, get the message
758      FND_MSG_PUB.Count_And_Get (
759             p_encoded => FND_API.G_FALSE,
760             p_count => x_msg_count,
761             p_data  => x_msg_data
762      );
763 End Delete_Ptr_Enr_Temp_Appr;
764 
765 
766 
767 -- Hint: Primary key needs to be returned.
768 --   ==============================================================================
769 --    Start of Comments
770 --   ==============================================================================
771 --   API Name
772 --           Lock_Ptr_Enr_Temp_Appr
773 --   Type
774 --           Private
775 --   Pre-Req
776 --
777 --   Parameters
778 --
779 --   IN
780 --       p_api_version_number      IN   NUMBER     Required
781 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
782 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
783 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
784 --       p_approver_rec            IN   approver_rec_type  Required
785 --
786 --   OUT
787 --       x_return_status           OUT  VARCHAR2
788 --       x_msg_count               OUT  NUMBER
789 --       x_msg_data                OUT  VARCHAR2
790 --   Version : Current version 1.0
791 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
792 --         and basic operation, developer must manually add parameters and business logic as necessary.
793 --
794 --   History
795 --
796 --   NOTE
797 --
798 --   End of Comments
799 --   ==============================================================================
800 
801 PROCEDURE Lock_Ptr_Enr_Temp_Appr(
802     p_api_version_number         IN   NUMBER,
803     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
804 
805     x_return_status              OUT NOCOPY  VARCHAR2,
806     x_msg_count                  OUT NOCOPY  NUMBER,
807     x_msg_data                   OUT NOCOPY  VARCHAR2,
808 
809     p_entity_approver_id                   IN  NUMBER,
810     p_object_version             IN  NUMBER
811     )
812 
813  IS
814 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_Ptr_Enr_Temp_Appr';
815 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
816 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
817 l_entity_approver_id                  NUMBER;
818 
819 BEGIN
820 
821       -- Debug Message
822       IF (PV_DEBUG_HIGH_ON) THEN
823 
824       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
825       END IF;
826 
827 
828       -- Initialize message list if p_init_msg_list is set to TRUE.
829       IF FND_API.to_Boolean( p_init_msg_list )
830       THEN
831          FND_MSG_PUB.initialize;
832       END IF;
833 
834 
835 
836       -- Standard call to check for call compatibility.
837       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
838                                            p_api_version_number,
839                                            l_api_name,
840                                            G_PKG_NAME)
841       THEN
842           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
843       END IF;
844 
845 
846 
847       -- Initialize API return status to SUCCESS
848       x_return_status := FND_API.G_RET_STS_SUCCESS;
849 
850 
851 ------------------------ lock -------------------------
852 Pv_Ge_Temp_Approvers_Pkg.Lock_Row(l_entity_approver_id,p_object_version);
853 
854 
858     p_count   => x_msg_count,
855  -------------------- finish --------------------------
856   FND_MSG_PUB.count_and_get(
857     p_encoded => FND_API.g_false,
859     p_data    => x_msg_data);
860   IF (PV_DEBUG_HIGH_ON) THEN
861 
862   PVX_UTILITY_PVT.debug_message(l_full_name ||': end');
863   END IF;
864 EXCEPTION
865 
866    WHEN PVX_UTILITY_PVT.resource_locked THEN
867      x_return_status := FND_API.g_ret_sts_error;
868          FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
869          FND_MSG_PUB.Add;
870 
871    WHEN FND_API.G_EXC_ERROR THEN
872      ROLLBACK TO LOCK_Ptr_Enr_Temp_Appr_PVT;
873      x_return_status := FND_API.G_RET_STS_ERROR;
874      -- Standard call to get message count and if count=1, get the message
875      FND_MSG_PUB.Count_And_Get (
876             p_encoded => FND_API.G_FALSE,
877             p_count   => x_msg_count,
878             p_data    => x_msg_data
879      );
880 
881    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
882      ROLLBACK TO LOCK_Ptr_Enr_Temp_Appr_PVT;
883      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
884      -- Standard call to get message count and if count=1, get the message
885      FND_MSG_PUB.Count_And_Get (
886             p_encoded => FND_API.G_FALSE,
887             p_count => x_msg_count,
888             p_data  => x_msg_data
889      );
890 
891    WHEN OTHERS THEN
892      ROLLBACK TO LOCK_Ptr_Enr_Temp_Appr_PVT;
893      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
894      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
895      THEN
896         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
897      END IF;
898      -- Standard call to get message count and if count=1, get the message
899      FND_MSG_PUB.Count_And_Get (
900             p_encoded => FND_API.G_FALSE,
901             p_count => x_msg_count,
902             p_data  => x_msg_data
903      );
904 End Lock_Ptr_Enr_Temp_Appr;
905 
906 
907 
908 
909 PROCEDURE check_Approver_Uk_Items(
910     p_approver_rec               IN   approver_rec_type,
911     p_validation_mode            IN  VARCHAR2 := JTF_PLSQL_API.g_create,
912     x_return_status              OUT NOCOPY VARCHAR2)
913 IS
914 l_valid_flag  VARCHAR2(1);
915 
916 BEGIN
917       x_return_status := FND_API.g_ret_sts_success;
918       IF p_validation_mode = JTF_PLSQL_API.g_create
919       AND p_approver_rec.entity_approver_id IS NOT NULL
920       THEN
921          l_valid_flag := PVX_UTILITY_PVT.check_uniqueness(
922          'pv_ge_temp_approvers',
923          'entity_approver_id = ''' || p_approver_rec.entity_approver_id ||''''
924          );
925       END IF;
926 
927       IF l_valid_flag = FND_API.g_false THEN
928          FND_MESSAGE.Set_Name ('PV', 'PV_entity_approver_id_DUPLICATE');
929          FND_MSG_PUB.Add;
930          x_return_status := FND_API.g_ret_sts_error;
931       END IF;
932 
933 END check_Approver_Uk_Items;
934 
935 
936 
937 PROCEDURE check_Approver_Req_Items(
938     p_approver_rec               IN  approver_rec_type,
939     p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
940     x_return_status	         OUT NOCOPY VARCHAR2
941 )
942 IS
943 BEGIN
944    x_return_status := FND_API.g_ret_sts_success;
945 
946    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
947 
948       IF p_approver_rec.arc_appr_for_entity_code = FND_API.g_miss_char OR p_approver_rec.arc_appr_for_entity_code IS NULL THEN
949          FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
950          FND_MESSAGE.Set_Token('MISS_FIELD', 'ARC_APPR_FOR_ENTITY_CODE');
951          FND_MSG_PUB.Add;
952          x_return_status := FND_API.g_ret_sts_error;
953       END IF;
954 
955 
956       IF p_approver_rec.appr_for_entity_id = FND_API.G_MISS_NUM OR p_approver_rec.appr_for_entity_id IS NULL THEN
957          FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
958          FND_MESSAGE.Set_Token('MISS_FIELD', 'APPR_FOR_ENTITY_ID');
959          FND_MSG_PUB.Add;
960          x_return_status := FND_API.g_ret_sts_error;
961       END IF;
962 
963 
964       IF p_approver_rec.approval_status_code = FND_API.g_miss_char OR p_approver_rec.approval_status_code IS NULL THEN
965          FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
966          FND_MESSAGE.Set_Token('MISS_FIELD', 'APPROVAL_STATUS_CODE');
967          FND_MSG_PUB.Add;
968          x_return_status := FND_API.g_ret_sts_error;
969       END IF;
970 
971 
972    ELSE
973 
974 
975       IF p_approver_rec.entity_approver_id = FND_API.G_MISS_NUM THEN
976          FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
977          FND_MESSAGE.Set_Token('MISS_FIELD', 'ENTITY_APPROVER_ID');
978          FND_MSG_PUB.Add;
979          x_return_status := FND_API.g_ret_sts_error;
980       END IF;
981 
982 
983       IF p_approver_rec.object_version_number = FND_API.G_MISS_NUM THEN
984          FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
985          FND_MESSAGE.Set_Token('MISS_FIELD', 'OBJECT_VERSION_NUMBER');
986          FND_MSG_PUB.Add;
987          x_return_status := FND_API.g_ret_sts_error;
988       END IF;
989 
990 
991       IF p_approver_rec.arc_appr_for_entity_code = FND_API.g_miss_char THEN
992          FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
993          FND_MESSAGE.Set_Token('MISS_FIELD', 'ARC_APPR_FOR_ENTITY_CODE');
994          FND_MSG_PUB.Add;
995          x_return_status := FND_API.g_ret_sts_error;
996       END IF;
997 
998 
999       IF p_approver_rec.appr_for_entity_id = FND_API.G_MISS_NUM THEN
1000          FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1001          FND_MESSAGE.Set_Token('MISS_FIELD', 'APPR_FOR_ENTITY_ID');
1005 
1002          FND_MSG_PUB.Add;
1003          x_return_status := FND_API.g_ret_sts_error;
1004       END IF;
1006 
1007       IF p_approver_rec.approval_status_code = FND_API.g_miss_char THEN
1008          FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1009          FND_MESSAGE.Set_Token('MISS_FIELD', 'APPROVAL_STATUS_CODE');
1010          FND_MSG_PUB.Add;
1011          x_return_status := FND_API.g_ret_sts_error;
1012       END IF;
1013    END IF;
1014 
1015 END check_Approver_Req_Items;
1016 
1017 
1018 
1019 PROCEDURE check_Approver_Fk_Items(
1020     p_approver_rec IN approver_rec_type,
1021     x_return_status OUT NOCOPY VARCHAR2
1022 )
1023 IS
1024 BEGIN
1025    x_return_status := FND_API.g_ret_sts_success;
1026 
1027    -- Enter custom code here
1028 
1029 END check_Approver_Fk_Items;
1030 
1031 
1032 
1033 PROCEDURE check_Approver_Lookup_Items(
1034     p_approver_rec IN approver_rec_type,
1035     x_return_status OUT NOCOPY VARCHAR2
1036 )
1037 IS
1038 BEGIN
1039    x_return_status := FND_API.g_ret_sts_success;
1040 
1041    -- Enter custom code here
1042 
1043 END check_Approver_Lookup_Items;
1044 
1045 
1046 
1047 PROCEDURE Check_Approver_Items (
1048     P_approver_rec     IN    approver_rec_type,
1049     p_validation_mode  IN    VARCHAR2,
1050     x_return_status    OUT NOCOPY   VARCHAR2
1051     )
1052 IS
1053    l_return_status   VARCHAR2(1);
1054 BEGIN
1055 
1056     l_return_status := FND_API.g_ret_sts_success;
1057    -- Check Items Uniqueness API calls
1058 
1059    check_Approver_Uk_Items(
1060       p_approver_rec => p_approver_rec,
1061       p_validation_mode => p_validation_mode,
1062       x_return_status => x_return_status);
1063    IF x_return_status <> FND_API.g_ret_sts_success THEN
1064       l_return_status := FND_API.g_ret_sts_error;
1065    END IF;
1066 
1067    -- Check Items Required/NOT NULL API calls
1068 
1069    check_approver_req_items(
1070       p_approver_rec => p_approver_rec,
1071       p_validation_mode => p_validation_mode,
1072       x_return_status => x_return_status);
1073    IF x_return_status <> FND_API.g_ret_sts_success THEN
1074       l_return_status := FND_API.g_ret_sts_error;
1075    END IF;
1076    -- Check Items Foreign Keys API calls
1077 
1078    check_approver_FK_items(
1079       p_approver_rec => p_approver_rec,
1080       x_return_status => x_return_status);
1081    IF x_return_status <> FND_API.g_ret_sts_success THEN
1082       l_return_status := FND_API.g_ret_sts_error;
1083    END IF;
1084    -- Check Items Lookups
1085 
1086    check_approver_Lookup_items(
1087       p_approver_rec => p_approver_rec,
1088       x_return_status => x_return_status);
1089    IF x_return_status <> FND_API.g_ret_sts_success THEN
1090       l_return_status := FND_API.g_ret_sts_error;
1091    END IF;
1092 
1093    x_return_status := l_return_status;
1094 
1095 END Check_approver_Items;
1096 
1097 
1098 
1099 
1100 
1101 PROCEDURE Complete_Approver_Rec (
1102    p_approver_rec IN approver_rec_type,
1103    x_complete_rec OUT NOCOPY approver_rec_type)
1104 IS
1105    l_return_status  VARCHAR2(1);
1106 
1107    CURSOR c_complete IS
1108       SELECT *
1109       FROM pv_ge_temp_approvers
1110       WHERE entity_approver_id = p_approver_rec.entity_approver_id;
1111    l_approver_rec c_complete%ROWTYPE;
1112 BEGIN
1113    x_complete_rec := p_approver_rec;
1114 
1115 
1116    OPEN c_complete;
1117    FETCH c_complete INTO l_approver_rec;
1118    CLOSE c_complete;
1119 
1120    -- entity_approver_id
1121    IF p_approver_rec.entity_approver_id IS NULL THEN
1122       x_complete_rec.entity_approver_id := l_approver_rec.entity_approver_id;
1123    END IF;
1124 
1125    -- object_version_number
1126    IF p_approver_rec.object_version_number IS NULL THEN
1127       x_complete_rec.object_version_number := l_approver_rec.object_version_number;
1128    END IF;
1129 
1130    -- arc_appr_for_entity_code
1131    IF p_approver_rec.arc_appr_for_entity_code IS NULL THEN
1132       x_complete_rec.arc_appr_for_entity_code := l_approver_rec.arc_appr_for_entity_code;
1133    END IF;
1134 
1135    -- appr_for_entity_id
1136    IF p_approver_rec.appr_for_entity_id IS NULL THEN
1137       x_complete_rec.appr_for_entity_id := l_approver_rec.appr_for_entity_id;
1138    END IF;
1139 
1140    -- approver_id
1141    IF p_approver_rec.approver_id IS NULL THEN
1142       x_complete_rec.approver_id := l_approver_rec.approver_id;
1143    END IF;
1144 
1145    -- approver_type_code
1146    IF p_approver_rec.approver_type_code IS NULL THEN
1147       x_complete_rec.approver_type_code := l_approver_rec.approver_type_code;
1148    END IF;
1149 
1150    -- approval_status_code
1151    IF p_approver_rec.approval_status_code IS NULL THEN
1152       x_complete_rec.approval_status_code := l_approver_rec.approval_status_code;
1153    END IF;
1154 
1155    -- workflow_item_key
1156    IF p_approver_rec.workflow_item_key IS NULL THEN
1157       x_complete_rec.workflow_item_key := l_approver_rec.workflow_item_key;
1158    END IF;
1159 
1160    -- created_by
1161    IF p_approver_rec.created_by IS NULL THEN
1162       x_complete_rec.created_by := l_approver_rec.created_by;
1163    END IF;
1164 
1165    -- creation_date
1166    IF p_approver_rec.creation_date IS NULL THEN
1167       x_complete_rec.creation_date := l_approver_rec.creation_date;
1168    END IF;
1169 
1170    -- last_updated_by
1171    IF p_approver_rec.last_updated_by IS NULL THEN
1172       x_complete_rec.last_updated_by := l_approver_rec.last_updated_by;
1173    END IF;
1174 
1178    END IF;
1175    -- last_update_date
1176    IF p_approver_rec.last_update_date IS NULL THEN
1177       x_complete_rec.last_update_date := l_approver_rec.last_update_date;
1179 
1180    -- last_update_login
1181    IF p_approver_rec.last_update_login IS NULL THEN
1182       x_complete_rec.last_update_login := l_approver_rec.last_update_login;
1183    END IF;
1184    -- Note: Developers need to modify the procedure
1185    -- to handle any business specific requirements.
1186 END Complete_Approver_Rec;
1187 
1188 
1189 
1190 
1191 PROCEDURE Default_Approver_Items ( p_approver_rec IN approver_rec_type ,
1192                                 x_approver_rec OUT NOCOPY approver_rec_type )
1193 IS
1194    l_approver_rec approver_rec_type := p_approver_rec;
1195 BEGIN
1196    -- Developers should put their code to default the record type
1197    -- e.g. IF p_campaign_rec.status_code IS NULL
1198    --      OR p_campaign_rec.status_code = FND_API.G_MISS_CHAR THEN
1199    --         l_campaign_rec.status_code := 'NEW' ;
1200    --      END IF ;
1201    --
1202    NULL ;
1203 END;
1204 
1205 
1206 
1207 
1208 PROCEDURE Validate_Ptr_Enr_Temp_Appr(
1209     p_api_version_number         IN   NUMBER,
1210     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1211     p_validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1212     p_approver_rec               IN   approver_rec_type,
1213     p_validation_mode            IN    VARCHAR2,
1214     x_return_status              OUT NOCOPY  VARCHAR2,
1215     x_msg_count                  OUT NOCOPY  NUMBER,
1216     x_msg_data                   OUT NOCOPY  VARCHAR2
1217     )
1218  IS
1219 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Ptr_Enr_Temp_Appr';
1220 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1221 l_object_version_number     NUMBER;
1222 l_approver_rec       approver_rec_type;
1223 l_approver_rec_out   approver_rec_type;
1224 
1225  BEGIN
1226       -- Standard Start of API savepoint
1227       SAVEPOINT validate_ptr_enr_temp_appr_;
1228 
1229       -- Standard call to check for call compatibility.
1230       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1231                                            p_api_version_number,
1232                                            l_api_name,
1233                                            G_PKG_NAME)
1234       THEN
1235           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1236       END IF;
1237 
1238 
1239       -- Initialize message list if p_init_msg_list is set to TRUE.
1240       IF FND_API.to_Boolean( p_init_msg_list )
1241       THEN
1242          FND_MSG_PUB.initialize;
1243       END IF;
1244 
1245 
1246       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1247               Check_approver_Items(
1248                  p_approver_rec        => p_approver_rec,
1249                  p_validation_mode   => p_validation_mode,
1250                  x_return_status     => x_return_status
1251               );
1252 
1253               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1254                   RAISE FND_API.G_EXC_ERROR;
1255               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1256                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1257               END IF;
1258       END IF;
1259 
1260       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
1261          Default_Approver_Items (p_approver_rec => p_approver_rec ,
1262                                 x_approver_rec => l_approver_rec) ;
1263       END IF ;
1264 
1265 
1266       Complete_approver_Rec(
1267          p_approver_rec        => l_approver_rec,
1268          x_complete_rec        => l_approver_rec_out
1269       );
1270 
1271       l_approver_rec := l_approver_rec_out;
1272 
1273       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1274          Validate_approver_Rec(
1275            p_api_version_number     => 1.0,
1276            p_init_msg_list          => FND_API.G_FALSE,
1277            x_return_status          => x_return_status,
1278            x_msg_count              => x_msg_count,
1279            x_msg_data               => x_msg_data,
1280            p_approver_rec           =>    l_approver_rec);
1281 
1282               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1283                  RAISE FND_API.G_EXC_ERROR;
1284               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1285                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1286               END IF;
1287       END IF;
1288 
1289 
1290       -- Debug Message
1291       IF (PV_DEBUG_HIGH_ON) THEN
1292 
1293       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1294       END IF;
1295 
1296 
1297 
1298       -- Initialize API return status to SUCCESS
1299       x_return_status := FND_API.G_RET_STS_SUCCESS;
1300 
1301 
1302       -- Debug Message
1303       IF (PV_DEBUG_HIGH_ON) THEN
1304 
1305       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1306       END IF;
1307 
1308 
1309       -- Standard call to get message count and if count is 1, get message info.
1310       FND_MSG_PUB.Count_And_Get
1311         (p_count          =>   x_msg_count,
1312          p_data           =>   x_msg_data
1313       );
1314 EXCEPTION
1315 
1316    WHEN PVX_UTILITY_PVT.resource_locked THEN
1317      x_return_status := FND_API.g_ret_sts_error;
1318          FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
1319          FND_MSG_PUB.Add;
1320 
1321    WHEN FND_API.G_EXC_ERROR THEN
1322      ROLLBACK TO VALIDATE_Ptr_Enr_Temp_Appr_;
1323      x_return_status := FND_API.G_RET_STS_ERROR;
1324      -- Standard call to get message count and if count=1, get the message
1328             p_data    => x_msg_data
1325      FND_MSG_PUB.Count_And_Get (
1326             p_encoded => FND_API.G_FALSE,
1327             p_count   => x_msg_count,
1329      );
1330 
1331    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1332      ROLLBACK TO VALIDATE_Ptr_Enr_Temp_Appr_;
1333      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1334      -- Standard call to get message count and if count=1, get the message
1335      FND_MSG_PUB.Count_And_Get (
1336             p_encoded => FND_API.G_FALSE,
1337             p_count => x_msg_count,
1338             p_data  => x_msg_data
1339      );
1340 
1341    WHEN OTHERS THEN
1342      ROLLBACK TO VALIDATE_Ptr_Enr_Temp_Appr_;
1343      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1344      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1345      THEN
1346         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1347      END IF;
1348      -- Standard call to get message count and if count=1, get the message
1349      FND_MSG_PUB.Count_And_Get (
1350             p_encoded => FND_API.G_FALSE,
1351             p_count => x_msg_count,
1352             p_data  => x_msg_data
1353      );
1354 End Validate_Ptr_Enr_Temp_Appr;
1355 
1356 
1357 PROCEDURE Validate_Approver_Rec (
1358     p_api_version_number         IN   NUMBER,
1359     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1360     x_return_status              OUT NOCOPY  VARCHAR2,
1361     x_msg_count                  OUT NOCOPY  NUMBER,
1362     x_msg_data                   OUT NOCOPY  VARCHAR2,
1363     p_approver_rec               IN    approver_rec_type
1364     )
1365 IS
1366 BEGIN
1367       -- Initialize message list if p_init_msg_list is set to TRUE.
1368       IF FND_API.to_Boolean( p_init_msg_list )
1369       THEN
1370          FND_MSG_PUB.initialize;
1371       END IF;
1372 
1373 
1374 
1375       -- Initialize API return status to SUCCESS
1376       x_return_status := FND_API.G_RET_STS_SUCCESS;
1377 
1378       -- Hint: Validate data
1379       -- If data not valid
1380       -- THEN
1381       -- x_return_status := FND_API.G_RET_STS_ERROR;
1382 
1383       -- Debug Message
1384       IF (PV_DEBUG_HIGH_ON) THEN
1385 
1386       PVX_UTILITY_PVT.debug_message('Private API: Validate_dm_model_rec');
1387       END IF;
1388       -- Standard call to get message count and if count is 1, get message info.
1389       FND_MSG_PUB.Count_And_Get
1390         (p_count          =>   x_msg_count,
1391          p_data           =>   x_msg_data
1392       );
1393 END Validate_approver_Rec;
1394 
1395 END Pv_Ge_Temp_Approvers_PVT;