DBA Data[Home] [Help]

APPS.BIX_DM_EMAIL_SUMMARY_PKG SQL Statements

The following lines contain the word 'select', 'insert', 'update' or 'delete':

Line: 22

| INSERT_LOG procedure inserts collection concurrent program status into BIX_DM_COLLECT_LOG table     |
| It inserts a row with the following details :                                                       |
|                                                                                                     |
| COLLECT_STATUS column equals to  FAILED if the program failed otherwise SUCCESS                     |
| COLLECT_EXCEP_MESG as error message if the program failed otherwise NULL                            |
| RUN_START_DATE equals to start date time when  the collection program started runnning              |
| RUN_END_DATE  equals  end date time of the collection program finished                              |
| COLLECT_START_DATE Collection start date specified by the user in the cuncurrent program parameter  |
| COLLECT_END_DATE Collection end date specified by the user in the cuncurrent program parameter      |
====================================================================================================+*/

PROCEDURE Write_Log (p_msg IN VARCHAR2) IS
BEGIN
  IF (g_debug_flag = 'Y') THEN
    fnd_file.put_line(fnd_file.log, p_msg);
Line: 43

PROCEDURE INSERT_LOG
AS
BEGIN
   	write_log(TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS')||
                       ' BIX_DM_EMAIL_SUMMARY_PKG.INSERT_LOG:' ||
				   'Start inserting collection status into BIX_DM_COLLECT_LOG table');
Line: 50

/* Insert status into log table */

     INSERT INTO BIX_DM_COLLECT_LOG
	(
	COLLECT_ID,
	COLLECT_CONCUR_ID,
	OBJECT_NAME,
	OBJECT_TYPE,
	RUN_START_DATE,
	RUN_END_DATE,
	COLLECT_START_DATE,
	COLLECT_END_DATE,
	COLLECT_STATUS,
	COLLECT_EXCEP_MESG,
	LAST_UPDATE_DATE,
	LAST_UPDATED_BY,
	CREATION_DATE,
	CREATED_BY,
	LAST_UPDATE_LOGIN,
	REQUEST_ID,
	PROGRAM_APPLICATION_ID,
	PROGRAM_ID,
	PROGRAM_UPDATE_DATE
	)
  	VALUES
	(
	BIX_DM_COLLECT_LOG_S.NEXTVAL,
 	NULL,
	g_proc_name,
	'PL SQL PACKAGE',
	g_program_start_date,
	SYSDATE,
	g_collect_start_date,
     g_collect_end_date,
	g_status,
	g_error_mesg,
	SYSDATE,
	g_user_id,
	SYSDATE,
	g_user_id,
	g_user_id,
	g_request_id,
	g_program_appl_id,
	g_program_id,
	SYSDATE
	);
Line: 99

				' BIX_DM_EMAIL_SUMMARY_PKG.INSERT_LOG:'||
				'Finished inserting collection status into BIX_DM_COLLECT_LOG table');
Line: 104

				 'BIX_DM_EMAIL_SUMMARY_PKG.INSERT_LOG:  ' ||
				 'Failed to insert rows into BIX_DM_COLLECT_LOG table: '||sqlerrm);
Line: 107

  END INSERT_LOG;
Line: 111

| summary tables and also calls INSERT_LOG procedure to log error messge in BIX_DM_COLLECT_LOG table |
+===================================================================================================*/

PROCEDURE clean_up IS
l_delete_count NUMBER := 0;
Line: 120

/* Delete from Email summary table */

 LOOP
	DELETE bix_dm_email_sum
	WHERE  last_update_date > g_program_start_date
     AND  rownum <= g_commit_chunk_size ;
Line: 139

				'Row Count:' || l_delete_count);
Line: 141

l_delete_count := 0;
Line: 143

/* Delete Email Agent Summary Table */

 LOOP
	DELETE bix_dm_email_agent_sum
	WHERE  last_update_date > g_program_start_date
     AND  rownum <= g_commit_chunk_size ;
Line: 162

				 'Row Count:' || l_delete_count);
Line: 163

l_delete_count := 0;
Line: 165

/* Delete from Email Group Summary tables */

 LOOP
        DELETE bix_dm_email_group_sum
        WHERE  last_update_date > g_program_start_date
     AND  rownum <= g_commit_chunk_size ;
Line: 184

                                 'Row Count:' || l_delete_count);
Line: 199

SELECT  UPPER(application_installed) INTO l_emc_installed
FROM  bix_dm_apps_dependency
WHERE application_short_name = 'BIX_DM_EMC_INSTALLED';
Line: 224

  l_email_sum_delete_count NUMBER := 0 ;
Line: 225

  l_email_agent_sum_delete_count NUMBER := 0;
Line: 226

  l_email_sum_insert_count NUMBER := 0;
Line: 227

  l_email_agent_sum_insert_count NUMBER := 0;
Line: 231

 SELECT NVL(ih_mitem.source_id,-1) EMAIL_ACCOUNT_ID,
        NVL(iem_r_c.ROUTE_CLASSIFICATION_ID,-1) CLASSIFICATION_ID,
        RESOURCE_ID,
       NVL(TRUNC(ih_lc_segs.start_date_time),TO_DATE('4012/01/01','YYYY/MM/DD')) PERIOD_START_DATE,
       NVL(LPAD(TO_CHAR(ih_lc_segs.start_date_time,'HH24:'),3,'0')||
       DECODE(SIGN(TO_NUMBER(TO_CHAR(ih_lc_segs.start_date_time,'MI'))-29),0,'00',1,'30',-1,'00'),'00:00')
	  PERIOD_START_TIME,
       TO_DATE(NVL(TO_CHAR(ih_lc_segs.start_date_time,'YYYY/MM/DD '),'4012/01/01 ')||
               NVL(LPAD(TO_CHAR(ih_lc_segs.start_date_time,'HH24:'),3,'0')||
       DECODE(SIGN(TO_NUMBER(TO_CHAR(ih_lc_segs.start_date_time,'MI'))-29),0,'00',1,'30',-1,'00'),'00:00'),
	  'YYYY/MM/DD HH24:MI') PERIOD_START_DATE_TIME,
	  --
	  --Make sure the media start date falls within date range
	  --as where condition is based on segment start time
	  --
       COUNT(DISTINCT(DECODE(SIGN(ih_mitem.start_date_time - g_rounded_collect_start_date), -1, null,
		             DECODE(SIGN(ih_mitem.start_date_time - g_rounded_collect_end_date), -1, ih_mitem.media_id, null))))
							   EMAILS_OFFERED,
       SUM(DECODE(ih_lc_seg_typs.MILCS_CODE,'EMAIL_FETCH',1)) EMAILS_FETCHED,
       SUM(DECODE(ih_lc_seg_typs.MILCS_CODE,'EMAIL_REPLY',1)) EMAILS_REPLIED,
       SUM(DECODE(ih_lc_seg_typs.MILCS_CODE,'EMAIL_REPLY',
                  (ih_lc_segs.start_date_time - email_fetch_time.start_date_time) * 24 * 60 * 60))
		 COMPLETE_AGENT_RESPONSE_TIME,
       SUM(DECODE(ih_lc_seg_typs.MILCS_CODE,'EMAIL_REPLY',
            DECODE(SIGN((NVL(goals.sl_for_replied_emails * 60 * 60,l_email_service_level))  -
		  (ih_lc_segs.start_date_time - email_fetch_time.start_date_time)
		                     * 24 * 60 * 60),-1,0,1))) EMAILS_REPLIED_WITHIN_GOAL,
       SUM(DECODE(ih_lc_seg_typs.MILCS_CODE,'EMAIL_TRANSFERRED',1)) EMAILS_TRANSFERRED,
       SUM(DECODE(ih_lc_seg_typs.MILCS_CODE,'EMAIL_DELETED',1)) EMAILS_DELETED,
       SUM(DECODE(ih_lc_seg_typs.MILCS_CODE,'EMAIL_REPLY',
	      (ih_lc_segs.start_date_time - ih_mitem.start_date_time) * 24 * 60 * 60)) EMC_RESPONSE_TIME
 FROM JTF_IH_MEDIA_ITEMS ih_mitem,
      JTF_IH_MEDIA_ITEM_LC_SEGS ih_lc_segs,
      (
	 --
	 --To calculate agent response time
	 --
       SELECT a.media_id media_id,
              MAX(c.start_date_time) start_date_time
       FROM jtf_ih_media_item_lc_segs a,
            jtf_ih_media_itm_lc_seg_tys b,
   	    jtf_ih_media_item_lc_segs c,
	    jtf_ih_media_itm_lc_seg_tys d
       WHERE a.start_date_time BETWEEN g_rounded_collect_start_date AND g_rounded_collect_end_date
       AND a.milcs_type_id = b.milcs_type_id
       AND b.milcs_code = 'EMAIL_REPLY'
       AND a.media_id =   c.media_id
       AND c.milcs_type_id = d.milcs_type_id
       AND d.milcs_code IN ('EMAIL_FETCH','EMAIL_TRANSFER')
       GROUP BY a.media_id
      ) email_fetch_time,
      JTF_IH_MEDIA_ITM_LC_SEG_TYS ih_lc_seg_typs,
      --iem_route_classifications iem_r_c,
    --
    --Changes for R12
    --
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) iem_r_c,
	 ( SELECT * FROM bix_dm_goals_emc
	   WHERE  end_date_active IS NULL) goals
 WHERE ih_mitem.MEDIA_ITEM_TYPE = 'EMAIL'
 AND   ih_mitem.DIRECTION = 'INBOUND'
 AND   ih_mitem.classification = iem_r_c.name(+)
 AND   iem_r_c.route_classification_id  = goals.classification_id(+)
 AND   ih_mitem.media_id =  email_fetch_time.media_id(+)
 AND   ih_mitem.MEDIA_ID = ih_lc_segs.MEDIA_ID
 AND   ih_lc_segs.MILCS_TYPE_ID = ih_lc_seg_typs.MILCS_TYPE_ID
 AND   ih_lc_segs.START_DATE_TIME BETWEEN  g_rounded_collect_start_date and g_rounded_collect_end_date
 GROUP BY NVL(ih_mitem.SOURCE_ID,-1),
          NVL(iem_r_c.ROUTE_CLASSIFICATION_ID,-1),
  	     RESOURCE_ID,
          NVL(TRUNC(ih_lc_segs.start_date_time),TO_DATE('4012/01/01','YYYY/MM/DD')),
          NVL(LPAD(TO_CHAR(ih_lc_segs.start_date_time,'HH24:'),3,'0')||
      DECODE(SIGN(TO_NUMBER(TO_CHAR(ih_lc_segs.start_date_time,'MI'))-29),0,'00',1,'30',-1,'00'),'00:00'),
          TO_DATE(NVL(TO_CHAR(ih_lc_segs.start_date_time,'YYYY/MM/DD '),'4012/01/01 ')||
		NVL(LPAD(TO_CHAR(ih_lc_segs.start_date_time,'HH24:'),3,'0')||
          DECODE(SIGN(TO_NUMBER(TO_CHAR(ih_lc_segs.start_date_time,'MI'))-29),0,'00',1,'30',-1,'00'),
					    '00:00'),'YYYY/MM/DD HH24:MI');
Line: 321

   SELECT sl_for_replied_emails * 60 * 60  INTO l_email_service_level
   FROM   bix_dm_goals_emc
   WHERE  classification_id = -999;
Line: 329

 /* Delete from the Email summary table for the data range that the data need to be collected */

 --dbms_output.put_line('service level emc: '|| l_email_service_level );
Line: 337

/* Delete from BIX_DM_EMAIL_SUM table where last_update_date
   between g_rounded_collect_start_date and g_rounded_collect_end_date */

     l_email_sum_delete_count := 0;
Line: 343

	DELETE bix_dm_email_sum
	WHERE  period_start_date_time BETWEEN g_rounded_collect_start_date AND
								   g_rounded_collect_end_date
     AND  rownum <= g_commit_chunk_size ;
Line: 348

     l_email_sum_delete_count := l_email_sum_delete_count + SQL%ROWCOUNT;
Line: 359

	DELETE bix_dm_email_agent_sum
	WHERE  period_start_date_time BETWEEN g_rounded_collect_start_date AND
								   g_rounded_collect_end_date
     AND  rownum <= g_commit_chunk_size ;
Line: 364

     l_email_agent_sum_delete_count := l_email_agent_sum_delete_count + SQL%ROWCOUNT;
Line: 379

				   'Row Count:' || l_email_sum_delete_count);
Line: 386

				   'Row Count:' || l_email_agent_sum_delete_count);
Line: 405

    /* insert the email summary information into the BIX_DM_EMAIL_SUM table */
    --
    --This might be a QUEUE rows OR a EMAILS_PROCESSING row or OFFERED.
    --
	INSERT INTO bix_dm_email_sum
	(
	email_summary_id,
	email_account_id,
	classification_id,
	period_start_date,
	period_start_time,
	period_start_date_time,
	last_update_date,
	last_updated_by,
	creation_date,
	created_by,
	emails_offered,
	request_id,
	program_application_id,
	program_id,
	program_update_date
	)
	VALUES
	(
	bix_dm_email_sum_s.nextval,
	emails.email_account_id,
	emails.classification_id,
	emails.period_start_date,
	emails.period_start_time,
	emails.period_start_date_time,
	SYSDATE,
	g_user_id,
	SYSDATE,
	g_user_id,
	emails.emails_offered,
	g_request_id,
	g_program_appl_id,
	g_program_id,
	SYSDATE
 	);
Line: 445

	l_email_sum_insert_count := l_email_sum_insert_count + 1;
Line: 451

     INSERT INTO bix_dm_email_agent_sum
	(
	email_agent_summary_id,
	email_account_id,
	classification_id,
	resource_id,
	period_start_date,
	period_start_time,
	period_start_date_time,
	last_update_date,
	last_updated_by,
	creation_date,
	created_by,
	emails_fetched,
	emails_replied,
        emails_replied_within_goal,
	emails_deleted,
	emails_transferred,
	emc_response_time,
        complete_agent_response_time,
	request_id,
	program_application_id,
	program_id,
	program_update_date
	)
	VALUES
	(
	bix_dm_email_agent_sum_s.nextval,
	emails.email_account_id,
	emails.classification_id,
	emails.resource_id,
	emails.period_start_date,
	emails.period_start_time,
	emails.period_start_date_time,
	SYSDATE,
	g_user_id,
	SYSDATE,
	g_user_id,
	emails.emails_fetched,
	emails.emails_replied,
	emails.emails_replied_within_goal,
	emails.emails_deleted,
	emails.emails_transferred,
	emails.emc_response_time,
	emails.complete_agent_response_time,
	g_request_id,
	g_program_appl_id,
	g_program_id,
	SYSDATE
	);
Line: 501

	l_email_agent_sum_insert_count := l_email_agent_sum_insert_count + 1;
Line: 506

	IF(MOD((l_email_sum_insert_count + l_email_agent_sum_insert_count),g_commit_chunk_size)=0) THEN
	COMMIT;
Line: 516

				 'Finished  Inserting rows into BIM_DM_EMAIL_SUM table ' );
Line: 520

				 'Finished  Inserting rows into BIM_DM_EMAIL_AGENT_SUM table ');
Line: 522

select count(*) into l_email_agent_sum_insert_count
from bix_dm_email_agent_sum;
Line: 526

/*  If any error occurs delete all the rows inserted in this procedure
    and  raise an exception to outer calling procedure */

 EXCEPTION
   WHEN OTHERS THEN
	--dbms_output.put_line('Error'|| sqlerrm);
Line: 547

| be inserted one for each day with accumulated_emails_in_queue as 1 for both days.          |
|                                                                                            |
| If there is no emails in queue for particular combination dimensions                       |
| this procedure populates null.                                                             |
============================================================================================*/

PROCEDURE COLLECT_QUEUE_MEASURES
AS
CURSOR queue_measures IS
SELECT  ih_mitem.media_id,
        NVL(ih_mitem.source_id,-1) EMAIL_ACCOUNT_ID,
        NVL(iem_r_c.ROUTE_CLASSIFICATION_ID,-1) CLASSIFICATION_ID,
        ih_lc_segs_fetch.START_DATE_TIME start_date_time,
        g_rounded_collect_end_date end_date_time
FROM JTF_IH_MEDIA_ITEMS ih_mitem,
     JTF_IH_MEDIA_ITEM_LC_SEGS ih_lc_segs_fetch,
     JTF_IH_MEDIA_ITM_LC_SEG_TYS ih_lc_seg_typs,
     --IEM_ROUTE_CLASSIFICATIONS iem_r_c
    --
    --Changes for R12
    --
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) iem_r_c
WHERE ih_mitem.MEDIA_ITEM_TYPE = 'EMAIL'
AND   ih_mitem.DIRECTION = 'INBOUND'
AND   ih_mitem.classification = iem_r_c.name(+)
AND   ih_mitem.MEDIA_ID = ih_lc_segs_fetch.MEDIA_ID
AND   ih_lc_segs_fetch.START_DATE_TIME < g_rounded_collect_end_date
AND   ih_lc_segs_fetch.MILCS_TYPE_ID = ih_lc_seg_typs.MILCS_TYPE_ID
AND   ih_lc_seg_typs.MILCS_CODE IN ('EMAIL_PROCESSING', 'EMAIL_REQUEUED')
AND   NOT EXISTS
   (
    SELECT  'DUMMY'
    FROM JTF_IH_MEDIA_ITEM_LC_SEGS B,
         JTF_IH_MEDIA_ITM_LC_SEG_TYS C
    WHERE  ih_lc_segs_fetch.MEDIA_ID = B.MEDIA_ID
    AND    B.MILCS_TYPE_ID = C.MILCS_TYPE_ID
    AND  C.MILCS_CODE  IN
		   ('EMAIL_FETCH', 'EMAIL_RESOLVED', 'EMAIL_AUTO_REDIRECTED', 'EMAIL_AUTO_DELETED',
		    'EMAIL_AUTO_REPLY', 'EMAIL_OPEN', 'EMAIL_AUTO_ROUTED', 'EMAIL_AUTO_UPDATED_SR',
		    'EMAIL_ASSIGN','EMAIL_AUTO_REDIRECTED_INTERNAL','EMAIL_AUTO_REDIRECTED_EXTERNAL','EMAIL_DELETED')
    AND B.START_DATE_TIME >= ih_lc_segs_fetch.START_DATE_TIME
    AND B.START_DATE_TIME < g_rounded_collect_end_date
   )
UNION
SELECT a.media_id,
       NVL(a.source_id,-1) EMAIL_ACCOUNT_ID,
       NVL(iem_r_c.ROUTE_CLASSIFICATION_ID,-1) CLASSIFICATION_ID,
       Y.START_DATE_TIME start_date_time,
       MIN(X.START_DATE_TIME) end_date_time
FROM   JTF_IH_MEDIA_ITEMS A,
       (
        SELECT  MEDIA_ID,
                RESOURCE_ID,
                START_DATE_TIME
        FROM    JTF_IH_MEDIA_ITEM_LC_SEGS B,
                JTF_IH_MEDIA_ITM_LC_SEG_TYS C
        WHERE   B.MILCS_TYPE_ID = C.MILCS_TYPE_ID
        AND  C.MILCS_CODE  IN
		   ('EMAIL_FETCH', 'EMAIL_RESOLVED', 'EMAIL_AUTO_REDIRECTED', 'EMAIL_AUTO_DELETED',
		    'EMAIL_AUTO_REPLY', 'EMAIL_OPEN', 'EMAIL_AUTO_ROUTED', 'EMAIL_AUTO_UPDATED_SR',
		    'EMAIL_ASSIGN','EMAIL_AUTO_REDIRECTED_INTERNAL','EMAIL_AUTO_REDIRECTED_EXTERNAL','EMAIL_DELETED')
        AND  B.START_DATE_TIME BETWEEN g_rounded_collect_start_date AND  g_rounded_collect_end_date
--
--it should have been closed within the collection date range
--
       ) X,
       JTF_IH_MEDIA_ITEM_LC_SEGS Y,
       JTF_IH_MEDIA_ITM_LC_SEG_TYS Z,
       --IEM_ROUTE_CLASSIFICATIONS iem_r_c
    --
    --Changes for R12
    --
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) iem_r_c
WHERE a.MEDIA_ITEM_TYPE = 'EMAIL'
AND   a.DIRECTION = 'INBOUND'
AND   a.classification = iem_r_c.name(+)
AND    A.MEDIA_ID = X.MEDIA_ID
AND    X.MEDIA_ID = Y.MEDIA_ID
AND    Y.START_DATE_TIME < g_rounded_collect_end_date --email arrival time should be less than collection end date
AND    Y.MILCS_TYPE_ID = Z.MILCS_TYPE_ID
AND    X.START_DATE_TIME >= Y.START_DATE_TIME --the delete/reply/resolved should have happened after the email arrival time
AND    Z.MILCS_CODE IN ('EMAIL_PROCESSING', 'EMAIL_REQUEUED')
GROUP BY
	  a.media_id,
       NVL(a.source_id,-1),
       NVL(iem_r_c.ROUTE_CLASSIFICATION_ID,-1),
       Y.START_DATE_TIME
;
Line: 671

 	 	SELECT TO_DATE(TO_CHAR(q_measures.start_date_time ,'YYYY/MM/DD')||
        	       LPAD(TO_CHAR(q_measures.start_date_time ,'HH24:'),3,'0')||
                       DECODE(SIGN(TO_NUMBER(TO_CHAR(q_measures.start_date_time ,'MI'))-29),
				   0,'00',1,'30',-1,'00'),'YYYY/MM/DDHH24:MI')
                       INTO l_begin_bucket_date FROM DUAL;
Line: 683

	 	       SELECT TO_DATE(TO_CHAR(q_measures.end_date_time ,'YYYY/MM/DD')||
        	       LPAD(TO_CHAR(q_measures.end_date_time ,'HH24:'),3,'0')||
                       DECODE(SIGN(TO_NUMBER(TO_CHAR(q_measures.end_date_time ,'MI'))-29),
				   0,'00',1,'30',-1,'00'),'YYYY/MM/DDHH24:MI')
                       INTO l_end_bucket_date FROM DUAL;
Line: 716

	UPDATE bix_dm_email_sum
	SET emails_remaining_in_queue = NVL(emails_remaining_in_queue,0) + l_emails_in_queue,
	queue_time = NVL(queue_time,0) + l_total_queue_time,
	max_queue_time = DECODE(l_total_queue_time, NULL,max_queue_time,
			        DECODE(max_queue_time,NULL,l_total_queue_time,
				           DECODE(SIGN(NVL(l_total_queue_time,0) - NVL(max_queue_time,0)),
							   1,l_total_queue_time,max_queue_time))),
    emails_in_q_during_time_period = NVL(emails_in_q_during_time_period,0) + l_emails_queued,
    oldest_message_in_queue = DECODE(l_oldest_message_in_queue,NULL,oldest_message_in_queue,
                                     DECODE(oldest_message_in_queue,NULL,l_oldest_message_in_queue,
                                         DECODE(SIGN(oldest_message_in_queue - l_oldest_message_in_queue),
							 0,oldest_message_in_queue,-1,oldest_message_in_queue,1,
								 l_oldest_message_in_queue))),
        last_update_date =  SYSDATE,
        last_updated_by = g_user_id
	WHERE period_start_date_time = l_begin_bucket_date
	AND   email_account_id = q_measures.email_account_id
	AND   classification_id = q_measures.classification_id;
Line: 736

	INSERT INTO bix_dm_email_sum
	(
	email_summary_id,
	email_account_id,
	classification_id,
	period_start_date,
	period_start_time,
	period_start_date_time,
	last_update_date,
	last_updated_by,
	creation_date,
	created_by,
	emails_remaining_in_queue,
	queue_time,
	max_queue_time,
	emails_in_q_during_time_period,
	oldest_message_in_queue,
	request_id,
	program_application_id,
	program_id,
	program_update_date
	)
	VALUES
	(
	bix_dm_email_sum_s.nextval,
	q_measures.email_account_id,
	q_measures.classification_id,
	TRUNC(l_begin_bucket_date),
	TO_CHAR(l_begin_bucket_date,'HH24:MI'),
	l_begin_bucket_date,
	SYSDATE,
	g_user_id,
	SYSDATE,
	g_user_id,
	l_emails_in_queue,
	l_total_queue_time,
	l_total_queue_time,
	l_emails_queued,
	l_oldest_message_in_queue,
	g_request_id,
	g_program_appl_id,
	g_program_id,
	SYSDATE
 	);
Line: 812

| be inserted one for each day with accumulated_open_emails as 1 for both days.                        |
======================================================================================================*/

PROCEDURE collect_open_measures
AS
CURSOR open_measures IS
SELECT ih_mitem.media_id,
       NVL(ih_mitem.source_id,-1) email_account_id,
       NVL(iem_r_c.route_classification_id,-1) classification_id,
       ih_lc_seg_typs.MILCS_CODE LC_SEGMENT,
       NVL(ih_lc_segs_fetch.RESOURCE_ID,-999) RESOURCE_ID,
       ih_lc_segs_fetch.START_DATE_TIME start_date_time,  --open start time for this specific agent
	  g_rounded_collect_end_date end_date_time, --since it is still open at g_collect_end_time
       min(A.start_date_time) email_start_date_time --very first time that the email was open in ANY of the agents
FROM JTF_IH_MEDIA_ITEMS ih_mitem,
     JTF_IH_MEDIA_ITEM_LC_SEGS ih_lc_segs_fetch,
     jtf_ih_media_item_lc_segs A,
     JTF_IH_MEDIA_ITM_LC_SEG_TYS ih_lc_seg_typs,
     jtf_ih_media_itm_lc_seg_tys B,
     --IEM_ROUTE_CLASSIFICATIONS iem_r_c
    --
    --Changes for R12
    --
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) iem_r_c
WHERE ih_mitem.MEDIA_ITEM_TYPE = 'EMAIL'
AND   ih_mitem.DIRECTION = 'INBOUND'
AND   ih_mitem.classification = iem_r_c.name(+)
AND   ih_mitem.MEDIA_ID = ih_lc_segs_fetch.MEDIA_ID
AND   ih_mitem.media_id = A.media_id
AND   ih_lc_segs_fetch.START_DATE_TIME < g_rounded_collect_end_date
AND   A.START_DATE_TIME < g_rounded_collect_end_date
AND   ih_lc_segs_fetch.MILCS_TYPE_ID = ih_lc_seg_typs.MILCS_TYPE_ID
AND   A.milcs_type_id = B.milcs_type_id
--
--milcs codes by which an email ended up in agents inbox
--auto route goes directly to agents inbox
--
AND   ih_lc_seg_typs.MILCS_CODE IN ('EMAIL_FETCH','EMAIL_TRANSFER', 'EMAIL_ASSIGNED','EMAIL_AUTO_ROUTED')
AND   B.MILCS_CODE IN ('EMAIL_FETCH','EMAIL_TRANSFER', 'EMAIL_ASSIGNED','EMAIL_AUTO_ROUTED')
AND   NOT EXISTS
   (
    SELECT  'DUMMY'
    FROM JTF_IH_MEDIA_ITEM_LC_SEGS B,
         JTF_IH_MEDIA_ITM_LC_SEG_TYS C
    WHERE  ih_lc_segs_fetch.MEDIA_ID = B.MEDIA_ID
    --AND    ih_lc_segs_fetch.RESOURCE_ID = B.RESOURCE_ID -- comment out for 11.5.10 features
    AND    B.MILCS_TYPE_ID = C.MILCS_TYPE_ID
    AND  C.MILCS_CODE  IN ('EMAIL_REPLY','EMAIL_DELETED','EMAIL_TRANSFERRED', 'EMAIL_ESCALATED', 'EMAIL_REQUEUED',
					  'EMAIL_ASSIGN','EMAIL_REROUTED_DIFF_ACCT', 'EMAIL_REROUTED_DIFF_CLASS')
    AND B.START_DATE_TIME > ih_lc_segs_fetch.START_DATE_TIME
    AND B.START_DATE_TIME < g_rounded_collect_end_date
   )
group by ih_mitem.media_id,
       NVL(ih_mitem.source_id,-1),
       NVL(iem_r_c.route_classification_id,-1),
       ih_lc_seg_typs.MILCS_CODE,
       NVL(ih_lc_segs_fetch.RESOURCE_ID,-999),
       ih_lc_segs_fetch.START_DATE_TIME,
	  g_rounded_collect_end_date
UNION
SELECT a.media_id,
       NVL(a.source_id,-1) email_account_id,
       NVL(iem_r_c.route_classification_id,-1) classification_id,
       Z.MILCS_CODE LC_SEGMENT,
       NVL(Y.RESOURCE_ID,-999) RESOURCE_ID,
       Y.START_DATE_TIME start_date_time,
	  MIN(X.START_DATE_TIME) end_date_time, --to calculate open times
       min(Y1.start_date_time) email_start_date_time
FROM   JTF_IH_MEDIA_ITEMS A,
       (
        SELECT  MEDIA_ID,
                RESOURCE_ID,
                START_DATE_TIME
        FROM    JTF_IH_MEDIA_ITEM_LC_SEGS B,
                JTF_IH_MEDIA_ITM_LC_SEG_TYS C
        WHERE   B.MILCS_TYPE_ID = C.MILCS_TYPE_ID
        AND  C.MILCS_CODE  IN ('EMAIL_REPLY','EMAIL_DELETED','EMAIL_TRANSFERRED', 'EMAIL_ESCALATED', 'EMAIL_REQUEUED',
					  'EMAIL_ASSIGN','EMAIL_REROUTED_DIFF_ACCT', 'EMAIL_REROUTED_DIFF_CLASS')
        AND  B.START_DATE_TIME BETWEEN g_rounded_collect_start_date AND  g_rounded_collect_end_date
       ) X,
       JTF_IH_MEDIA_ITEM_LC_SEGS Y,
       jtf_ih_media_item_lc_segs Y1,
       JTF_IH_MEDIA_ITM_LC_SEG_TYS Z,
       JTF_IH_MEDIA_ITM_LC_SEG_TYS Z1,
       --IEM_ROUTE_CLASSIFICATIONS iem_r_c
    --
    --Changes for R12
    --
    (
    select name, max(route_classification_id) route_classification_id
    from iem_route_classifications
    group by name
    ) iem_r_c
WHERE  A.MEDIA_ID = X.MEDIA_ID
AND    X.MEDIA_ID = Y.MEDIA_ID
AND    X.media_id = Y1.media_id
--AND    X.RESOURCE_ID = Y.RESOURCE_ID -- comment this out for 11.5.10
AND    a.MEDIA_ITEM_TYPE = 'EMAIL'
AND    a.DIRECTION = 'INBOUND'
AND    a.classification = iem_r_c.name(+)
AND    Y.START_DATE_TIME < g_rounded_collect_end_date
AND    Y1.START_DATE_TIME < g_rounded_collect_end_date
AND    Y.MILCS_TYPE_ID = Z.MILCS_TYPE_ID
AND    Y1.MILCS_TYPE_ID = Z1.MILCS_TYPE_ID
AND    X.START_DATE_TIME >= Y.START_DATE_TIME
AND    X.START_DATE_TIME >= Y1.START_DATE_TIME
AND    Z.MILCS_CODE IN ('EMAIL_FETCH','EMAIL_TRANSFER', 'EMAIL_ASSIGNED','EMAIL_ASSIGN', 'EMAIL_AUTO_ROUTED')
AND    Z1.MILCS_CODE IN ('EMAIL_FETCH','EMAIL_TRANSFER', 'EMAIL_ASSIGNED', 'EMAIL_ASSIGN','EMAIL_AUTO_ROUTED')
GROUP BY
	  a.media_id,
       NVL(a.source_id,-1),
       NVL(iem_r_c.route_classification_id,-1),
       Z.MILCS_CODE,
       NVL(Y.RESOURCE_ID,-999),
       Y.START_DATE_TIME
;
Line: 962

 	 	SELECT TO_DATE(TO_CHAR(o_measures.start_date_time ,'YYYY/MM/DD')||
        	       LPAD(TO_CHAR(o_measures.start_date_time ,'HH24:'),3,'0')||
                       DECODE(SIGN(TO_NUMBER(TO_CHAR(o_measures.start_date_time ,'MI'))-29),
				   0,'00',1,'30',-1,'00'),'YYYY/MM/DDHH24:MI')
                       INTO l_begin_bucket_date FROM DUAL;
Line: 985

	SELECT  start_date_time INTO l_next_seg_start_date
 	FROM
	(
	SELECT  lc_segs.start_date_time start_date_time
	FROM   jtf_ih_media_item_lc_segs lc_segs,
	       jtf_ih_media_itm_lc_seg_tys lc_seg_typs
	WHERE  lc_segs.media_id = l_media_id
	AND    lc_segs.resource_id = l_resource_id
	AND    lc_segs.start_date_time > l_start_date
	AND    lc_segs.milcs_type_id = lc_seg_typs.milcs_type_id
	AND    lc_seg_typs.milcs_code IN ('EMAIL_REPLY','EMAIL_TRANSFERRED','EMAIL_DELETED')
        ORDER BY lc_segs.start_date_time ASC
	)
	WHERE ROWNUM = 1;
Line: 1017

	 	       SELECT TO_DATE(TO_CHAR(l_next_seg_start_date ,'YYYY/MM/DD')||
        	       LPAD(TO_CHAR(l_next_seg_start_date ,'HH24:'),3,'0')||
                       DECODE(SIGN(TO_NUMBER(TO_CHAR(l_next_seg_start_date ,'MI'))-29),
				   0,'00',1,'30',-1,'00'),'YYYY/MM/DDHH24:MI')
                       INTO l_end_bucket_date FROM DUAL;
Line: 1057

	UPDATE bix_dm_email_agent_sum
	SET emails_open = NVL(emails_open,0) + l_emails_open,
	    open_age    = NVL(open_age,0) + l_total_open_age,
	    emails_open_during_time_period = NVL(emails_open_during_time_period,0) + l_emails_opend,
         oldest_open_message = DECODE(l_oldest_open_message,NULL,oldest_open_message,
                                      DECODE(oldest_open_message,NULL,l_oldest_open_message,
                                         DECODE(SIGN(oldest_open_message - l_oldest_open_message),0,
                                                oldest_open_message,-1,oldest_open_message,1,
									   l_oldest_open_message))),
         oldest_open_age = DECODE(l_oldest_open_age,NULL,oldest_open_age,
                                      DECODE(oldest_open_age,NULL,l_oldest_open_age,
                                         DECODE(SIGN(oldest_open_age - l_oldest_open_age),0,
                                                oldest_open_age,-1,oldest_open_age,1,
									   l_oldest_open_age))),
        last_update_date =  SYSDATE,
        last_updated_by = g_user_id
	WHERE period_start_date_time = l_begin_bucket_date
	AND   email_account_id = o_measures.email_account_id
	AND   classification_id = o_measures.classification_id
	AND   resource_id  = l_resource_id;
Line: 1079

	INSERT INTO bix_dm_email_agent_sum
	(
	email_agent_summary_id,
	email_account_id,
	classification_id,
	resource_id,
	period_start_date,
	period_start_time,
	period_start_date_time,
	last_update_date,
	last_updated_by,
	creation_date,
	created_by,
	emails_open,
	oldest_open_message,
	oldest_open_age,
	open_age,
	emails_open_during_time_period,
	request_id,
	program_application_id,
	program_id,
	program_update_date
	)
	VALUES
	(
	bix_dm_email_sum_s.nextval,
	o_measures.email_account_id,
	o_measures.classification_id,
     NVL(l_resource_id,-999),
	TRUNC(l_begin_bucket_date),
	TO_CHAR(l_begin_bucket_date,'HH24:MI'),
	l_begin_bucket_date,
	SYSDATE,
	g_user_id,
	SYSDATE,
	g_user_id,
	l_emails_open,
	l_oldest_open_message,
	l_oldest_open_age,
	l_total_open_age,
	l_emails_opend,
	g_request_id,
	g_program_appl_id,
	g_program_id,
	SYSDATE
	);
Line: 1161

SELECT
EMAIL_ACCOUNT_ID,
CLASSIFICATION_ID,
group_denorm.parent_group_id GROUP_ID,
PERIOD_START_DATE,
PERIOD_START_TIME,
PERIOD_START_DATE_TIME,
SUM(EMAILS_FETCHED) emails_fetched,
SUM(EMAILS_REPLIED) emails_replied,
SUM(EMAILS_REPLIED_WITHIN_GOAL) emails_replied_within_goal,
SUM(EMAILS_DELETED) emails_deleted,
SUM(EMAILS_TRANSFERRED) emails_transferred,
SUM(EMAILS_OPEN) emails_open,
MIN(OLDEST_OPEN_MESSAGE) oldest_open_message,
MIN(OLDEST_OPEN_AGE) oldest_open_age,
SUM(OPEN_AGE) open_age,
SUM(EMAILS_OPEN_DURING_TIME_PERIOD) emails_open_during_time_period,
SUM(EMC_RESPONSE_TIME) emc_response_time,
SUM(COMPLETE_AGENT_RESPONSE_TIME) complete_agent_response_time
FROM bix_dm_email_agent_sum agt_sum,
      jtf_rs_group_members groups,
      jtf_rs_groups_denorm group_denorm
WHERE agt_sum.period_start_date_time  BETWEEN g_rounded_collect_start_date AND g_rounded_collect_end_date
AND   agt_sum.resource_id = groups.resource_id
AND   groups.group_id    = group_denorm.group_id
AND   NVL(groups.delete_flag,'N') <> 'Y'
AND   agt_sum.period_start_date_time BETWEEN NVL(group_denorm.start_date_active,agt_sum.period_start_date_time)
                AND NVL(group_denorm.end_date_active,SYSDATE)
AND   groups.group_member_id =
       (select max(mem1.group_member_id)
        from jtf_rs_group_members mem1
        where mem1.group_id in
               (select den1.group_id
                from   jtf_rs_groups_denorm den1
                where  den1.parent_group_id = group_denorm.parent_group_id
			 AND    agt_sum.period_start_date_time BETWEEN
				      NVL(den1.start_date_active,agt_sum.period_start_date_time)
						AND NVL(den1.end_date_active,SYSDATE))
        and mem1.resource_id = groups.resource_id
	   and nvl(mem1.delete_flag,'N') <> 'Y')
GROUP BY EMAIL_ACCOUNT_ID,
	 CLASSIFICATION_ID,
         group_denorm.parent_group_id,
         PERIOD_START_DATE,
         PERIOD_START_TIME,
         PERIOD_START_DATE_TIME;
Line: 1215

/* Delete the rows from Group summary table for the given date range and re collect the rows from
   Agent summary table.
*/


write_log(TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS')||
                                   ' BIX_DM_EMAIL_SUMMARY_PKG.COLLECT_GROUP_SUMMARY: '||
                                  ' Start Deleting the rows from Agent Group Email summary table ');
Line: 1225

        DELETE bix_dm_email_group_sum
        WHERE  period_start_date_time BETWEEN g_rounded_collect_start_date
                                      AND     g_rounded_collect_end_date
     AND  rownum <= g_commit_chunk_size ;
Line: 1249

     INSERT INTO bix_dm_email_group_sum
	(
	email_group_summary_id,
	email_account_id,
	classification_id,
	group_id,
	period_start_date,
	period_start_time,
	period_start_date_time,
	last_update_date,
	last_updated_by,
	creation_date,
	created_by,
	emails_fetched,
	emails_replied,
        emails_replied_within_goal,
	emails_deleted,
	emails_transferred,
	emails_open,
	oldest_open_message,
	oldest_open_age,
	open_age,
	emails_open_during_time_period,
	emc_response_time,
        complete_agent_response_time,
	request_id,
	program_application_id,
	program_id,
	program_update_date
	)
	VALUES
	(
	bix_dm_email_group_sum_s.nextval,
	group_emails.email_account_id,
	group_emails.classification_id,
	group_emails.group_id,
	group_emails.period_start_date,
	group_emails.period_start_time,
	group_emails.period_start_date_time,
	SYSDATE,
	g_user_id,
	SYSDATE,
	g_user_id,
	group_emails.emails_fetched,
	group_emails.emails_replied,
	group_emails.emails_replied_within_goal,
	group_emails.emails_deleted,
	group_emails.emails_transferred,
     group_emails.emails_open,
     group_emails.oldest_open_message,
     group_emails.oldest_open_age,
        group_emails.open_age,
        group_emails.emails_open_during_time_period,
	group_emails.emc_response_time,
	group_emails.complete_agent_response_time,
	g_request_id,
	g_program_appl_id,
	g_program_id,
	SYSDATE
	);
Line: 1333

| dimensions other than resource and update the BIX_DM_EMAIL_SUM table|
======================================================================*/

PROCEDURE collect_agent_summary
AS
CURSOR agent_email_sum
IS
SELECT
--
--Just summarize everthing by dimensions EXCEPT resource_id
--
EMAIL_ACCOUNT_ID,
CLASSIFICATION_ID,
PERIOD_START_DATE,
PERIOD_START_TIME,
PERIOD_START_DATE_TIME,
SUM(EMAILS_FETCHED) emails_fetched,
SUM(EMAILS_REPLIED) emails_replied,
SUM(EMAILS_REPLIED_WITHIN_GOAL) emails_replied_within_goal,
SUM(EMAILS_DELETED) emails_deleted,
SUM(EMAILS_TRANSFERRED) emails_transferred,
SUM(EMAILS_OPEN) emails_open,
MIN(OLDEST_OPEN_MESSAGE) oldest_open_message,
MIN(OLDEST_OPEN_AGE) oldest_open_age,
SUM(OPEN_AGE) open_age,
SUM(EMAILS_OPEN_DURING_TIME_PERIOD) emails_open_during_time_period,
SUM(EMC_RESPONSE_TIME) emc_response_time,
SUM(COMPLETE_AGENT_RESPONSE_TIME) complete_agent_response_time
FROM bix_dm_email_agent_sum agt_sum
WHERE    agt_sum.period_start_date_time BETWEEN g_rounded_collect_start_date AND g_rounded_collect_end_date
GROUP BY EMAIL_ACCOUNT_ID,
	 CLASSIFICATION_ID,
         PERIOD_START_DATE,
         PERIOD_START_TIME,
         PERIOD_START_DATE_TIME;
Line: 1381

    UPDATE bix_dm_email_sum
    SET emails_fetched = agent_sum.emails_fetched,
        emails_replied = agent_sum.emails_replied,
        emails_replied_within_goal = agent_sum.emails_replied_within_goal,
        emails_deleted = agent_sum.emails_deleted,
        emails_transferred = agent_sum.emails_transferred,
        emails_open = agent_sum.emails_open,
        oldest_open_message = agent_sum.oldest_open_message,
        oldest_open_age = agent_sum.oldest_open_age,
        open_age = agent_sum.open_age,
        emails_open_during_time_period = agent_sum.emails_open_during_time_period,
        emc_response_time = agent_sum.emc_response_time,
        complete_agent_response_time = agent_sum.complete_agent_response_time
    WHERE   email_account_id = agent_sum.email_account_id
    AND     classification_id = agent_sum.classification_id
    AND     period_start_date_time = agent_sum.period_start_date_time;
Line: 1400

     INSERT INTO bix_dm_email_sum
	(
	email_summary_id,
	email_account_id,
	classification_id,
	period_start_date,
	period_start_time,
	period_start_date_time,
	last_update_date,
	last_updated_by,
	creation_date,
	created_by,
	emails_fetched,
	emails_replied,
        emails_replied_within_goal,
	emails_deleted,
	emails_transferred,
	emails_open,
	oldest_open_message,
	oldest_open_age,
	open_age,
	emails_open_during_time_period,
	emc_response_time,
        complete_agent_response_time,
	request_id,
	program_application_id,
	program_id,
	program_update_date
	)
	VALUES
	(
	bix_dm_email_sum_s.nextval,
	agent_sum.email_account_id,
	agent_sum.classification_id,
	agent_sum.period_start_date,
	agent_sum.period_start_time,
	agent_sum.period_start_date_time,
	SYSDATE,
	g_user_id,
	SYSDATE,
	g_user_id,
	agent_sum.emails_fetched,
	agent_sum.emails_replied,
	agent_sum.emails_replied_within_goal,
        agent_sum.emails_deleted,
	agent_sum.emails_transferred,
        agent_sum.emails_open,
        agent_sum.oldest_open_message,
        agent_sum.oldest_open_age,
        agent_sum.open_age,
        agent_sum.emails_open_during_time_period,
	agent_sum.emc_response_time,
	agent_sum.complete_agent_response_time,
	g_request_id,
	g_program_appl_id,
	g_program_id,
	SYSDATE
	);
Line: 1486

|                              than resource and update the email table itself                  |
| 5. INSERT_LOG              : Insert the status into BIX_DM_COLLECT_LOG table.                 |
==============================================================================================+*/

PROCEDURE COLLECT_EMAILS_SUMMARY(p_start_date IN VARCHAR2, p_end_date IN VARCHAR2)
AS
l_emc_installed VARCHAR2(1);
Line: 1532

SELECT TO_DATE(
	TO_CHAR(g_collect_start_date,'YYYY/MM/DD')||
	LPAD(TO_CHAR(g_collect_start_date,'HH24:'),3,'0')||
	DECODE(SIGN(TO_NUMBER(TO_CHAR(g_collect_start_date,'MI'))-29),0,'00:00',1,'30:00',-1,'00:00'),
	'YYYY/MM/DDHH24:MI:SS')
INTO g_rounded_collect_start_date
FROM DUAL;
Line: 1545

SELECT TO_DATE(
	TO_CHAR(g_collect_end_date,'YYYY/MM/DD')||
	LPAD(TO_CHAR(g_collect_end_date,'HH24:'),3,'0')||
	DECODE(SIGN(TO_NUMBER(TO_CHAR(g_collect_end_date,'MI'))-29),0,'29:59',1,'59:59',-1,'29:59'),
	'YYYY/MM/DDHH24:MI:SS')
INTO g_rounded_collect_end_date
FROM DUAL;
Line: 1565

IF (FND_PROFILE.DEFINED('BIX_DM_DELETE_SIZE')) THEN
   g_commit_chunk_size := TO_NUMBER(FND_PROFILE.VALUE('BIX_DM_DELETE_SIZE'));
Line: 1603

  except agent and update in email summary table */

collect_agent_summary;
Line: 1607

/* Insert the status into BIX_DM_COLLECT_LOG table */

  g_status := 'SUCCESS';
Line: 1610

  insert_log;
Line: 1637

|                              than resource and update the email table itself                  |
| 5. INSERT_LOG              : Insert the status into BIX_DM_COLLECT_LOG table.                 |
==============================================================================================+*/


PROCEDURE COLLECT_EMAILS_SUMMARY(errbuf out nocopy varchar2,
						   retcode out nocopy varchar2,
						   p_start_date IN VARCHAR2,
						   p_end_date   IN VARCHAR2)
AS
l_emc_installed VARCHAR2(1);
Line: 1689

SELECT TO_DATE(
	TO_CHAR(g_collect_start_date,'YYYY/MM/DD')||
	LPAD(TO_CHAR(g_collect_start_date,'HH24:'),3,'0')||
	DECODE(SIGN(TO_NUMBER(TO_CHAR(g_collect_start_date,'MI'))-29),0,'00:00',1,'30:00',-1,'00:00'),
	'YYYY/MM/DDHH24:MI:SS')
INTO g_rounded_collect_start_date
FROM DUAL;
Line: 1702

SELECT TO_DATE(
	TO_CHAR(g_collect_end_date,'YYYY/MM/DD')||
	LPAD(TO_CHAR(g_collect_end_date,'HH24:'),3,'0')||
	DECODE(SIGN(TO_NUMBER(TO_CHAR(g_collect_end_date,'MI'))-29),0,'29:59',1,'59:59',-1,'29:59'),
	'YYYY/MM/DDHH24:MI:SS')
INTO g_rounded_collect_end_date
FROM DUAL;
Line: 1721

IF (FND_PROFILE.DEFINED('BIX_DM_DELETE_SIZE')) THEN
   g_commit_chunk_size := TO_NUMBER(FND_PROFILE.VALUE('BIX_DM_DELETE_SIZE'));
Line: 1759

  except agent and update in email summary table */

collect_agent_summary;
Line: 1763

/* Insert the status into BIX_DM_COLLECT_LOG table */

  g_status := 'SUCCESS';
Line: 1766

    insert_log;