DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_TR_VAL_TRST

Source


1 PACKAGE BODY igs_tr_val_trst AS
2 /* $Header: IGSTR04B.pls 115.15 2003/05/09 14:34:24 pkpatel ship $ */
3   /*
4    Who       What
5    msrinivi  Bug 1956374 duplicate removal Removed genp_prc_clear_rowid,genp_val_prsn_id
6    pkkpatel  Bug 2858538(Tracking step type Enhancement)
7              Modified the procedure trkp_val_stst_stt
8   */
9   -- Validate that the tracking step completion date set correctly.
10   -- for tracking dld nov 2001 release (bug 1837257) modified the cursor
11   --c_tracking_step to consider step_group also . also override_offset_clc_ind
12   -- is checked now along with sequence_ind to perform the validation
13 
14   FUNCTION trkp_val_trst_cd_set(
15     p_tracking_id IN NUMBER ,
16     p_tracking_step_number IN NUMBER ,
17     p_message_name OUT NOCOPY VARCHAR2 )
18   RETURN BOOLEAN IS
19   BEGIN
20 
21     DECLARE
22 
23       v_sequence_ind  igs_tr_item.sequence_ind%TYPE;
24       v_completion_ind NUMBER;
25       -- added for tracking dld in nov 2001 release (bug 1837257)
26       l_override_offset_clc_ind igs_tr_item_all.override_offset_clc_ind%TYPE ;
27       -- modified this cursor to select override_offset_clc_ind which is added
28       -- in the tracking dld of nov2001 release
29       CURSOR c_tracking_item( cp_tracking_id igs_tr_item.tracking_id%TYPE) IS
30         SELECT sequence_ind , override_offset_clc_ind
31         FROM   igs_tr_item
32         WHERE  tracking_id = cp_tracking_id;
33 
34      -- modified this cursor during tracking dld nov 2001 (bug 1837257)
35      --to include logic for step_group_id
36       CURSOR c_tracking_step_prev( cp_tracking_id igs_tr_step.tracking_id%TYPE,
37              cp_tracking_step_number igs_tr_step.tracking_step_number%TYPE) IS
38         SELECT  distinct to_number('1')
39         FROM    igs_tr_step trst
40         WHERE   trst.tracking_id = cp_tracking_id
41         AND     trst.tracking_step_number < cp_tracking_step_number
42         AND     trst.step_group_id is null
43         AND     trst.step_completion_ind = 'N'
44         AND     trst.by_pass_ind = 'N'
45     UNION
46       (SELECT distinct trst.step_group_id
47        FROM   igs_tr_step  trst
48        WHERE  trst.tracking_id = cp_tracking_id
49        AND     trst.tracking_step_number < cp_tracking_step_number
50        AND     trst.step_group_id is not null
51        AND     trst.step_completion_ind = 'N'
52        AND     trst.by_pass_ind = 'N'
53        GROUP BY  trst.step_group_id , trst.step_completion_ind
54        MINUS
55        SELECT distinct trst.step_group_id
56        FROM   igs_tr_step  trst
57        WHERE  trst.tracking_id = cp_tracking_id
58        AND     trst.tracking_step_number < cp_tracking_step_number
59        AND     trst.step_group_id is not null
60        AND     trst.step_completion_ind = 'Y'
61        GROUP BY  trst.step_group_id , trst.step_completion_ind
62       );
63 
64      -- added this cursor during tracking dld nov 2001 (bug 1837257)
65      --checks if any of the next steps are completed or can be treated as
66      --complete then this step completion_dt cannot be updated
67       CURSOR c_tracking_step_next( cp_tracking_id igs_tr_step.tracking_id%TYPE,
68              cp_tracking_step_number igs_tr_step.tracking_step_number%TYPE) IS
69         SELECT  distinct to_number('1')
70         FROM    igs_tr_step trst
71         WHERE   trst.tracking_id = cp_tracking_id
72     AND     trst.tracking_step_number > cp_tracking_step_number
73     AND     trst.step_group_id is null
74     AND     trst.step_completion_ind = 'Y'
75     MINUS
76     SELECT  distinct to_number('1')
77         FROM    igs_tr_step trst
78         WHERE   trst.tracking_id = cp_tracking_id
79     AND     trst.tracking_step_number = cp_tracking_step_number
80     AND     trst.step_group_id is not null
81     AND     trst.step_completion_ind = 'N'
82     UNION
83       (SELECT distinct trst.step_group_id
84        FROM   igs_tr_step  trst
85        WHERE  trst.tracking_id = cp_tracking_id
86        AND     trst.tracking_step_number > cp_tracking_step_number
87        AND     trst.step_group_id is not null
88        AND     trst.step_completion_ind = 'Y'
89        GROUP BY  trst.step_group_id , trst.step_completion_ind
90        MINUS
91        SELECT distinct trst.step_group_id
92        FROM   igs_tr_step  trst
93        WHERE  trst.tracking_id = cp_tracking_id
94        AND     trst.tracking_step_number < cp_tracking_step_number
95        AND     trst.step_group_id is not null
96        GROUP BY  trst.step_group_id , trst.step_completion_ind
97       );
98       v_other_detail VARCHAR(255);
99       lv_param_values  VARCHAR2(1080);
100 
101     BEGIN
102 
103       -- This module validates step_completion_ind against the
104       -- completion_dt
105       p_message_name := NULL;
106       OPEN c_tracking_item( p_tracking_id);
107       FETCH c_tracking_item INTO v_sequence_ind , l_override_offset_clc_ind ;
108       CLOSE c_tracking_item;
109       -- added condition to check for override offset clc ind also
110       IF(v_sequence_ind = 'N') OR (l_override_offset_clc_ind = 'Y') THEN
111         RETURN TRUE;
112       END IF;
113 
114       IF(p_tracking_step_number > 1) THEN
115         OPEN c_tracking_step_prev( p_tracking_id, p_tracking_step_number );
116         FETCH c_tracking_step_prev INTO v_completion_ind;
117         -- modified this condition during tracking dld nov 2001 (bug 1837257)
118         --to include logic for step_group_id
119         IF (c_tracking_step_prev%FOUND) THEN
120           CLOSE c_tracking_step_prev;
121           p_message_name := 'IGS_TR_CANNOT_SET_COMPL_DATE';
122           RETURN FALSE;
123         END IF;
124         CLOSE c_tracking_step_prev;
125       END IF;
126 
127  -- modified this code during build of tracking dld for nov 2001 release
128  -- bug 1837257 - this is calling the new cursor added
129       OPEN c_tracking_step_next( p_tracking_id, p_tracking_step_number);
130       FETCH c_tracking_step_next INTO v_completion_ind;
131 
132       IF (c_tracking_step_next%FOUND) THEN
133         CLOSE c_tracking_step_next;
134         p_message_name := 'IGS_TR_COMPL_DT_UPD_NOT_ALLOW';
135         RETURN FALSE;
136       END IF;
137       CLOSE c_tracking_step_next;
138       RETURN TRUE;
139 
140     EXCEPTION
141       WHEN OTHERS THEN
142         fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
143         fnd_message.set_token('NAME','IGS_TR_VAL_TRST.trkp_val_trst_cd_set');
144         igs_ge_msg_stack.add;
145         lv_param_values:=  TO_CHAR(p_tracking_id)||','||TO_CHAR(p_tracking_step_number);
146         fnd_message.set_name('IGS','IGS_GE_PARAMETERS');
147         fnd_message.set_token('VALUE',lv_param_values);
148         igs_ge_msg_stack.add;
149         app_exception.raise_exception;
150     END;
151   END trkp_val_trst_cd_set;
152 
153   -- Validate the step completion indicator against step completion date
154   FUNCTION trkp_val_trst_sci_cd(
155     p_step_completion_ind IN VARCHAR2 DEFAULT 'N',
156     p_completion_dt IN DATE ,
157     p_by_pass_ind IN VARCHAR2 DEFAULT 'N',
158     p_message_name OUT NOCOPY VARCHAR2 )
159   RETURN BOOLEAN IS
160   BEGIN
161     DECLARE
162 
163      v_other_detail VARCHAR(255);
164 
165     BEGIN
166 
167       -- This module validates step_completion_ind against the
168       -- completion_dt
169 
170       p_message_name := NULL;
171 
172       IF(p_step_completion_ind = 'Y' AND p_completion_dt IS NULL) THEN
173          p_message_name := 'IGS_TR_COMPL_DT_MUST_BE_SET';
174          RETURN FALSE;
175       END IF;
176 
177       IF(p_step_completion_ind = 'N' AND p_completion_dt IS NOT NULL) THEN
178         p_message_name := 'IGS_TR_CHECK_COMPL_DATE';
179         RETURN FALSE;
180       END IF;
181 
182       IF(p_by_pass_ind = 'Y' AND p_step_completion_ind = 'Y') THEN
183         p_message_name := 'IGS_TR_INDICAT_CANNOT_BE_SET';
184         RETURN FALSE;
185       END IF;
186 
187       RETURN TRUE;
188 
189     EXCEPTION
190       WHEN OTHERS THEN
191         NULL;
192     END;
193 
194   END trkp_val_trst_sci_cd;
195 
196 
197   -- Validate the system tracking step type within the tracking type.
198   FUNCTION trkp_val_stst_stt(
199     p_s_tracking_step_type IN VARCHAR2 ,
200     p_tracking_type IN VARCHAR2 ,
201     p_message_name OUT NOCOPY VARCHAR2 )
202   RETURN BOOLEAN IS
203 /*
204 WHO      WHEN         WHAT
205 pkpatel  25-APR-2003  Bug 2858538(Tracking step type Enhancement)
206                       Modified the cursor to validate system tracking step type within the tracking type.
207 */
208    gv_other_detail VARCHAR(255);
209    lv_param_values VARCHAR2(1080);
210    l_s_tracking_type igs_tr_type.s_tracking_type%TYPE;
211    l_dummy         VARCHAR2(1);
212 
213    CURSOR tracking_type_cur IS
214    SELECT s_tracking_type
215    FROM   igs_tr_type
216    WHERE  tracking_type = p_tracking_type;
217 
218    CURSOR step_type_cur(cp_s_tracking_type igs_tr_type.s_tracking_type%TYPE) IS
219    SELECT 'X'
220    FROM   igs_lookup_values
221    WHERE  lookup_type = p_s_tracking_step_type AND
222           lookup_code = cp_s_tracking_type;
223 
224   BEGIN
225 
226       -- This module checks that s_tracking_step_type is valid for
227       -- the s_tracking_type.
228       p_message_name := NULL;
229 
230       -- Find the System Tracking Type
231       OPEN tracking_type_cur;
232       FETCH tracking_type_cur INTO l_s_tracking_type;
233          IF tracking_type_cur%NOTFOUND THEN
234            CLOSE tracking_type_cur;
235            p_message_name := 'IGS_TR_STEP_TYPE_INVALID';
236            RETURN FALSE;
237          END IF;
238       CLOSE tracking_type_cur;
239 
240       -- Validate whether the System Tracking Type and the system tracking step type are associated.
241       OPEN step_type_cur(l_s_tracking_type);
242       FETCH step_type_cur INTO l_dummy;
243          IF step_type_cur%NOTFOUND THEN
244            CLOSE step_type_cur;
245            p_message_name := 'IGS_TR_STEP_TYPE_INVALID';
246            RETURN FALSE;
247          END IF;
248       CLOSE step_type_cur;
249 
250 
251         RETURN TRUE;
252 
253   EXCEPTION
254     WHEN OTHERS THEN
255       fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
256       fnd_message.set_token('NAME','IGS_TR_VAL_TRST.trkp_val_stst_stt'||'-'||SQLERRM);
257       igs_ge_msg_stack.add;
258       lv_param_values:=p_s_tracking_step_type||','||p_tracking_type;
259       fnd_message.set_name('IGS','IGS_GE_PARAMETERS');
260       fnd_message.set_token('VALUE',lv_param_values);
261       igs_ge_msg_stack.add;
262       app_exception.raise_exception;
263   END trkp_val_stst_stt;
264 
265 END igs_tr_val_trst;