DBA Data[Home] [Help]

PACKAGE BODY: APPS.PV_PG_ENRL_REQUESTS_PVT

Source


1 PACKAGE BODY PV_Pg_Enrl_Requests_PVT as
2 /* $Header: pvxvperb.pls 120.7 2006/02/08 09:21:50 dgottlie ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          PV_Pg_Enrl_Requests_PVT
7 -- Purpose
8 --
9 -- History
10 --          20-OCT-2002    Karen.Tsao      Created
11 --          27-NOV-2002    Karen.Tsao      1. Modified to change datatype for order_header_id.
12 --                                         2. Debug message to be wrapped with IF check.
13 --                                         3. Replace of COPY with NOCOPY string.
14 --          27-AUG-2003    Karen.Tsao      Update the Create_Pg_Enrl_Requests, Update_Pg_Enrl_Requests,
15 --                                         and Complete_Enrl_Request_Rec with two new columns in
16 --                                         pv_pg_enrl_requests: membership_fee, transactional_curr_code
17 --          29-AUG-2003    Karen.Tsao      Modified for column name change: transactional_curr_code to trans_curr_code
18 --          26-SEP-2003    pukken	       Added dependent_program_id column in  pv_pg_enrl_requests record
19 --          23-FEB-2004    pukken          Modified code in is_payment_exists function.
20 --          01-APR-2004    Karen.Tsao      Modified Is_Contract_Exists for bug 3540615.
21 --          20-APR-2005    Karen.Tsao      Modified for R12.
22 --	    05-JUL-2005    kvattiku	   Added trxn_extension_id column in  pv_pg_enrl_requests record
23 --          06-SEP-2005    Karen.Tsao      Move the return call to the end of Is_Contract_Exists.
24 --
25 -- NOTE
26 --
27 -- This Api is generated with Latest version of
28 -- Rosetta, where g_miss indicates NULL and
29 -- NULL indicates missing value. Rosetta Version 1.55
30 -- End of Comments
31 -- ===============================================================
32 
33 G_PKG_NAME CONSTANT VARCHAR2(30):= 'PV_Pg_Enrl_Requests_PVT';
34 G_FILE_NAME CONSTANT VARCHAR2(12) := 'pvxvperb.pls';
35 
36 -- G_USER_ID         NUMBER := FND_GLOBAL.USER_ID;
37 -- G_LOGIN_ID        NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
38 --
39 -- Foreward Procedure Declarations
40 --
41 
42 
43 PROCEDURE Default_Enrl_Request_Items (
44    p_enrl_request_rec IN  enrl_request_rec_type ,
45    x_enrl_request_rec OUT NOCOPY enrl_request_rec_type
46 ) ;
47 
48 
49 
50 -- Hint: Primary key needs to be returned.
51 --   ==============================================================================
52 --    Start of Comments
53 --   ==============================================================================
54 --   API Name
55 --           Create_Pg_Enrl_Requests
56 --   Type
57 --           Private
58 --   Pre-Req
59 --
60 --   Parameters
61 --
62 --   IN
63 --       p_api_version_number      IN   NUMBER     Required
64 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
65 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
66 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
67 --       p_enrl_request_rec            IN   enrl_request_rec_type  Required
68 --
69 --   OUT
70 --       x_return_status           OUT  VARCHAR2
71 --       x_msg_count               OUT  NUMBER
72 --       x_msg_data                OUT  VARCHAR2
73 --   Version : Current version 1.0
74 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
75 --         and basic operation, developer must manually add parameters and business logic as necessary.
76 --
77 --   History
78 --
79 --   NOTE
80 --
81 --   End of Comments
82 --   ==============================================================================
83 
84 PV_DEBUG_HIGH_ON CONSTANT BOOLEAN := Fnd_Msg_Pub.CHECK_MSG_LEVEL(Fnd_Msg_Pub.G_MSG_LVL_DEBUG_HIGH);
85 PV_DEBUG_LOW_ON CONSTANT BOOLEAN := Fnd_Msg_Pub.CHECK_MSG_LEVEL(Fnd_Msg_Pub.G_MSG_LVL_DEBUG_LOW);
86 PV_DEBUG_MEDIUM_ON CONSTANT BOOLEAN := Fnd_Msg_Pub.CHECK_MSG_LEVEL(Fnd_Msg_Pub.G_MSG_LVL_DEBUG_MEDIUM);
87 
88 
89 FUNCTION Is_Payment_Exists(p_enrl_request_rec IN OUT  NOCOPY enrl_request_rec_type)
90 RETURN VARCHAR2 IS
91 
92 any_payment 		VARCHAR2(1);
93 l_order_header_id       NUMBER;
94 l_waive_fee_flag        VARCHAR2(1);
95 l_memb_type             VARCHAR2(30);
96 
97 CURSOR fee_csr(p_prg_id NUMBER) IS
98 SELECT no_fee_flag,waive_subsidiary_fee_flag
99 FROM pv_partner_program_b
100 WHERE program_id = p_prg_id;
101 
102 CURSOR order_csr(p_inv_id NUMBER) IS
103 SELECT order_header_id
104 FROM   PV_PG_INVITE_HEADERS_b
105 WHERE  invite_header_id=p_inv_id;
106 
107 CURSOR membertype_csr(p_ptr_id NUMBER) IS
108 SELECT attr_value
109 FROM   pv_enty_attr_values
110 WHERE  entity='PARTNER'
111 AND    entity_id=p_ptr_id
112 AND    attribute_id=6
113 AND    latest_flag='Y';
114 
115 
116 
117 BEGIN
118 
119    OPEN fee_csr(p_enrl_request_rec.program_id);
120       FETCH fee_csr INTO any_payment,l_waive_fee_flag;
121    CLOSE fee_csr;
122 
123    IF (any_payment = 'Y') THEN
124       RETURN 'N';
125    END IF;
126 
127    --if invitea headre id exists then payment exists
128    -- if paymenst exists , then we should populate order header id
129    --and payment status as ' AUTHORIZED_PAYMENT'--check
130    IF  p_enrl_request_rec.invite_header_id is not NULL THEN
131        --means payment exists
132    OPEN order_csr (p_enrl_request_rec.invite_header_id);
133       FETCH order_csr INTO l_order_header_id;
134    CLOSE order_csr;
135       IF (l_order_header_id is not NULL) THEN
136          p_enrl_request_rec.order_header_id:=l_order_header_id;
137          p_enrl_request_rec.payment_status_code:= 'AUTHORIZED_PAYMENT';
138          RETURN 'Y';
139       END IF;
140    END IF;
141    OPEN membertype_csr(p_enrl_request_rec.partner_id);
142       FETCH membertype_csr INTO l_memb_type;
143    CLOSE membertype_csr;
144    IF l_memb_type='SUBSIDIARY' AND l_waive_fee_flag='Y' THEN
145       RETURN 'N';
146    ELSE
147       RETURN 'Y';
148    END IF;
149 
150 END Is_Payment_Exists;
151 
152 FUNCTION Is_Contract_Exists(p_program_id IN NUMBER, p_partner_id IN NUMBER, p_enrl_request_id IN NUMBER)
153 RETURN VARCHAR2 IS
154    x_return_status   VARCHAR2(32767);
155    x_msg_count       NUMBER;
156    x_msg_data        VARCHAR2(32767);
157    l_contract_id     NUMBER;
158    x_exist           VARCHAR2(1);
159    L_API_NAME        CONSTANT VARCHAR2(30) := 'Is_Contract_Exists';
160 
161 BEGIN
162    IF (PV_DEBUG_HIGH_ON) THEN
163       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || ' start');
164       PVX_UTILITY_PVT.debug_message('p_program_id = ' || p_program_id);
165       PVX_UTILITY_PVT.debug_message('p_partner_id = ' || p_partner_id);
166       PVX_UTILITY_PVT.debug_message('p_enrl_request_id = ' || p_enrl_request_id);
167    END IF;
168 
169    PV_Partner_Contracts_PVT.Is_Contract_Exist_Then_Create(
170            p_api_version_number      => 1.0
171           ,p_init_msg_list           => FND_API.G_FALSE
172           ,x_return_status           => x_return_status
173           ,x_msg_count               => x_msg_count
174           ,x_msg_data                => x_msg_data
175           ,p_partner_id              => p_partner_id
176           ,p_program_id              => p_program_id
177           ,p_enrl_request_id         => p_enrl_request_id
178           ,x_exist                   => x_exist
179    );
180 
181 
182    IF (PV_DEBUG_HIGH_ON) THEN
183       PVX_UTILITY_PVT.debug_message('x_exist: ' || x_exist);
184       PVX_UTILITY_PVT.debug_message('x_return_status: ' || x_return_status);
185    END IF;
186 
187    IF x_return_status = FND_API.G_RET_STS_ERROR THEN
188       RAISE FND_API.G_EXC_ERROR;
189    ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR  THEN
190       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
191    END IF;
192 
193    FND_MSG_PUB.Count_And_Get
194    ( p_encoded => FND_API.G_FALSE,
195      p_count          =>   x_msg_count,
196      p_data           =>   x_msg_data
197    );
198 
199    IF (PV_DEBUG_HIGH_ON) THEN
200       PVX_UTILITY_PVT.debug_message('Private API: ' || l_api_name || ' end');
201    END IF;
202 
203    RETURN x_exist;
204 
205 EXCEPTION
206 
207    WHEN Fnd_Api.G_EXC_ERROR THEN
208      x_return_status := Fnd_Api.G_RET_STS_ERROR;
209 
210      -- Standard call to get message count and if count=1, get the message
211      Fnd_Msg_Pub.Count_And_Get (
212              p_encoded => Fnd_Api.G_FALSE
213             ,p_count   => x_msg_count
214             ,p_data    => x_msg_data
215      );
216 
217    WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
218      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
219      -- Standard call to get message count and if count=1, get the message
220      Fnd_Msg_Pub.Count_And_Get (
221              p_encoded => Fnd_Api.G_FALSE
222             ,p_count => x_msg_count
223             ,p_data  => x_msg_data
224      );
225 
226    WHEN OTHERS THEN
227      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
228      IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR)
229      THEN
230         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME, l_api_name);
231      END IF;
232      -- Standard call to get message count and if count=1, get the message
233      Fnd_Msg_Pub.Count_And_Get (
234              p_encoded => Fnd_Api.G_FALSE
235             ,p_count => x_msg_count
236             ,p_data  => x_msg_data
237      );
238 
239 END Is_Contract_Exists;
240 
241 
242 FUNCTION Get_Custom_Setup_Id(p_enrl_request_id IN NUMBER, p_enrl_request_rec IN OUT NOCOPY enrl_request_rec_type )
243 RETURN NUMBER IS
244 
245 custom_setup_id 	NUMBER;
246 any_contract 		VARCHAR2(1);
247 any_payment 		VARCHAR2(1);
248 BEGIN
249      any_contract := Is_Contract_Exists(p_enrl_request_rec.program_id, p_enrl_request_rec.partner_id, p_enrl_request_id);
250      any_payment := Is_Payment_Exists(p_enrl_request_rec);
251      IF (any_contract = 'Y') THEN
252 
253           IF (any_payment = 'Y') THEN
254 
255                --WITH contract, WITH payment
256                custom_setup_id := 7004;
257 
258           ELSE
259 
260                --WITH contract, no payment
261                custom_setup_id := 7006;
262           END IF;
263 
264      ELSE
265 
266           IF (any_payment = 'Y') THEN
267 
268                --no contract, WITH payment
269                custom_setup_id := 7005;
270 
271           ELSE
272 
273                --no contract, no payment
274                custom_setup_id := 7007;
275           END IF;
276 
277 	 END IF;
278      RETURN custom_setup_id;
279 
280 
281 END Get_Custom_Setup_Id;
282 
283 
284 
285 PROCEDURE Create_Pg_Enrl_Requests(
286     p_api_version_number         IN   NUMBER,
287     p_init_msg_list              IN   VARCHAR2     := Fnd_Api.G_FALSE,
288     p_commit                     IN   VARCHAR2     := Fnd_Api.G_FALSE,
289     p_validation_level           IN   NUMBER       := Fnd_Api.G_VALID_LEVEL_FULL,
290 
291     x_return_status              OUT NOCOPY  VARCHAR2,
292     x_msg_count                  OUT NOCOPY  NUMBER,
293     x_msg_data                   OUT NOCOPY  VARCHAR2,
294 
295     p_enrl_request_rec              IN   enrl_request_rec_type  := g_miss_enrl_request_rec,
296     x_enrl_request_id              OUT NOCOPY  NUMBER
297      )
298 
299  IS
300 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_Pg_Enrl_Requests';
301 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
302    l_return_status_full        VARCHAR2(1);
303    l_object_version_number     NUMBER := 1;
304    l_org_id                    NUMBER := Fnd_Api.G_MISS_NUM;
305    l_enrl_request_id              NUMBER;
306    l_custom_setup_id			  NUMBER;
307    l_score_result_code         VARCHAR2(30) := p_enrl_request_rec.score_result_code;
308    l_dummy                     NUMBER;
309    l_enrl_request_rec  enrl_request_rec_type:= g_miss_enrl_request_rec;
310    CURSOR c_id IS
311       SELECT pv_pg_enrl_requests_s.NEXTVAL
312       FROM dual;
313 
314    CURSOR c_id_exists (l_id IN NUMBER) IS
315       SELECT 1
316       FROM PV_PG_ENRL_REQUESTS
317       WHERE enrl_request_id = l_id;
318 BEGIN
319       -- Standard Start of API savepoint
320       SAVEPOINT create_pg_enrl_requests_pvt;
321 
322       -- Standard call to check for call compatibility.
323       IF NOT Fnd_Api.Compatible_API_Call ( l_api_version_number,
324                                            p_api_version_number,
325                                            l_api_name,
326                                            G_PKG_NAME)
327       THEN
328           RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
329       END IF;
330 
331 
332       -- Initialize message list if p_init_msg_list is set to TRUE.
333       IF Fnd_Api.to_Boolean( p_init_msg_list )
334       THEN
335          Fnd_Msg_Pub.initialize;
336       END IF;
337 
338 
339 
340       -- Debug Message
341       IF (PV_DEBUG_HIGH_ON) THEN
342 
343       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'START');
344       END IF;
345 
346 
347 
348       -- Initialize API return status to SUCCESS
349       x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
350 
351       -- =========================================================================
352       -- Validate Environment
353       -- =========================================================================
354 
355       IF Fnd_Global.USER_ID IS NULL
356       THEN
357         FND_MESSAGE.Set_Name ('PV', 'USER_PROFILE_MISSING');
358         FND_MSG_PUB.Add;
359         RAISE Fnd_Api.G_EXC_ERROR;
360       END IF;
361 
362 
363 
364       IF ( P_validation_level >= Fnd_Api.G_VALID_LEVEL_FULL)
365       THEN
366           -- Debug message
367           IF (PV_DEBUG_HIGH_ON) THEN
368 
369           Pvx_Utility_Pvt.debug_message('PRIVATE API: Validate_Pg_Enrl_Requests');
370           END IF;
371 
372           -- Invoke validation procedures
373           Validate_pg_enrl_requests(
374             p_api_version_number     => 1.0,
375             p_init_msg_list    => Fnd_Api.G_FALSE,
376             p_validation_level => p_validation_level,
377             p_validation_mode => Jtf_Plsql_Api.g_create,
378             p_enrl_request_rec  =>  p_enrl_request_rec,
379             x_return_status    => x_return_status,
380             x_msg_count        => x_msg_count,
381             x_msg_data         => x_msg_data);
382       END IF;
383 
384       IF x_return_status<>Fnd_Api.G_RET_STS_SUCCESS THEN
385           RAISE Fnd_Api.G_EXC_ERROR;
386       END IF;
387 
388    -- Local variable initialization
389 
390    IF p_enrl_request_rec.enrl_request_id IS NULL OR p_enrl_request_rec.enrl_request_id = Fnd_Api.g_miss_num THEN
391       LOOP
392          l_dummy := NULL;
393          OPEN c_id;
394          FETCH c_id INTO l_enrl_request_id;
395          CLOSE c_id;
396 
397          OPEN c_id_exists(l_enrl_request_id);
398          FETCH c_id_exists INTO l_dummy;
399          CLOSE c_id_exists;
400          EXIT WHEN l_dummy IS NULL;
401       END LOOP;
402    ELSE
403          l_enrl_request_id := p_enrl_request_rec.enrl_request_id;
404    END IF;
405 
406       -- Debug Message
407       IF (PV_DEBUG_HIGH_ON) THEN
408 
409       Pvx_Utility_Pvt.debug_message( 'PRIVATE API: Calling CREATE TABLE handler');
410       END IF;
411 
412       IF l_score_result_code IS NULL THEN
413          l_score_result_code := 'NOT_EVALUATED';
414       END IF;
415       l_enrl_request_rec:=p_enrl_request_rec;
416       l_custom_setup_id := Get_Custom_Setup_Id(l_enrl_request_id, l_enrl_request_rec);
417 
418 
419       -- Invoke table handler(Pv_Pg_Enrl_Requests_Pkg.Insert_Row)
420       Pv_Pg_Enrl_Requests_Pkg.Insert_Row(
421           px_enrl_request_id  => l_enrl_request_id,
422           px_object_version_number  => l_object_version_number,
423           p_program_id  => p_enrl_request_rec.program_id,
424           p_partner_id  => p_enrl_request_rec.partner_id,
425           p_custom_setup_id  => l_custom_setup_id,
426           p_requestor_resource_id  => p_enrl_request_rec.requestor_resource_id,
427           p_request_status_code  => p_enrl_request_rec.request_status_code,
428           p_enrollment_type_code  => p_enrl_request_rec.enrollment_type_code,
429           p_request_submission_date  => p_enrl_request_rec.request_submission_date,
430           p_order_header_id  => l_enrl_request_rec.order_header_id,
431           p_contract_id  => p_enrl_request_rec.contract_id,
432           p_request_initiated_by_code  => p_enrl_request_rec.request_initiated_by_code,
433           p_invite_header_id  => p_enrl_request_rec.invite_header_id,
434           p_tentative_start_date  => p_enrl_request_rec.tentative_start_date,
435           p_tentative_end_date  => p_enrl_request_rec.tentative_end_date,
436           p_contract_status_code  => p_enrl_request_rec.contract_status_code,
437           p_payment_status_code  => l_enrl_request_rec.payment_status_code,
438           p_score_result_code  => l_score_result_code,
439           p_created_by  => Fnd_Global.USER_ID,
440           p_creation_date  => SYSDATE,
441           p_last_updated_by  => Fnd_Global.USER_ID,
442           p_last_update_date  => SYSDATE,
443           p_last_update_login  => Fnd_Global.conc_login_id,
444           p_membership_fee  => p_enrl_request_rec.membership_fee,
445           p_dependent_program_id  => p_enrl_request_rec.dependent_program_id,
446           p_trans_curr_code  => p_enrl_request_rec.trans_curr_code,
447           p_contract_binding_contact_id  => p_enrl_request_rec.contract_binding_contact_id,
448           p_contract_signed_date  => p_enrl_request_rec.contract_signed_date,
449           p_trxn_extension_id  => p_enrl_request_rec.trxn_extension_id,
450 	  p_attribute1 => p_enrl_request_rec.attribute1,
451 	  p_attribute2 => p_enrl_request_rec.attribute2,
452 	  p_attribute3 => p_enrl_request_rec.attribute3,
453 	  p_attribute4 => p_enrl_request_rec.attribute4,
454 	  p_attribute5 => p_enrl_request_rec.attribute5,
455 	  p_attribute6 => p_enrl_request_rec.attribute6,
456 	  p_attribute7 => p_enrl_request_rec.attribute7,
457 	  p_attribute8 => p_enrl_request_rec.attribute8,
458 	  p_attribute9 => p_enrl_request_rec.attribute9,
459 	  p_attribute10 => p_enrl_request_rec.attribute10,
460 	  p_attribute11 => p_enrl_request_rec.attribute11,
461 	  p_attribute12 => p_enrl_request_rec.attribute12,
462 	  p_attribute13 => p_enrl_request_rec.attribute13,
463 	  p_attribute14 => p_enrl_request_rec.attribute14,
464 	  p_attribute15 => p_enrl_request_rec.attribute15
465 );
466 
467           x_enrl_request_id := l_enrl_request_id;
468       IF x_return_status <> Fnd_Api.G_RET_STS_SUCCESS THEN
469           RAISE Fnd_Api.G_EXC_ERROR;
470       END IF;
471 
472       -- invoke Create_Gc_Responses_Rec
473       Pv_Ge_Chklst_Resp_Pvt.Create_Enrq_Responses(
474             p_api_version_number  => 1.0,
475             p_init_msg_list       => Fnd_Api.G_FALSE,
476             p_commit              =>Fnd_Api.G_FALSE,
477             p_validation_level    => p_validation_level,
478             x_return_status       => x_return_status,
479             x_msg_count           => x_msg_count,
480             x_msg_data            => x_msg_data,
481             p_programId           => p_enrl_request_rec.program_id,
482             p_enrollmentId        => l_enrl_request_id);
483 
484       IF x_return_status<>Fnd_Api.G_RET_STS_SUCCESS THEN
485           RAISE Fnd_Api.G_EXC_ERROR;
486       END IF;
487 
488 --
489 -- End of API body
490 --
491 
492       -- Standard check for p_commit
493       IF Fnd_Api.to_Boolean( p_commit )
494       THEN
495          COMMIT WORK;
496       END IF;
497 
498 
499       -- Debug Message
500       IF (PV_DEBUG_HIGH_ON) THEN
501 
502       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'END');
503       END IF;
504 
505 
506       -- Standard call to get message count and if count is 1, get message info.
507       Fnd_Msg_Pub.Count_And_Get
508         (p_count          =>   x_msg_count,
509          p_data           =>   x_msg_data
510       );
511 EXCEPTION
512 
513    WHEN Pvx_Utility_Pvt.resource_locked THEN
514      x_return_status := Fnd_Api.g_ret_sts_error;
515         FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
516         FND_MSG_PUB.Add;
517 
518    WHEN Fnd_Api.G_EXC_ERROR THEN
519      ROLLBACK TO CREATE_Pg_Enrl_Requests_PVT;
520      x_return_status := Fnd_Api.G_RET_STS_ERROR;
521      -- Standard call to get message count and if count=1, get the message
522      Fnd_Msg_Pub.Count_And_Get (
523             p_encoded => Fnd_Api.G_FALSE,
524             p_count   => x_msg_count,
525             p_data    => x_msg_data
526      );
527 
528    WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
529      ROLLBACK TO CREATE_Pg_Enrl_Requests_PVT;
530      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
531      -- Standard call to get message count and if count=1, get the message
532      Fnd_Msg_Pub.Count_And_Get (
533             p_encoded => Fnd_Api.G_FALSE,
534             p_count => x_msg_count,
535             p_data  => x_msg_data
536      );
537 
538    WHEN OTHERS THEN
539      ROLLBACK TO CREATE_Pg_Enrl_Requests_PVT;
540      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
541      IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR)
542      THEN
543         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
544      END IF;
545      -- Standard call to get message count and if count=1, get the message
546      Fnd_Msg_Pub.Count_And_Get (
547             p_encoded => Fnd_Api.G_FALSE,
548             p_count => x_msg_count,
549             p_data  => x_msg_data
550      );
551 END Create_Pg_Enrl_Requests;
552 
553 
554 --   ==============================================================================
555 --    Start of Comments
556 --   ==============================================================================
557 --   API Name
558 --           Update_Pg_Enrl_Requests
559 --   Type
560 --           Private
561 --   Pre-Req
562 --
563 --   Parameters
564 --
565 --   IN
566 --       p_api_version_number      IN   NUMBER     Required
567 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
568 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
569 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
570 --       p_enrl_request_rec            IN   enrl_request_rec_type  Required
571 --
572 --   OUT
573 --       x_return_status           OUT  VARCHAR2
574 --       x_msg_count               OUT  NUMBER
575 --       x_msg_data                OUT  VARCHAR2
576 --   Version : Current version 1.0
577 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
578 --         and basic operation, developer must manually add parameters and business logic as necessary.
579 --
580 --   History
581 --
582 --   NOTE
583 --
584 --   End of Comments
585 --   ==============================================================================
586 
587 PROCEDURE Update_Pg_Enrl_Requests(
588     p_api_version_number         IN   NUMBER,
589     p_init_msg_list              IN   VARCHAR2     := Fnd_Api.G_FALSE,
590     p_commit                     IN   VARCHAR2     := Fnd_Api.G_FALSE,
591     p_validation_level           IN  NUMBER       := Fnd_Api.G_VALID_LEVEL_FULL,
592 
593     x_return_status              OUT NOCOPY  VARCHAR2,
594     x_msg_count                  OUT NOCOPY  NUMBER,
595     x_msg_data                   OUT NOCOPY  VARCHAR2,
596 
597     p_enrl_request_rec               IN    enrl_request_rec_type
598     )
599 
600  IS
601 
602 
603 CURSOR c_get_pg_enrl_requests(enrl_request_id NUMBER) IS
604     SELECT *
605     FROM  PV_PG_ENRL_REQUESTS
606     WHERE  enrl_request_id = p_enrl_request_rec.enrl_request_id;
607     -- Hint: Developer need to provide Where clause
608 
609 
610 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_Pg_Enrl_Requests';
611 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
612 -- Local Variables
613 l_object_version_number     NUMBER;
614 l_enrl_request_id    NUMBER;
615 l_ref_enrl_request_rec  c_get_Pg_Enrl_Requests%ROWTYPE ;
616 l_tar_enrl_request_rec  enrl_request_rec_type := P_enrl_request_rec;
617 l_rowid  ROWID;
618 
619  BEGIN
620       -- Standard Start of API savepoint
621       SAVEPOINT update_pg_enrl_requests_pvt;
622 
623       -- Standard call to check for call compatibility.
624       IF NOT Fnd_Api.Compatible_API_Call ( l_api_version_number,
625                                            p_api_version_number,
626                                            l_api_name,
627                                            G_PKG_NAME)
628       THEN
629           RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
630       END IF;
631 
632 
633       -- Initialize message list if p_init_msg_list is set to TRUE.
634       IF Fnd_Api.to_Boolean( p_init_msg_list )
635       THEN
636          Fnd_Msg_Pub.initialize;
637       END IF;
638 
639 
640 
641       -- Debug Message
642       IF (PV_DEBUG_HIGH_ON) THEN
643 
644       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'START');
645       END IF;
646 
647 
648 
649       -- Initialize API return status to SUCCESS
650       x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
651 
652       -- Debug Message
653       IF (PV_DEBUG_HIGH_ON) THEN
654 
655       Pvx_Utility_Pvt.debug_message('PRIVATE API: - OPEN CURSOR TO SELECT');
656       END IF;
657 
658       OPEN c_get_Pg_Enrl_Requests( l_tar_enrl_request_rec.enrl_request_id);
659 
660       FETCH c_get_Pg_Enrl_Requests INTO l_ref_enrl_request_rec  ;
661 
662        IF ( c_get_Pg_Enrl_Requests%NOTFOUND) THEN
663          FND_MESSAGE.Set_Name ('PV', 'API_MISSING_UPDATE_TARGET');
664          FND_MESSAGE.Set_Token('INFO', 'Pg_Enrl_Requests');
665          FND_MSG_PUB.Add;
666          RAISE Fnd_Api.G_EXC_ERROR;
667        END IF;
668        -- Debug Message
669        IF (PV_DEBUG_HIGH_ON) THEN
670 
671        Pvx_Utility_Pvt.debug_message('PRIVATE API: - CLOSE CURSOR');
672        END IF;
673        CLOSE     c_get_Pg_Enrl_Requests;
674 
675 
676       IF (l_tar_enrl_request_rec.object_version_number IS NULL OR
677           l_tar_enrl_request_rec.object_version_number = Fnd_Api.G_MISS_NUM ) THEN
678          FND_MESSAGE.Set_Name ('PV', 'API_VERSION_MISSING');
679          FND_MESSAGE.Set_Token('INFO', 'Pg_Enrl_Requests');
680          FND_MSG_PUB.Add;
681          RAISE Fnd_Api.G_EXC_ERROR;
682       END IF;
683       -- Check Whether record has been changed by someone else
684       IF (l_tar_enrl_request_rec.object_version_number <> l_ref_enrl_request_rec.object_version_number) THEN
685          FND_MESSAGE.Set_Name ('PV', 'API_RECORD_CHANGED');
686          FND_MESSAGE.Set_Token('INFO', 'Pg_Enrl_Requests');
687          FND_MSG_PUB.Add;
688          RAISE Fnd_Api.G_EXC_ERROR;
689       END IF;
690 
691 
692       IF ( P_validation_level >= Fnd_Api.G_VALID_LEVEL_FULL)
693       THEN
694           -- Debug message
695           IF (PV_DEBUG_HIGH_ON) THEN
696 
697           Pvx_Utility_Pvt.debug_message('PRIVATE API: Validate_Pg_Enrl_Requests');
698           END IF;
699 
700           -- Invoke validation procedures
701           Validate_pg_enrl_requests(
702             p_api_version_number     => 1.0,
703             p_init_msg_list    => Fnd_Api.G_FALSE,
704             p_validation_level => p_validation_level,
705             p_validation_mode => Jtf_Plsql_Api.g_update,
706             p_enrl_request_rec  =>  p_enrl_request_rec,
707             x_return_status    => x_return_status,
708             x_msg_count        => x_msg_count,
709             x_msg_data         => x_msg_data);
710       END IF;
711 
712       IF x_return_status<>Fnd_Api.G_RET_STS_SUCCESS THEN
713           RAISE Fnd_Api.G_EXC_ERROR;
714       END IF;
715 
716 
717       -- Debug Message
718       IF (PV_DEBUG_HIGH_ON) THEN
719 
720       Pvx_Utility_Pvt.debug_message('PRIVATE API: Calling UPDATE TABLE handler');
721       END IF;
722 
723       IF p_enrl_request_rec.tentative_end_date is not null and ( p_enrl_request_rec.tentative_start_date>p_enrl_request_rec.tentative_end_date ) THEN
724          FND_MESSAGE.set_name('PV', 'PV_END_DATE_SMALL_START_DATE');
725          FND_MSG_PUB.add;
726          RAISE FND_API.G_EXC_ERROR;
727       END IF;
728 
729       -- Invoke table handler(Pv_Pg_Enrl_Requests_Pkg.Update_Row)
730       Pv_Pg_Enrl_Requests_Pkg.Update_Row(
731           p_enrl_request_id  => p_enrl_request_rec.enrl_request_id,
732           p_object_version_number  => p_enrl_request_rec.object_version_number,
733           p_program_id  => p_enrl_request_rec.program_id,
734           p_partner_id  => p_enrl_request_rec.partner_id,
735           p_custom_setup_id  => p_enrl_request_rec.custom_setup_id,
736           p_requestor_resource_id  => p_enrl_request_rec.requestor_resource_id,
737           p_request_status_code  => p_enrl_request_rec.request_status_code,
738           p_enrollment_type_code  => p_enrl_request_rec.enrollment_type_code,
739           p_request_submission_date  => p_enrl_request_rec.request_submission_date,
740           p_contract_id  => p_enrl_request_rec.contract_id,
741           p_request_initiated_by_code  => p_enrl_request_rec.request_initiated_by_code,
742           p_invite_header_id  => p_enrl_request_rec.invite_header_id,
743           p_tentative_start_date  => p_enrl_request_rec.tentative_start_date,
744           p_tentative_end_date  => p_enrl_request_rec.tentative_end_date,
745           p_contract_status_code  => p_enrl_request_rec.contract_status_code,
746           p_payment_status_code  => p_enrl_request_rec.payment_status_code,
747           p_score_result_code  => p_enrl_request_rec.score_result_code,
748           p_last_updated_by  => Fnd_Global.USER_ID,
749           p_last_update_date  => SYSDATE,
750           p_last_update_login  => Fnd_Global.conc_login_id,
751           p_order_header_id  => p_enrl_request_rec.order_header_id,
752           p_membership_fee  => p_enrl_request_rec.membership_fee,
753           p_dependent_program_id  => p_enrl_request_rec.dependent_program_id,
754           p_trans_curr_code  => p_enrl_request_rec.trans_curr_code,
755           p_contract_binding_contact_id  => p_enrl_request_rec.contract_binding_contact_id,
756           p_contract_signed_date  => p_enrl_request_rec.contract_signed_date,
757           p_trxn_extension_id  => p_enrl_request_rec.trxn_extension_id,
758 	  p_attribute1 => p_enrl_request_rec.attribute1,
759 	  p_attribute2 => p_enrl_request_rec.attribute2,
760 	  p_attribute3 => p_enrl_request_rec.attribute3,
761 	  p_attribute4 => p_enrl_request_rec.attribute4,
762 	  p_attribute5 => p_enrl_request_rec.attribute5,
763 	  p_attribute6 => p_enrl_request_rec.attribute6,
764 	  p_attribute7 => p_enrl_request_rec.attribute7,
765 	  p_attribute8 => p_enrl_request_rec.attribute8,
766 	  p_attribute9 => p_enrl_request_rec.attribute9,
767 	  p_attribute10 => p_enrl_request_rec.attribute10,
768 	  p_attribute11 => p_enrl_request_rec.attribute11,
769 	  p_attribute12 => p_enrl_request_rec.attribute12,
770 	  p_attribute13 => p_enrl_request_rec.attribute13,
771 	  p_attribute14 => p_enrl_request_rec.attribute14,
772 	  p_attribute15 => p_enrl_request_rec.attribute15
773 );
774       --
775       -- End of API body.
776       --
777 
778       -- Standard check for p_commit
779       IF Fnd_Api.to_Boolean( p_commit )
780       THEN
781          COMMIT WORK;
782       END IF;
783 
784 
785       -- Debug Message
786       IF (PV_DEBUG_HIGH_ON) THEN
787 
788       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'END');
789       END IF;
790 
791 
792       -- Standard call to get message count and if count is 1, get message info.
793       Fnd_Msg_Pub.Count_And_Get
794         (p_count          =>   x_msg_count,
795          p_data           =>   x_msg_data
796       );
797 EXCEPTION
798    WHEN PVX_Utility_PVT.API_RECORD_CHANGED THEN
799       x_return_status := Fnd_Api.G_RET_STS_ERROR;
800       IF (PV_DEBUG_HIGH_ON) THEN
801          Pvx_Utility_Pvt.debug_message('PRIVATE API: - OPEN CURSOR');
802       END IF;
803       OPEN c_get_Pg_Enrl_Requests( l_tar_enrl_request_rec.enrl_request_id);
804       FETCH c_get_Pg_Enrl_Requests INTO l_ref_enrl_request_rec;
805       IF ( c_get_Pg_Enrl_Requests%NOTFOUND) THEN
806          FND_MESSAGE.Set_Name ('PV', 'API_MISSING_UPDATE_TARGET');
807          FND_MESSAGE.Set_Token('INFO', 'Pg_Enrl_Requests');
808          FND_MSG_PUB.Add;
809        END IF;
810        -- Debug Message
811        IF (PV_DEBUG_HIGH_ON) THEN
812            Pvx_Utility_Pvt.debug_message('PRIVATE API: - CLOSE CURSOR');
813        END IF;
814        CLOSE     c_get_Pg_Enrl_Requests;
815        IF (l_tar_enrl_request_rec.object_version_number <> l_ref_enrl_request_rec.object_version_number) THEN
816          x_return_status := Fnd_Api.G_RET_STS_ERROR;
817          FND_MESSAGE.Set_Name ('PV', 'API_RECORD_CHANGED');
818          FND_MESSAGE.Set_Token('INFO', 'Pv_Pg_Enrl_Requests');
819          FND_MSG_PUB.Add;
820        END IF;
821       Fnd_Msg_Pub.Count_And_Get (
822                 p_encoded => Fnd_Api.G_FALSE,
823                 p_count   => x_msg_count,
824                 p_data    => x_msg_data
825          );
826 
827    WHEN Pvx_Utility_Pvt.resource_locked THEN
828      x_return_status := Fnd_Api.g_ret_sts_error;
829         FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
830         FND_MSG_PUB.Add;
831    WHEN Fnd_Api.G_EXC_ERROR THEN
832      ROLLBACK TO UPDATE_Pg_Enrl_Requests_PVT;
833      x_return_status := Fnd_Api.G_RET_STS_ERROR;
834      -- Standard call to get message count and if count=1, get the message
835      Fnd_Msg_Pub.Count_And_Get (
836             p_encoded => Fnd_Api.G_FALSE,
837             p_count   => x_msg_count,
838             p_data    => x_msg_data
839      );
840 
841    WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
842      ROLLBACK TO UPDATE_Pg_Enrl_Requests_PVT;
843      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
844      -- Standard call to get message count and if count=1, get the message
845      Fnd_Msg_Pub.Count_And_Get (
846             p_encoded => Fnd_Api.G_FALSE,
847             p_count => x_msg_count,
848             p_data  => x_msg_data
849      );
850 
851    WHEN OTHERS THEN
852      ROLLBACK TO UPDATE_Pg_Enrl_Requests_PVT;
853      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
854      IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR)
855      THEN
856         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
857      END IF;
858      -- Standard call to get message count and if count=1, get the message
859      Fnd_Msg_Pub.Count_And_Get (
860             p_encoded => Fnd_Api.G_FALSE,
861             p_count => x_msg_count,
862             p_data  => x_msg_data
863      );
864 END Update_Pg_Enrl_Requests;
865 
866 
867 --   ==============================================================================
868 --    Start of Comments
869 --   ==============================================================================
870 --   API Name
871 --           Delete_Pg_Enrl_Requests
872 --   Type
873 --           Private
874 --   Pre-Req
875 --
876 --   Parameters
877 --
878 --   IN
879 --       p_api_version_number      IN   NUMBER     Required
880 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
881 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
882 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
883 --       p_enrl_request_id                IN   NUMBER
884 --       p_object_version_number   IN   NUMBER     Optional  Default = NULL
885 --
886 --   OUT
887 --       x_return_status           OUT  VARCHAR2
888 --       x_msg_count               OUT  NUMBER
889 --       x_msg_data                OUT  VARCHAR2
890 --   Version : Current version 1.0
891 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
892 --         and basic operation, developer must manually add parameters and business logic as necessary.
893 --
894 --   History
895 --
896 --   NOTE
897 --
898 --   End of Comments
899 --   ==============================================================================
900 
901 PROCEDURE Delete_Pg_Enrl_Requests(
902     p_api_version_number         IN   NUMBER,
903     p_init_msg_list              IN   VARCHAR2     := Fnd_Api.G_FALSE,
904     p_commit                     IN   VARCHAR2     := Fnd_Api.G_FALSE,
905     p_validation_level           IN   NUMBER       := Fnd_Api.G_VALID_LEVEL_FULL,
906     x_return_status              OUT NOCOPY  VARCHAR2,
907     x_msg_count                  OUT NOCOPY  NUMBER,
908     x_msg_data                   OUT NOCOPY  VARCHAR2,
909     p_enrl_request_id                   IN  NUMBER,
910     p_object_version_number      IN   NUMBER
911     )
912 
913  IS
914 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_Pg_Enrl_Requests';
915 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
916 l_object_version_number     NUMBER;
917 
918  BEGIN
919       -- Standard Start of API savepoint
920       SAVEPOINT delete_pg_enrl_requests_pvt;
921 
922       -- Standard call to check for call compatibility.
923       IF NOT Fnd_Api.Compatible_API_Call ( l_api_version_number,
924                                            p_api_version_number,
925                                            l_api_name,
926                                            G_PKG_NAME)
927       THEN
928           RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
929       END IF;
930 
931 
932       -- Initialize message list if p_init_msg_list is set to TRUE.
933       IF Fnd_Api.to_Boolean( p_init_msg_list )
934       THEN
935          Fnd_Msg_Pub.initialize;
936       END IF;
937 
938 
939 
940       -- Debug Message
941       IF (PV_DEBUG_HIGH_ON) THEN
942 
943       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'START');
944       END IF;
945 
946 
947 
948       -- Initialize API return status to SUCCESS
949       x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
950 
951       --
952       -- Api body
953       --
954       -- Debug Message
955       IF (PV_DEBUG_HIGH_ON) THEN
956 
957       Pvx_Utility_Pvt.debug_message( 'PRIVATE API: Calling DELETE TABLE handler');
958       END IF;
959 
960       -- Invoke table handler(Pv_Pg_Enrl_Requests_Pkg.Delete_Row)
961       Pv_Pg_Enrl_Requests_Pkg.Delete_Row(
962           p_enrl_request_id  => p_enrl_request_id,
963           p_object_version_number => p_object_version_number     );
964       --
965       -- End of API body
966       --
967 
968       -- Standard check for p_commit
969       IF Fnd_Api.to_Boolean( p_commit )
970       THEN
971          COMMIT WORK;
972       END IF;
973 
974 
975       -- Debug Message
976       IF (PV_DEBUG_HIGH_ON) THEN
977 
978       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'END');
979       END IF;
980 
981 
982       -- Standard call to get message count and if count is 1, get message info.
983       Fnd_Msg_Pub.Count_And_Get
984         (p_count          =>   x_msg_count,
985          p_data           =>   x_msg_data
986       );
987 EXCEPTION
988 
989    WHEN Pvx_Utility_Pvt.resource_locked THEN
990      x_return_status := Fnd_Api.g_ret_sts_error;
991      FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
992      FND_MSG_PUB.Add;
993 
994    WHEN Fnd_Api.G_EXC_ERROR THEN
995      ROLLBACK TO DELETE_Pg_Enrl_Requests_PVT;
996      x_return_status := Fnd_Api.G_RET_STS_ERROR;
997      -- Standard call to get message count and if count=1, get the message
998      Fnd_Msg_Pub.Count_And_Get (
999             p_encoded => Fnd_Api.G_FALSE,
1000             p_count   => x_msg_count,
1001             p_data    => x_msg_data
1002      );
1003 
1004    WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1005      ROLLBACK TO DELETE_Pg_Enrl_Requests_PVT;
1006      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1007      -- Standard call to get message count and if count=1, get the message
1008      Fnd_Msg_Pub.Count_And_Get (
1009             p_encoded => Fnd_Api.G_FALSE,
1010             p_count => x_msg_count,
1011             p_data  => x_msg_data
1012      );
1013 
1014    WHEN OTHERS THEN
1015      ROLLBACK TO DELETE_Pg_Enrl_Requests_PVT;
1016      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1017      IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR)
1018      THEN
1019         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1020      END IF;
1021      -- Standard call to get message count and if count=1, get the message
1022      Fnd_Msg_Pub.Count_And_Get (
1023             p_encoded => Fnd_Api.G_FALSE,
1024             p_count => x_msg_count,
1025             p_data  => x_msg_data
1026      );
1027 END Delete_Pg_Enrl_Requests;
1028 
1029 
1030 
1031 -- Hint: Primary key needs to be returned.
1032 --   ==============================================================================
1033 --    Start of Comments
1034 --   ==============================================================================
1035 --   API Name
1036 --           Lock_Pg_Enrl_Requests
1037 --   Type
1038 --           Private
1039 --   Pre-Req
1040 --
1041 --   Parameters
1042 --
1043 --   IN
1044 --       p_api_version_number      IN   NUMBER     Required
1045 --       p_init_msg_list           IN   VARCHAR2   Optional  Default = FND_API_G_FALSE
1046 --       p_commit                  IN   VARCHAR2   Optional  Default = FND_API.G_FALSE
1047 --       p_validation_level        IN   NUMBER     Optional  Default = FND_API.G_VALID_LEVEL_FULL
1048 --       p_enrl_request_rec            IN   enrl_request_rec_type  Required
1049 --
1050 --   OUT
1051 --       x_return_status           OUT  VARCHAR2
1052 --       x_msg_count               OUT  NUMBER
1053 --       x_msg_data                OUT  VARCHAR2
1054 --   Version : Current version 1.0
1055 --   Note: This automatic generated procedure definition, it includes standard IN/OUT parameters
1056 --         and basic operation, developer must manually add parameters and business logic as necessary.
1057 --
1058 --   History
1059 --
1060 --   NOTE
1061 --
1062 --   End of Comments
1063 --   ==============================================================================
1064 
1065 PROCEDURE Lock_Pg_Enrl_Requests(
1066     p_api_version_number         IN   NUMBER,
1067     p_init_msg_list              IN   VARCHAR2     := Fnd_Api.G_FALSE,
1068 
1069     x_return_status              OUT NOCOPY  VARCHAR2,
1070     x_msg_count                  OUT NOCOPY  NUMBER,
1071     x_msg_data                   OUT NOCOPY  VARCHAR2,
1072 
1073     p_enrl_request_id                   IN  NUMBER,
1074     p_object_version             IN  NUMBER
1075     )
1076 
1077  IS
1078 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_Pg_Enrl_Requests';
1079 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1080 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
1081 l_enrl_request_id                  NUMBER;
1082 
1083 BEGIN
1084 
1085       -- Debug Message
1086       IF (PV_DEBUG_HIGH_ON) THEN
1087 
1088       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'START');
1089       END IF;
1090 
1091 
1092       -- Initialize message list if p_init_msg_list is set to TRUE.
1093       IF Fnd_Api.to_Boolean( p_init_msg_list )
1094       THEN
1095          Fnd_Msg_Pub.initialize;
1096       END IF;
1097 
1098 
1099 
1100       -- Standard call to check for call compatibility.
1101       IF NOT Fnd_Api.Compatible_API_Call ( l_api_version_number,
1102                                            p_api_version_number,
1103                                            l_api_name,
1104                                            G_PKG_NAME)
1105       THEN
1106           RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1107       END IF;
1108 
1109 
1110 
1111       -- Initialize API return status to SUCCESS
1112       x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1113 
1114 
1115 ------------------------ lock -------------------------
1116 Pv_Pg_Enrl_Requests_Pkg.Lock_Row(l_enrl_request_id,p_object_version);
1117 
1118 
1119  -------------------- finish --------------------------
1120   Fnd_Msg_Pub.count_and_get(
1121     p_encoded => Fnd_Api.g_false,
1122     p_count   => x_msg_count,
1123     p_data    => x_msg_data);
1124   IF (PV_DEBUG_HIGH_ON) THEN
1125 
1126   Pvx_Utility_Pvt.debug_message(l_full_name ||': END');
1127   END IF;
1128 EXCEPTION
1129 
1130    WHEN Pvx_Utility_Pvt.resource_locked THEN
1131        x_return_status := Fnd_Api.g_ret_sts_error;
1132       FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
1133       FND_MSG_PUB.Add;
1134 
1135    WHEN Fnd_Api.G_EXC_ERROR THEN
1136      ROLLBACK TO LOCK_Pg_Enrl_Requests_PVT;
1137      x_return_status := Fnd_Api.G_RET_STS_ERROR;
1138      -- Standard call to get message count and if count=1, get the message
1139      Fnd_Msg_Pub.Count_And_Get (
1140             p_encoded => Fnd_Api.G_FALSE,
1141             p_count   => x_msg_count,
1142             p_data    => x_msg_data
1143      );
1144 
1145    WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1146      ROLLBACK TO LOCK_Pg_Enrl_Requests_PVT;
1147      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1148      -- Standard call to get message count and if count=1, get the message
1149      Fnd_Msg_Pub.Count_And_Get (
1150             p_encoded => Fnd_Api.G_FALSE,
1151             p_count => x_msg_count,
1152             p_data  => x_msg_data
1153      );
1154 
1155    WHEN OTHERS THEN
1156      ROLLBACK TO LOCK_Pg_Enrl_Requests_PVT;
1157      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1158      IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR)
1159      THEN
1160         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1161      END IF;
1162      -- Standard call to get message count and if count=1, get the message
1163      Fnd_Msg_Pub.Count_And_Get (
1164             p_encoded => Fnd_Api.G_FALSE,
1165             p_count => x_msg_count,
1166             p_data  => x_msg_data
1167      );
1168 END Lock_Pg_Enrl_Requests;
1169 
1170 
1171 
1172 
1173 PROCEDURE check_Enrl_Request_Uk_Items(
1174     p_enrl_request_rec               IN   enrl_request_rec_type,
1175     p_validation_mode            IN  VARCHAR2 := Jtf_Plsql_Api.g_create,
1176     x_return_status              OUT NOCOPY VARCHAR2)
1177 IS
1178 l_valid_flag  VARCHAR2(1);
1179 
1180 BEGIN
1181       x_return_status := Fnd_Api.g_ret_sts_success;
1182       IF p_validation_mode = Jtf_Plsql_Api.g_create
1183       AND p_enrl_request_rec.enrl_request_id IS NOT NULL
1184       THEN
1185          l_valid_flag := Pvx_Utility_Pvt.check_uniqueness(
1186          'pv_pg_enrl_requests',
1187          'enrl_request_id = ''' || p_enrl_request_rec.enrl_request_id ||''''
1188          );
1189       END IF;
1190 
1191       IF l_valid_flag = Fnd_Api.g_false THEN
1192          FND_MESSAGE.Set_Name ('PV', 'PV_enrl_request_id_DUPLICATE');
1193          FND_MSG_PUB.Add;
1194       END IF;
1195 
1196 END check_Enrl_Request_Uk_Items;
1197 
1198 
1199 
1200 PROCEDURE check_Enrl_Request_Req_Items(
1201     p_enrl_request_rec               IN  enrl_request_rec_type,
1202     p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
1203     x_return_status	         OUT NOCOPY VARCHAR2
1204 )
1205 IS
1206 BEGIN
1207    x_return_status := Fnd_Api.g_ret_sts_success;
1208 
1209    IF p_validation_mode = Jtf_Plsql_Api.g_create THEN
1210 
1211       IF p_enrl_request_rec.program_id = Fnd_Api.G_MISS_NUM OR p_enrl_request_rec.program_id IS NULL THEN
1212                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1213                FND_MESSAGE.Set_Token('MISS_FIELD', 'PROGRAM_ID');
1214                FND_MSG_PUB.Add;
1215 
1216                x_return_status := Fnd_Api.g_ret_sts_error;
1217       END IF;
1218 
1219 
1220       IF p_enrl_request_rec.partner_id = Fnd_Api.G_MISS_NUM OR p_enrl_request_rec.partner_id IS NULL THEN
1221                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1222                FND_MESSAGE.Set_Token('MISS_FIELD', 'PARTNER_ID');
1223                FND_MSG_PUB.Add;
1224                x_return_status := Fnd_Api.g_ret_sts_error;
1225       END IF;
1226 
1227       IF p_enrl_request_rec.requestor_resource_id = Fnd_Api.G_MISS_NUM OR p_enrl_request_rec.requestor_resource_id IS NULL THEN
1228                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1229                FND_MESSAGE.Set_Token('MISS_FIELD', 'REQUESTOR_RESOURCE_ID');
1230                FND_MSG_PUB.Add;
1231                x_return_status := Fnd_Api.g_ret_sts_error;
1232       END IF;
1233 
1234 
1235       IF p_enrl_request_rec.request_status_code = Fnd_Api.g_miss_char OR p_enrl_request_rec.request_status_code IS NULL THEN
1236                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1237                FND_MESSAGE.Set_Token('MISS_FIELD', 'REQUEST_STATUS_CODE');
1238                FND_MSG_PUB.Add;
1239                x_return_status := Fnd_Api.g_ret_sts_error;
1240       END IF;
1241 
1242 
1243       IF p_enrl_request_rec.enrollment_type_code = Fnd_Api.g_miss_char OR p_enrl_request_rec.enrollment_type_code IS NULL THEN
1244                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1245                FND_MESSAGE.Set_Token('MISS_FIELD', 'ENROLLMENT_TYPE_CODE');
1246                FND_MSG_PUB.Add;
1247                x_return_status := Fnd_Api.g_ret_sts_error;
1248       END IF;
1249 
1250 
1251       IF p_enrl_request_rec.request_initiated_by_code = Fnd_Api.g_miss_char OR p_enrl_request_rec.request_initiated_by_code IS NULL THEN
1252                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1253                FND_MESSAGE.Set_Token('MISS_FIELD', 'REQUEST_INITIATED_BY_CODE');
1254                FND_MSG_PUB.Add;
1255                x_return_status := Fnd_Api.g_ret_sts_error;
1256       END IF;
1257 
1258 
1259    ELSE
1260 
1261 
1262       IF p_enrl_request_rec.enrl_request_id = Fnd_Api.G_MISS_NUM THEN
1263                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1264                FND_MESSAGE.Set_Token('MISS_FIELD', 'ENRL_REQUEST_ID');
1265                FND_MSG_PUB.Add;
1266                x_return_status := Fnd_Api.g_ret_sts_error;
1267       END IF;
1268 
1269 
1270       IF p_enrl_request_rec.object_version_number = Fnd_Api.G_MISS_NUM THEN
1271                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1272                FND_MESSAGE.Set_Token('MISS_FIELD', 'OBJECT_VERSION_NUMBER');
1273                FND_MSG_PUB.Add;
1274                x_return_status := Fnd_Api.g_ret_sts_error;
1275       END IF;
1276 
1277 
1278       IF p_enrl_request_rec.program_id = Fnd_Api.G_MISS_NUM THEN
1279                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1280                FND_MESSAGE.Set_Token('MISS_FIELD', 'PROGRAM_ID');
1281                FND_MSG_PUB.Add;
1282                x_return_status := Fnd_Api.g_ret_sts_error;
1283       END IF;
1284 
1285 
1286       IF p_enrl_request_rec.partner_id = Fnd_Api.G_MISS_NUM THEN
1287                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1288                FND_MESSAGE.Set_Token('MISS_FIELD', 'PARTNER_ID');
1289                FND_MSG_PUB.Add;
1290                x_return_status := Fnd_Api.g_ret_sts_error;
1291       END IF;
1292 
1293 
1294       IF p_enrl_request_rec.custom_setup_id = Fnd_Api.G_MISS_NUM THEN
1295                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1296                FND_MESSAGE.Set_Token('MISS_FIELD', 'CUSTOM_SETUP_ID');
1297                FND_MSG_PUB.Add;
1298                x_return_status := Fnd_Api.g_ret_sts_error;
1299       END IF;
1300 
1301 
1302       IF p_enrl_request_rec.requestor_resource_id = Fnd_Api.G_MISS_NUM THEN
1303                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1304                FND_MESSAGE.Set_Token('MISS_FIELD', 'REQUESTOR_RESOURCE_ID');
1305                FND_MSG_PUB.Add;
1306                x_return_status := Fnd_Api.g_ret_sts_error;
1307       END IF;
1308 
1309 
1310       IF p_enrl_request_rec.request_status_code = Fnd_Api.g_miss_char THEN
1311                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1312                FND_MESSAGE.Set_Token('MISS_FIELD', 'REQUEST_STATUS_CODE');
1313                FND_MSG_PUB.Add;
1314                x_return_status := Fnd_Api.g_ret_sts_error;
1315       END IF;
1316 
1317 
1318       IF p_enrl_request_rec.enrollment_type_code = Fnd_Api.g_miss_char THEN
1319                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1320                FND_MESSAGE.Set_Token('MISS_FIELD', 'ENROLLMENT_TYPE_CODE');
1321                FND_MSG_PUB.Add;
1322                x_return_status := Fnd_Api.g_ret_sts_error;
1323       END IF;
1324 
1325 
1326       IF p_enrl_request_rec.request_initiated_by_code = Fnd_Api.g_miss_char THEN
1327                FND_MESSAGE.Set_Name ('PV', 'AMS_API_MISSING_FIELD');
1328                FND_MESSAGE.Set_Token('MISS_FIELD', 'REQUEST_INITIATED_BY_CODE');
1329                FND_MSG_PUB.Add;
1330                x_return_status := Fnd_Api.g_ret_sts_error;
1331       END IF;
1332    END IF;
1333 
1334 END check_Enrl_Request_Req_Items;
1335 
1336 
1337 
1338 PROCEDURE check_Enrl_Request_Fk_Items(
1339     p_enrl_request_rec IN enrl_request_rec_type,
1340     x_return_status OUT NOCOPY VARCHAR2
1341 )
1342 IS
1343 BEGIN
1344    x_return_status := Fnd_Api.g_ret_sts_success;
1345 
1346    -- Enter custom code here
1347 
1348 END check_Enrl_Request_Fk_Items;
1349 
1350 
1351 
1352 PROCEDURE CHECK_ENRL_REQ_LOOKUP_ITEMS(
1353     p_enrl_request_rec IN enrl_request_rec_type,
1354     x_return_status OUT NOCOPY VARCHAR2
1355 )
1356 IS
1357 BEGIN
1358    x_return_status := Fnd_Api.g_ret_sts_success;
1359 
1360    -- Enter custom code here
1361 
1362 END CHECK_ENRL_REQ_LOOKUP_ITEMS;
1363 
1364 
1365 
1366 PROCEDURE Check_Enrl_Request_Items (
1367     P_enrl_request_rec     IN    enrl_request_rec_type,
1368     p_validation_mode  IN    VARCHAR2,
1369     x_return_status    OUT NOCOPY   VARCHAR2
1370     )
1371 IS
1372    l_return_status   VARCHAR2(1);
1373 BEGIN
1374 
1375     l_return_status := Fnd_Api.g_ret_sts_success;
1376    -- Check Items Uniqueness API calls
1377 
1378    check_Enrl_request_Uk_Items(
1379       p_enrl_request_rec => p_enrl_request_rec,
1380       p_validation_mode => p_validation_mode,
1381       x_return_status => x_return_status);
1382    IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
1383       l_return_status := Fnd_Api.g_ret_sts_error;
1384    END IF;
1385 
1386    -- Check Items Required/NOT NULL API calls
1387 
1388    check_enrl_request_req_items(
1389       p_enrl_request_rec => p_enrl_request_rec,
1390       p_validation_mode => p_validation_mode,
1391       x_return_status => x_return_status);
1392    IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
1393       l_return_status := Fnd_Api.g_ret_sts_error;
1394    END IF;
1395    -- Check Items Foreign Keys API calls
1396 
1397    check_enrl_request_FK_items(
1398       p_enrl_request_rec => p_enrl_request_rec,
1399       x_return_status => x_return_status);
1400    IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
1401       l_return_status := Fnd_Api.g_ret_sts_error;
1402    END IF;
1403    -- Check Items Lookups
1404 
1405    CHECK_ENRL_REQ_LOOKUP_ITEMS(
1406       p_enrl_request_rec => p_enrl_request_rec,
1407       x_return_status => x_return_status);
1408    IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
1409       l_return_status := Fnd_Api.g_ret_sts_error;
1410    END IF;
1411 
1412    x_return_status := l_return_status;
1413 
1414 END Check_enrl_request_Items;
1415 
1416 
1417 
1418 
1419 
1420 PROCEDURE Complete_Enrl_Request_Rec (
1421    p_enrl_request_rec IN enrl_request_rec_type,
1422    x_complete_rec OUT NOCOPY enrl_request_rec_type)
1423 IS
1424    l_return_status  VARCHAR2(1);
1425 
1426    CURSOR c_complete IS
1427       SELECT *
1428       FROM pv_pg_enrl_requests
1429       WHERE enrl_request_id = p_enrl_request_rec.enrl_request_id;
1430    l_enrl_request_rec c_complete%ROWTYPE;
1431 BEGIN
1432    x_complete_rec := p_enrl_request_rec;
1433 
1434 
1435    OPEN c_complete;
1436    FETCH c_complete INTO l_enrl_request_rec;
1437    CLOSE c_complete;
1438 
1439    -- enrl_request_id
1440    IF p_enrl_request_rec.enrl_request_id IS NULL THEN
1441       x_complete_rec.enrl_request_id := l_enrl_request_rec.enrl_request_id;
1442    END IF;
1443 
1444    -- object_version_number
1445    IF p_enrl_request_rec.object_version_number IS NULL THEN
1446       x_complete_rec.object_version_number := l_enrl_request_rec.object_version_number;
1447    END IF;
1448 
1449    -- program_id
1450    IF p_enrl_request_rec.program_id IS NULL THEN
1451       x_complete_rec.program_id := l_enrl_request_rec.program_id;
1452    END IF;
1453 
1454    -- partner_id
1455    IF p_enrl_request_rec.partner_id IS NULL THEN
1456       x_complete_rec.partner_id := l_enrl_request_rec.partner_id;
1457    END IF;
1458 
1459    -- custom_setup_id
1460    IF p_enrl_request_rec.custom_setup_id IS NULL THEN
1461       x_complete_rec.custom_setup_id := l_enrl_request_rec.custom_setup_id;
1462    END IF;
1463 
1464    -- requestor_resource_id
1465    IF p_enrl_request_rec.requestor_resource_id IS NULL THEN
1466       x_complete_rec.requestor_resource_id := l_enrl_request_rec.requestor_resource_id;
1467    END IF;
1468 
1469    -- request_status_code
1470    IF p_enrl_request_rec.request_status_code IS NULL THEN
1471       x_complete_rec.request_status_code := l_enrl_request_rec.request_status_code;
1472    END IF;
1473 
1474    -- enrollment_type_code
1475    IF p_enrl_request_rec.enrollment_type_code IS NULL THEN
1476       x_complete_rec.enrollment_type_code := l_enrl_request_rec.enrollment_type_code;
1477    END IF;
1478 
1479    -- request_submission_date
1480    IF p_enrl_request_rec.request_submission_date IS NULL THEN
1481       x_complete_rec.request_submission_date := l_enrl_request_rec.request_submission_date;
1482    END IF;
1483 
1484    -- contract_id
1485    IF p_enrl_request_rec.contract_id IS NULL THEN
1486       x_complete_rec.contract_id := l_enrl_request_rec.contract_id;
1487    END IF;
1488 
1489    -- request_initiated_by_code
1490    IF p_enrl_request_rec.request_initiated_by_code IS NULL THEN
1491       x_complete_rec.request_initiated_by_code := l_enrl_request_rec.request_initiated_by_code;
1492    END IF;
1493 
1494    -- invite_header_id
1495    IF p_enrl_request_rec.invite_header_id IS NULL THEN
1496       x_complete_rec.invite_header_id := l_enrl_request_rec.invite_header_id;
1497    END IF;
1498 
1499    -- tentative_start_date
1500    IF p_enrl_request_rec.tentative_start_date IS NULL THEN
1501       x_complete_rec.tentative_start_date := l_enrl_request_rec.tentative_start_date;
1502    END IF;
1503 
1504    -- tentative_end_date
1505    IF p_enrl_request_rec.tentative_end_date IS NULL THEN
1506       x_complete_rec.tentative_end_date := l_enrl_request_rec.tentative_end_date;
1507    END IF;
1508 
1509    -- contract_status_code
1510    IF p_enrl_request_rec.contract_status_code IS NULL THEN
1511       x_complete_rec.contract_status_code := l_enrl_request_rec.contract_status_code;
1512    END IF;
1513 
1514    -- payment_status_code
1515    IF p_enrl_request_rec.payment_status_code IS NULL THEN
1516       x_complete_rec.payment_status_code := l_enrl_request_rec.payment_status_code;
1517    END IF;
1518 
1519    -- score_result_code
1520    IF p_enrl_request_rec.score_result_code IS NULL THEN
1521       x_complete_rec.score_result_code := l_enrl_request_rec.score_result_code;
1522    END IF;
1523 
1524    -- created_by
1525    IF p_enrl_request_rec.created_by IS NULL THEN
1526       x_complete_rec.created_by := l_enrl_request_rec.created_by;
1527    END IF;
1528 
1529    -- creation_date
1530    IF p_enrl_request_rec.creation_date IS NULL THEN
1531       x_complete_rec.creation_date := l_enrl_request_rec.creation_date;
1532    END IF;
1533 
1534    -- last_updated_by
1535    IF p_enrl_request_rec.last_updated_by IS NULL THEN
1536       x_complete_rec.last_updated_by := l_enrl_request_rec.last_updated_by;
1537    END IF;
1538 
1539    -- last_update_date
1540    IF p_enrl_request_rec.last_update_date IS NULL THEN
1541       x_complete_rec.last_update_date := l_enrl_request_rec.last_update_date;
1542    END IF;
1543 
1544    -- last_update_login
1545    IF p_enrl_request_rec.last_update_login IS NULL THEN
1546       x_complete_rec.last_update_login := l_enrl_request_rec.last_update_login;
1547    END IF;
1548 
1549    -- order_header_id
1550    IF p_enrl_request_rec.order_header_id IS NULL THEN
1551       x_complete_rec.order_header_id := l_enrl_request_rec.order_header_id;
1552    END IF;
1553 
1554    -- membership_fee
1555    IF p_enrl_request_rec.membership_fee IS NULL THEN
1556       x_complete_rec.membership_fee := l_enrl_request_rec.membership_fee;
1557    END IF;
1558 
1559 
1560    -- dependent_program_id
1561    IF p_enrl_request_rec.dependent_program_id IS NULL THEN
1562       x_complete_rec.dependent_program_id := l_enrl_request_rec.dependent_program_id;
1563    END IF;
1564 
1565 
1566    -- trans_curr_code
1567    IF p_enrl_request_rec.trans_curr_code IS NULL THEN
1568       x_complete_rec.trans_curr_code := l_enrl_request_rec.trans_curr_code;
1569    END IF;
1570 
1571    -- contract_binding_contact_id
1572    IF p_enrl_request_rec.contract_binding_contact_id IS NULL THEN
1573       x_complete_rec.contract_binding_contact_id := l_enrl_request_rec.contract_binding_contact_id;
1574    END IF;
1575 
1576    -- contract_signed_date
1577    IF p_enrl_request_rec.contract_signed_date IS NULL THEN
1578       x_complete_rec.contract_signed_date := l_enrl_request_rec.contract_signed_date;
1579    END IF;
1580 
1581    -- trxn_extension_id
1582    IF p_enrl_request_rec.trxn_extension_id IS NULL THEN
1583       x_complete_rec.trxn_extension_id := l_enrl_request_rec.trxn_extension_id;
1584    END IF;
1585 
1586 
1587    -- Note: Developers need to modify the procedure
1588    -- to handle any business specific requirements.
1589 END Complete_Enrl_Request_Rec;
1590 
1591 
1592 
1593 
1594 PROCEDURE Default_Enrl_Request_Items ( p_enrl_request_rec IN enrl_request_rec_type ,
1595                                 x_enrl_request_rec OUT NOCOPY enrl_request_rec_type )
1596 IS
1597    l_enrl_request_rec enrl_request_rec_type := p_enrl_request_rec;
1598 BEGIN
1599    -- Developers should put their code to default the record type
1600    -- e.g. IF p_campaign_rec.status_code IS NULL
1601    --      OR p_campaign_rec.status_code = FND_API.G_MISS_CHAR THEN
1602    --         l_campaign_rec.status_code := 'NEW' ;
1603    --      END IF ;
1604    --
1605    NULL ;
1606 END;
1607 
1608 
1609 
1610 
1611 PROCEDURE Validate_Pg_Enrl_Requests(
1612     p_api_version_number         IN   NUMBER,
1613     p_init_msg_list              IN   VARCHAR2     := Fnd_Api.G_FALSE,
1614     p_validation_level           IN   NUMBER := Fnd_Api.G_VALID_LEVEL_FULL,
1615     p_enrl_request_rec               IN   enrl_request_rec_type,
1616     p_validation_mode            IN    VARCHAR2,
1617     x_return_status              OUT NOCOPY  VARCHAR2,
1618     x_msg_count                  OUT NOCOPY  NUMBER,
1619     x_msg_data                   OUT NOCOPY  VARCHAR2
1620     )
1621  IS
1622 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_Pg_Enrl_Requests';
1623 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1624 l_object_version_number     NUMBER;
1625 l_enrl_request_rec       enrl_request_rec_type;
1626 l_enrl_request_rec_out   enrl_request_rec_type;
1627 
1628  BEGIN
1629       -- Standard Start of API savepoint
1630       SAVEPOINT validate_pg_enrl_requests_;
1631 
1632       -- Standard call to check for call compatibility.
1633       IF NOT Fnd_Api.Compatible_API_Call ( l_api_version_number,
1634                                            p_api_version_number,
1635                                            l_api_name,
1636                                            G_PKG_NAME)
1637       THEN
1638           RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1639       END IF;
1640 
1641 
1642       -- Initialize message list if p_init_msg_list is set to TRUE.
1643       IF Fnd_Api.to_Boolean( p_init_msg_list )
1644       THEN
1645          Fnd_Msg_Pub.initialize;
1646       END IF;
1647 
1648 
1649       IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
1650               Check_enrl_request_Items(
1651                  p_enrl_request_rec        => p_enrl_request_rec,
1652                  p_validation_mode   => p_validation_mode,
1653                  x_return_status     => x_return_status
1654               );
1655 
1656               IF x_return_status = Fnd_Api.G_RET_STS_ERROR THEN
1657                   RAISE Fnd_Api.G_EXC_ERROR;
1658               ELSIF x_return_status = Fnd_Api.G_RET_STS_UNEXP_ERROR THEN
1659                   RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1660               END IF;
1661       END IF;
1662 
1663       IF p_validation_mode = Jtf_Plsql_Api.g_create THEN
1664          Default_Enrl_Request_Items (p_enrl_request_rec => p_enrl_request_rec ,
1665                                 x_enrl_request_rec => l_enrl_request_rec) ;
1666       END IF ;
1667 
1668 
1669       Complete_enrl_request_Rec(
1670          p_enrl_request_rec        => l_enrl_request_rec,
1671          x_complete_rec            => l_enrl_request_rec_out
1672       );
1673 
1674       l_enrl_request_rec := l_enrl_request_rec_out;
1675 
1676       IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
1677          Validate_enrl_request_Rec(
1678            p_api_version_number     => 1.0,
1679            p_init_msg_list          => Fnd_Api.G_FALSE,
1680            x_return_status          => x_return_status,
1681            x_msg_count              => x_msg_count,
1682            x_msg_data               => x_msg_data,
1683            p_enrl_request_rec           =>    l_enrl_request_rec);
1684 
1685               IF x_return_status = Fnd_Api.G_RET_STS_ERROR THEN
1686                  RAISE Fnd_Api.G_EXC_ERROR;
1687               ELSIF x_return_status = Fnd_Api.G_RET_STS_UNEXP_ERROR THEN
1688                  RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1689               END IF;
1690       END IF;
1691 
1692 
1693       -- Debug Message
1694       IF (PV_DEBUG_HIGH_ON) THEN
1695 
1696       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'START');
1697       END IF;
1698 
1699 
1700 
1701       -- Initialize API return status to SUCCESS
1702       x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1703 
1704 
1705       -- Debug Message
1706       IF (PV_DEBUG_HIGH_ON) THEN
1707 
1708       Pvx_Utility_Pvt.debug_message('PRIVATE API: ' || l_api_name || 'END');
1709       END IF;
1710 
1711 
1712       -- Standard call to get message count and if count is 1, get message info.
1713       Fnd_Msg_Pub.Count_And_Get
1714         (p_count          =>   x_msg_count,
1715          p_data           =>   x_msg_data
1716       );
1717 EXCEPTION
1718 
1719    WHEN Pvx_Utility_Pvt.resource_locked THEN
1720      x_return_status := Fnd_Api.g_ret_sts_error;
1721         FND_MESSAGE.Set_Name ('PV', 'PV_API_RESOURCE_LOCKED');
1722         FND_MSG_PUB.Add;
1723 
1724    WHEN Fnd_Api.G_EXC_ERROR THEN
1725      ROLLBACK TO VALIDATE_Pg_Enrl_Requests_;
1726      x_return_status := Fnd_Api.G_RET_STS_ERROR;
1727      -- Standard call to get message count and if count=1, get the message
1728      Fnd_Msg_Pub.Count_And_Get (
1729             p_encoded => Fnd_Api.G_FALSE,
1730             p_count   => x_msg_count,
1731             p_data    => x_msg_data
1732      );
1733 
1734    WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1735      ROLLBACK TO VALIDATE_Pg_Enrl_Requests_;
1736      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1737      -- Standard call to get message count and if count=1, get the message
1738      Fnd_Msg_Pub.Count_And_Get (
1739             p_encoded => Fnd_Api.G_FALSE,
1740             p_count => x_msg_count,
1741             p_data  => x_msg_data
1742      );
1743 
1744    WHEN OTHERS THEN
1745      ROLLBACK TO VALIDATE_Pg_Enrl_Requests_;
1746      x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1747      IF Fnd_Msg_Pub.Check_Msg_Level ( Fnd_Msg_Pub.G_MSG_LVL_UNEXP_ERROR)
1748      THEN
1749         Fnd_Msg_Pub.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1750      END IF;
1751      -- Standard call to get message count and if count=1, get the message
1752      Fnd_Msg_Pub.Count_And_Get (
1753             p_encoded => Fnd_Api.G_FALSE,
1754             p_count => x_msg_count,
1755             p_data  => x_msg_data
1756      );
1757 END Validate_Pg_Enrl_Requests;
1758 
1759 
1760 PROCEDURE Validate_Enrl_Request_Rec (
1761     p_api_version_number         IN   NUMBER,
1762     p_init_msg_list              IN   VARCHAR2     := Fnd_Api.G_FALSE,
1763     x_return_status              OUT NOCOPY  VARCHAR2,
1764     x_msg_count                  OUT NOCOPY  NUMBER,
1765     x_msg_data                   OUT NOCOPY  VARCHAR2,
1766     p_enrl_request_rec               IN    enrl_request_rec_type
1767     )
1768 IS
1769 BEGIN
1770       -- Initialize message list if p_init_msg_list is set to TRUE.
1771       IF Fnd_Api.to_Boolean( p_init_msg_list )
1772       THEN
1773          Fnd_Msg_Pub.initialize;
1774       END IF;
1775 
1776 
1777 
1778       -- Initialize API return status to SUCCESS
1779       x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1780 
1781       -- Hint: Validate data
1782       -- If data not valid
1783       -- THEN
1784       -- x_return_status := FND_API.G_RET_STS_ERROR;
1785 
1786       -- Debug Message
1787       IF (PV_DEBUG_HIGH_ON) THEN
1788 
1789       Pvx_Utility_Pvt.debug_message('PRIVATE API: Validate_dm_model_rec');
1790       END IF;
1791       -- Standard call to get message count and if count is 1, get message info.
1792       Fnd_Msg_Pub.Count_And_Get
1793         (p_count          =>   x_msg_count,
1794          p_data           =>   x_msg_data
1795       );
1796 END Validate_enrl_request_Rec;
1797 
1798 END Pv_Pg_Enrl_Requests_Pvt;