DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGR_PERSON_TYPE_PKG

Source


1 PACKAGE BODY igr_person_type_pkg AS
2 /* $Header: IGSRT06B.pls 120.0 2005/06/01 15:24:58 appldev noship $ */
3 
4 PROCEDURE update_persontype_funnel(
5              p_person_id           IN   NUMBER,
6              p_person_type_code    IN   VARCHAR2,
7 	     p_funnel_status       IN   VARCHAR2,
8 	     p_return_status       OUT NOCOPY VARCHAR2,
9 	     p_message_text        OUT NOCOPY VARCHAR2) AS
10 
11   cst_prospect CONSTANT varchar2(50)     := 'PROSPECT';
12   cst_applicant CONSTANT  varchar2(50)   := 'APPLICANT';
13   cst_evaluator CONSTANT  varchar2(50)   := 'EVALUATOR';
14   cst_funnel_status CONSTANT varchar2(25):= '100-IDENTIFIED';
15 
16   lv_type_instance_id NUMBER(15);
17   l_person_type_code igs_pe_person_types.person_type_code%TYPE;
18   l_funnel_status    igs_pe_typ_instances_all.funnel_status%TYPE;
19 
20   lv_sysdate DATE;
21   l_org_id NUMBER(15);
22   lv_rowid2 VARCHAR2(30);
23 
24   CURSOR c_person_type_code(l_system_type IGS_PE_PERSON_TYPES.system_type%TYPE) IS
25   SELECT person_type_code
26   FROM   igs_pe_person_types
27   WHERE  system_type=l_system_type;
28 
29 BEGIN
30      l_org_id := igs_ge_gen_003.get_org_id;
31      lv_sysdate := SYSDATE;
32 
33      IF p_person_type_code IS NULL THEN
34          OPEN  c_person_type_code('PROSPECT');
35          FETCH c_person_type_code INTO l_person_type_code;
36          CLOSE c_person_type_code;
37      ELSE
38          l_person_type_code := p_person_type_code;
39      END IF;
40      IF p_funnel_status IS NULL THEN
41         l_funnel_status := cst_funnel_status ;
42      ELSE
43         l_funnel_status := p_funnel_status ;
44      END IF;
45 
46   -- If the person is an evaluator, you should not create the Inquiry
47 
48   IF checkactiveXPersontype(p_person_id, cst_evaluator) THEN
49      p_return_status := 'E';
50      FND_MESSAGE.SET_NAME('IGS','IGS_AD_EVAL_NOT_CRT_INQ');
51      p_message_text := FND_MESSAGE.GET;
52      RETURN;
53   END IF;
54 
55 
56   IF NOT checkactiveXPersontype(p_person_id, cst_applicant) THEN  -- Inactive Applicant exists
57     IF NOT checkactiveXPersontype(p_person_id, cst_prospect) THEN  -- Inactive Prospect exists
58       -- Call igs_pe_type_instance.insert_row
59       -- pass the person type as system defined value of 'PROSPECT'
60       -- and funnel status as '100-IDENTIFIED'
61 
62       -- Other person type will be automatically deleted inside the
63       -- igs_pe_typ_instances_pkg if we are creating other than 'OTHER'
64       -- person type which is active
65       igs_pe_typ_instances_pkg.insert_row
66       (
67        X_MODE                               => 'R',
68        X_RowId                              => lv_rowid2,
69        X_TYPE_INSTANCE_ID                   => lv_type_instance_id,
70        X_PERSON_TYPE_CODE                   => l_person_type_code,
71        X_PERSON_ID                          => p_person_id,
72        X_COURSE_CD                          => NULL,
73        X_FUNNEL_STATUS                      => l_funnel_status,
74        X_ADMISSION_APPL_NUMBER              => NULL,
75        X_NOMINATED_COURSE_CD                => NULL,
76        X_SEQUENCE_NUMBER                    => NULL,
77        X_START_DATE                         => lv_sysdate,
78        X_END_DATE                           => NULL,
79        X_CREATE_METHOD                      => NULL,
80        X_ENDED_BY                           => NULL,
81        X_END_METHOD                         => NULL,
82        X_CC_VERSION_NUMBER                  => NULL,
83        X_NCC_VERSION_NUMBER                 => NULL,
84        X_Org_Id                             => l_org_id,
85        X_EMPLMNT_CATEGORY_CODE              => NULL
86       );
87     END IF;
88   END IF;
89   RETURN;
90 END ;
91 
92 FUNCTION checkactiveXPersontype(p_person_id IN NUMBER, p_person_type IN VARCHAR2)
93 RETURN BOOLEAN AS
94   l_exists VARCHAR2(1);
95   CURSOR c_persontype_exist (cp_person_id igs_pe_typ_instances.person_id%TYPE)
96   IS
97     SELECT 'X'
98     FROM
99       igs_pe_typ_instances_all pti, igs_pe_person_types pt
100     WHERE
101       pti.person_id = cp_person_id
102       AND pti.person_type_code = pt.person_type_code
103       AND pt.system_type = p_person_type
104       AND (end_date IS NULL OR (TRUNC(end_date) IS NOT NULL AND TRUNC(end_date) > SYSDATE));
105 BEGIN
106   OPEN c_persontype_exist (p_person_id );
107   FETCH c_persontype_exist INTO l_exists;
108   IF c_persontype_exist%FOUND THEN
109     CLOSE c_persontype_exist;
110     RETURN TRUE;
111   ELSE
112     CLOSE c_persontype_exist;
113     RETURN FALSE;
114   END IF;
115 END;
116 END igr_person_type_pkg;