DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSL_CSF_DEBRIEF_HDR_ACC_PKG

Source


1 PACKAGE BODY CSL_CSF_DEBRIEF_HDR_ACC_PKG AS
2 /* $Header: csldhacb.pls 115.8 2003/08/28 10:15:24 vekrishn ship $ */
3 
4   /*** Globals ***/
5   g_acc_table_name        CONSTANT VARCHAR2(30)
6                                := 'JTM_CSF_DEBRIEF_HEADERS_ACC';
7   g_publication_item_name CONSTANT JTM_HOOK_UTIL_PKG.t_publication_item_list :=
8    JTM_HOOK_UTIL_PKG.t_publication_item_list('CSF_DEBRIEF_HEADERS');
9   g_table_name            CONSTANT VARCHAR2(30) := 'CSF_DEBRIEF_HEADERS';
10   g_pk1_name              CONSTANT VARCHAR2(30) := 'DEBRIEF_HEADER_ID';
11 
12   g_debug_level           NUMBER;  -- debug level
13 
14 
15   /*** Function that retrieves resource_id for a given debrief_line_id.
16    ***/
17 
18   FUNCTION Get_Resource_Id( p_debrief_header_id NUMBER )
19   RETURN NUMBER
20   IS
21     CURSOR c_resource ( b_debrief_header_id NUMBER)
22     IS
23      SELECT resource_id
24      FROM   jtf_task_assignments jta
25      ,      csf_debrief_headers  dbh
26      WHERE  jta.task_assignment_id = dbh.task_assignment_id
27      AND    dbh.debrief_header_id  = b_debrief_header_id;
28      r_resource c_resource%ROWTYPE;
29   BEGIN
30     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
31       jtm_message_log_pkg.Log_Msg
32       ( p_debrief_header_id
33       , g_table_name
34       , 'Entering Get_Resource_Id function'
35       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
36     END IF;
37 
38     OPEN c_resource( p_debrief_header_id );
39     FETCH c_resource INTO r_resource;
40     CLOSE c_resource;
41 
42     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
43       jtm_message_log_pkg.Log_Msg
44       ( p_debrief_header_id
45       , g_table_name
46       , 'Leaving Get_Resource_Id function'
47       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
48     END IF;
49     RETURN r_resource.resource_id;
50   END Get_Resource_Id;
51 
52 
53   /*** Function that checks if debrief line should be replicated. Returns
54        TRUE if it should ***/
55 
56   FUNCTION Replicate_Record
57   ( p_debrief_header_id NUMBER
58   )
59   RETURN BOOLEAN
60   IS
61     CURSOR c_debrief_header (b_debrief_header_id NUMBER) IS
62      SELECT *
63      FROM CSF_DEBRIEF_HEADERS
64      WHERE debrief_header_id = b_debrief_header_id;
65     r_debrief_header c_debrief_header%ROWTYPE;
66 
67   BEGIN
68     /*** get debug level ***/
69     g_debug_level := JTM_HOOK_UTIL_PKG.Get_Debug_Level;
70 
71     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
72       jtm_message_log_pkg.Log_Msg
73       ( p_debrief_header_id
74       , g_table_name
75       , 'Entering Replicate_Record'
76       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
77     END IF;
78 
79     OPEN c_debrief_header( p_debrief_header_id );
80     FETCH c_debrief_header INTO r_debrief_header;
81     IF c_debrief_header%NOTFOUND THEN
82       /*** could not find debrief_header record -> exit ***/
83       IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
84         jtm_message_log_pkg.Log_Msg
85         ( p_debrief_header_id
86         , g_table_name
87         , 'Replicate_Record error: Could not find debrief_header_id ' ||
88           p_debrief_header_id
89         , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
90       END IF;
91 
92       CLOSE c_debrief_header;
93       RETURN FALSE;
94     END IF;
95     CLOSE c_debrief_header;
96 
97     IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
98       jtm_message_log_pkg.Log_Msg
99       ( p_debrief_header_id
100       , g_table_name
101       , 'Replicate_Record returned TRUE'
102       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
103     END IF;
104 
105     /** Record matched criteria -> return true ***/
106     RETURN TRUE;
107   END Replicate_Record;
108 
109 
110   /*** Private procedure that replicates given debrief header related data
111        for resource ***/
112   PROCEDURE Insert_ACC_Record
113     ( p_debrief_header_id   IN NUMBER
114      ,p_resource_id         IN NUMBER
115     )
116   IS
117   BEGIN
118     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
119       jtm_message_log_pkg.Log_Msg
120       ( p_debrief_header_id
121       , g_table_name
122       , 'Entering Insert_ACC_Record'
123       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
124     END IF;
125 
126     IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
127       jtm_message_log_pkg.Log_Msg
128       ( p_debrief_header_id
129       , g_table_name
130       , 'Inserting ACC record for resource_id = ' || p_resource_id
131       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
132     END IF;
133 
134     /*** Insert debrief header ACC record ***/
135     JTM_HOOK_UTIL_PKG.Insert_Acc
136      ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name
137       ,P_ACC_TABLE_NAME         => g_acc_table_name
138       ,P_PK1_NAME               => g_pk1_name
139       ,P_PK1_NUM_VALUE          => p_debrief_header_id
140       ,P_RESOURCE_ID            => p_resource_id
141      );
142 
143     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
144       jtm_message_log_pkg.Log_Msg
145       ( p_debrief_header_id
146       , g_table_name
147       , 'Leaving Insert_ACC_Record'
148       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
149     END IF;
150   END Insert_ACC_Record;
151 
152 
153   /*** Private procedure that re-sends given debrief header to mobile ***/
154   PROCEDURE Update_ACC_Record
155     ( p_debrief_header_id          IN NUMBER
156      ,p_resource_id                IN NUMBER
157      ,p_acc_id                     IN NUMBER
158     )
159   IS
160   BEGIN
161     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
162       jtm_message_log_pkg.Log_Msg
163       ( p_debrief_header_id
164       , g_table_name
165       , 'Entering Update_ACC_Record'
166       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
167     END IF;
168 
169     IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
170       jtm_message_log_pkg.Log_Msg
171       ( p_debrief_header_id
172       , g_table_name
173       , 'Updating ACC record for resource_id = ' || p_resource_id
174         || fnd_global.local_chr(10) || 'access_id = ' || p_acc_id
175       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
176     END IF;
177 
178     /*** Update debrief header ACC record ***/
179     JTM_HOOK_UTIL_PKG.Update_Acc
180      ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name
181       ,P_ACC_TABLE_NAME         => g_acc_table_name
182       ,P_RESOURCE_ID            => p_resource_id
183       ,P_ACCESS_ID              => p_acc_id
184      );
185 
186     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
187       jtm_message_log_pkg.Log_Msg
188       ( p_debrief_header_id
189       , g_table_name
190       , 'Leaving Update_ACC_Record'
191       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
192     END IF;
193   END Update_ACC_Record;
194 
195 
196   /*** Private procedure that deletes debrief line for resource from acc
197        table ***/
198 
199   PROCEDURE Delete_ACC_Record
200     ( p_debrief_header_id   IN NUMBER
201      ,p_resource_id         IN NUMBER
202     )
203   IS
204   BEGIN
205     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
206       jtm_message_log_pkg.Log_Msg
207       ( p_debrief_header_id
208       , g_table_name
209       , 'Entering Delete_ACC_Record'
210       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
211     END IF;
212 
213     IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
214       jtm_message_log_pkg.Log_Msg
215       ( p_debrief_header_id
216       , g_table_name
217       , 'Deleting ACC record for resource_id = ' || p_resource_id
218       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
219     END IF;
220 
221     /*** Delete debrief header ACC record ***/
222     JTM_HOOK_UTIL_PKG.Delete_Acc
223      ( P_PUBLICATION_ITEM_NAMES => g_publication_item_name
224       ,P_ACC_TABLE_NAME         => g_acc_table_name
225       ,P_PK1_NAME               => g_pk1_name
226       ,P_PK1_NUM_VALUE          => p_debrief_header_id
227       ,P_RESOURCE_ID            => p_resource_id
228      );
229 
230     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
231       jtm_message_log_pkg.Log_Msg
232       ( p_debrief_header_id
233       , g_table_name
234       , 'Leaving Delete_ACC_Record'
235       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
236     END IF;
237   END Delete_ACC_Record;
238 
239 
240   /*** Public function that gets called when a debrief header needs to be
241        inserted into ACC table.  ***/
242 
243   PROCEDURE Insert_Debrief_Header
244     ( p_debrief_header_id   IN NUMBER
245      ,p_resource_id         IN NUMBER
246     )
247   IS
248     l_acc_id           NUMBER;
249     l_success          BOOLEAN;
250   BEGIN
251     /*** get debug level ***/
252     g_debug_level := JTM_HOOK_UTIL_PKG.Get_Debug_Level;
253 
254     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
255       jtm_message_log_pkg.Log_Msg
256       ( p_debrief_header_id
257       , g_table_name
258       , 'Entering Insert_Debrief_Header procedure'
259       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
260     END IF;
261 
262     /*** does record match criteria? ***/
263     IF Replicate_Record( p_debrief_header_id ) THEN
264       /*** yes -> insert debrief header acc record ***/
265       Insert_ACC_Record
266       ( p_debrief_header_id
267        ,p_resource_id
268       );
269 
270     END IF;
271 
272     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
273       jtm_message_log_pkg.Log_Msg
274       ( p_debrief_header_id
275       , g_table_name
276       , 'Leaving Insert_Debrief_Header procedure'
277       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
278     END IF;
279 
280   END Insert_Debrief_Header;
281 
282 
283   /*** Public function that gets called when a debrief header needs to
284        be updated into ACC table.  ***/
285 
286   PROCEDURE Update_Debrief_Header
287     ( p_debrief_header_id   IN NUMBER
288      ,p_resource_id         IN NUMBER
289     )
290   IS
291     l_acc_id           NUMBER;
292     l_success          BOOLEAN;
293   BEGIN
294     /*** get debug level ***/
295     g_debug_level := JTM_HOOK_UTIL_PKG.Get_Debug_Level;
296 
297     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
298       jtm_message_log_pkg.Log_Msg
299       ( p_debrief_header_id
300       , g_table_name
301       , 'Entering Update_Debrief_Header procedure'
302       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
303     END IF;
304 
305     l_acc_id := JTM_HOOK_UTIL_PKG.Get_Acc_Id(
306                      P_ACC_TABLE_NAME => g_acc_table_name
307                     ,P_PK1_NAME       => g_pk1_name
308                     ,P_PK1_NUM_VALUE  => p_debrief_header_id
309                     ,P_RESOURCE_ID    => p_resource_id);
310 
311     /*** is record already in ACC table? ***/
312     l_success := FALSE;
313     IF l_acc_id = -1 THEN
314       /*** yes -> return TRUE ***/
315       l_success := TRUE;
316     ELSE
317       /*** no -> does record match criteria? ***/
318       IF Replicate_Record( p_debrief_header_id ) THEN
319         /*** yes -> update debrief header acc record ***/
320         Update_ACC_Record
321         ( p_debrief_header_id
322          ,p_resource_id
323          ,l_acc_id
324         );
325 
326       END IF;
327     END IF;
328 
329     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
330       jtm_message_log_pkg.Log_Msg
331       ( p_debrief_header_id
332       , g_table_name
333       , 'Leaving Update_Debrief_Header procedure'
334       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
335     END IF;
336 
337   END Update_Debrief_Header;
338 
339 
340   /*** Public procedure that gets called when a debrief header needs to
341        be deleted from ACC table.  ***/
342 
343   PROCEDURE Delete_Debrief_Header
344     ( p_debrief_header_id   IN NUMBER
345      ,p_resource_id         IN NUMBER
346     )
347   IS
348     l_acc_id           NUMBER;
349     l_success          BOOLEAN;
350   BEGIN
351     /*** get debug level ***/
352     g_debug_level := JTM_HOOK_UTIL_PKG.Get_Debug_Level;
353 
354     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
355       jtm_message_log_pkg.Log_Msg
356       ( p_debrief_header_id
357       , g_table_name
358       , 'Entering Delete_Debrief_Header'
359       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
360     END IF;
361 
362     l_acc_id := JTM_HOOK_UTIL_PKG.Get_Acc_Id(
363                      P_ACC_TABLE_NAME => g_acc_table_name
364                     ,P_PK1_NAME       => g_pk1_name
365                     ,P_PK1_NUM_VALUE  => p_debrief_header_id
366                     ,P_RESOURCE_ID    => p_resource_id);
367 
368 
369     /*** is record already in ACC table? ***/
370     IF l_acc_id <> -1 THEN
371       /*** yes -> delete debrief header acc record ***/
372       Delete_ACC_Record
373       ( p_debrief_header_id
374        ,p_resource_id
375       );
376 
377     END IF;
378 
379     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
380       jtm_message_log_pkg.Log_Msg
381       ( p_debrief_header_id
382       , g_table_name
383       , 'Leaving Delete_Debrief_Header'
384       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
385     END IF;
386   END Delete_Debrief_Header;
387 
388 
389   /** User Hooks Callout Procedure */
390 
391   /* Called before debrief_header Insert */
392   PROCEDURE PRE_INSERT_DEBRIEF_HEADER
393   ( x_return_status out NOCOPY varchar2
394   )
395   IS
396   BEGIN
397     x_return_status := FND_API.G_RET_STS_SUCCESS;
398   END PRE_INSERT_DEBRIEF_HEADER;
399 
400 
401   /* Called after debrief_header Insert */
402   PROCEDURE POST_INSERT_DEBRIEF_HEADER
403   ( x_return_status out NOCOPY varchar2
404   )
405   IS
406   BEGIN
407     x_return_status := FND_API.G_RET_STS_SUCCESS;
408   END POST_INSERT_DEBRIEF_HEADER;
409 
410 
411   /* Called before debrief_header Update */
412   PROCEDURE PRE_UPDATE_DEBRIEF_HEADER
413   ( x_return_status out NOCOPY varchar2
414   )
415   IS
416   BEGIN
417     x_return_status := FND_API.G_RET_STS_SUCCESS;
418   END PRE_UPDATE_DEBRIEF_HEADER;
419 
420 
421   /* Called after debrief_header Update */
422   PROCEDURE POST_UPDATE_DEBRIEF_HEADER (
423      x_return_status out NOCOPY varchar2
424     ) IS
425 
426     l_enabled_flag      VARCHAR2(30);
427     l_debrief_header_id csf_debrief_headers.debrief_header_id%TYPE;
428     l_resource_id       NUMBER;
429     l_replicate         BOOLEAN;
430 
431   BEGIN
432 
433     l_enabled_flag := JTM_PROFILE_UTL_PKG.GET_ENABLE_FLAG_AT_RESP
434                        ( P_APP_SHORT_NAME => 'CSL' );
435 
436     IF l_enabled_flag <> 'Y' THEN
437       x_return_status := FND_API.G_RET_STS_SUCCESS;
438       RETURN;
439     END IF;
440 
441     /*** get debug level ***/
442     g_debug_level := JTM_HOOK_UTIL_PKG.Get_Debug_Level;
443 
444     /*** get debrief_header record details from public API ***/
445     l_debrief_header_id :=
446              CSF_DEBRIEF_Headers_PKG.user_hooks_rec.debrief_header_id;
447     l_resource_id := Get_Resource_Id( l_debrief_header_id );
448 
449     IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
450       jtm_message_log_pkg.Log_Msg
451       ( l_debrief_header_id
452       , g_table_name
453       , 'Entering POST_UPDATE hook'
454       , JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
455     END IF;
456 
457     /*** Check if debrief_line after update matches criteria ***/
458     IF JTM_HOOK_UTIL_PKG.isMobileFSresource( l_resource_id ) THEN
459       Update_Debrief_Header(l_debrief_header_id, l_resource_id);
460     END IF;
461 
462     x_return_status := FND_API.G_RET_STS_SUCCESS;
463 
464   END POST_UPDATE_DEBRIEF_HEADER;
465 
466 
467   /* Called before debrief_header delete */
468   PROCEDURE PRE_DELETE_DEBRIEF_HEADER
469   ( x_return_status out NOCOPY varchar2
470   )
471   IS
472   BEGIN
473     x_return_status := FND_API.G_RET_STS_SUCCESS;
474   END PRE_DELETE_DEBRIEF_HEADER;
475 
476 
477 
478 END CSL_CSF_DEBRIEF_HDR_ACC_PKG;