DROP PROCEDURE IF EXISTS `addCdrData`; DELIMITER // CREATE PROCEDURE `addCdrData`( IN `unique_id` VARCHAR(100), IN `linked_id` VARCHAR(100), IN `trunk_channel` VARCHAR(25), IN `exten` VARCHAR(20), IN `caller_id` VARCHAR(20), IN `call_type` VARCHAR(15), IN `did` VARCHAR(20), IN `start_time` VARCHAR(50), IN `acd_time` VARCHAR(50), IN `exten_ring_time` VARCHAR(50), IN `exten_time` VARCHAR(50), IN `exten_ans_time` VARCHAR(50), IN `end_time` VARCHAR(50), IN `acd` VARCHAR(15), IN `cause` CHAR(50), IN `agent_disconnect` INT(1), IN `out_call_type` VARCHAR(15), IN `dtmf` TINYTEXT, IN `feedback` TINYTEXT, IN `process_id` INT, IN `campaign_id` INT, IN `mapid` INT, IN `userfield` VARCHAR(15), IN `hold_duration` INT, IN `call_hangup_reason` VARCHAR(150), IN `duration` INT, IN `billsec` INT, IN `recording_file` VARCHAR(250), IN `end_call` INT(1), IN `disposition` VARCHAR(100), IN `ivr_name` VARCHAR(200) ) NO SQL DETERMINISTIC BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @agent_name_var=NULL; SET @client_id_var=NULL; SET @process_id_var=NULL; SET @login_process_var=NULL; SET @crm_id_var=NULL; SET @map_id_var=NULL; SET @current_campaign_var=NULL; SET @campaign_id_var=NULL; SET @connected=0; SET @campaign_type=NULL; IF exten_ans_time is not NULL and exten_ans_time!='' THEN SET @connected=1; ELSEIF call_type='Outgoing' AND disposition='ANSWER' THEN SET @connected=1; END IF; IF exten!='' and exten IS NOT NULL THEN select agent_name,login_process,current_crm_id,current_map_id,current_campaign into @agent_name_var,@login_process_var,@crm_id_var,@map_id_var,@current_campaign_var from agent_current_states WHERE login_extension_no=exten; END IF; IF campaign_id!='' AND campaign_id>0 AND campaign_id IS NOT NULL THEN SELECT process.client_id,campaign.process_id,campaign.type into @client_id_var,@process_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=campaign_id; SET @campaign_id_var=campaign_id; ELSE IF (did IS NULL OR did='') AND (acd iS NULL OR acd='') THEN SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE if (@current_campaign_var IS NOT NULL AND @current_campaign_var!='' AND @current_campaign_var>0) then SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE SET @client_id_var=NULL; SET @process_id_var=NULL; SET @campaign_id_var=NULL; SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id WHERE (( IFNULL(did,'')!='' AND did_no=did AND ifnull(did_no,'')!='' ) and (IFNULL(acd,'')!='' AND san_acd_code=acd )) OR ((ifnull(did_no,'')='' OR IFNULL(did,'')='' )and IFNULL(acd,'')!='' and (san_acd_code=acd )) OR (IFNULL(acd,'')='' AND IFNULL(did,'')!='' and did_no=did) LIMIT 0,1; END IF; END IF; END IF; SET @dynSQL=CONCAT('INSERT INTO ',Case when IfNULL(@client_id_var,"0")="0" then 'cdr' ELSE CONCAT('cdr_',IfNULL(@client_id_var,"0"))END ,'( `unique_id`, `linked_id`, `trunk_channel`, `exten`, `caller_id`, `call_type`, `did`, `start_time`, `acd_time`, `exten_ring_time`, `exten_time`, `exten_ans_time`, `end_time`, `acd`, `cause`, `agent_disconnect`, `out_call_type`, `dtmf`, `feedback`, `process_id`, `campaign_id`, `map_id`, `crm_id`, `master_id`, `userfield`, `hold_duration`, `agent`, `call_hangup_reason`, `duration`, `billsec`, `recording_file`,`end_call` , `connected`,`disposition`,`ivr_name` )VALUES(',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmt1 FROM @dynSQL; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @cdrid=LAST_INSERT_ID(); if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,"")!="" AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(recording_file,"")!="" then CALL `addProcessSublog`(@process_id_var , case when IFNULL(@crm_id_var,"")="" then "0" ELSE @crm_id_var END, recording_file, call_type ,IFNULL(linked_id,"") , duration,billsec); END if; if IFNULL(out_call_type,"")="PD" AND IFNULL(@process_id_var,"")!="" AND exten_ans_time IS null AND ifnull(mapid,0)>0 AND ifnull(end_call,0)=1 then CALL `addSystemDisposeLog`(IFNULL(@process_id_var,"0") ,ifnull(mapid,0),linked_id,unique_id,ifnull(caller_id,""),ifnull(cause,0),IFNULL(call_hangup_reason,""),IFNULL(dtmf,""),IFNULL(duration,0)); END if; IF end_call=1 AND call_type='Incoming' AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(@connected,0)=0 THEN CALL `set_callback_on_missedcall`(@client_id_var, did,acd, @cdrid,caller_id,if(acd_time IS NULL,'IVR','QUEUE')); END IF; END if; CREATE TABLE if NOT EXISTS `cdrtemp` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`unique_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`linked_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`trunk_channel` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`exten` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`caller_id` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`call_type` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`did` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `start_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ring_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ans_time` DATETIME NULL DEFAULT NULL, `end_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `cause` VARCHAR(20) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `agent_disconnect` INT(1) NULL DEFAULT NULL, `out_call_type` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `dtmf` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `feedback` VARCHAR(5) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `process_id` INT(11) NULL DEFAULT NULL, `campaign_id` INT(11) NULL DEFAULT NULL, `map_id` INT(11) NULL DEFAULT NULL, `crm_id` BIGINT(20) NULL DEFAULT NULL, `master_id` INT(11) NULL DEFAULT NULL, `userfield` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `hold_duration` INT(3) NULL DEFAULT NULL, `agent` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `call_hangup_reason` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `duration` INT(11) NULL DEFAULT NULL, `billsec` INT(11) NULL DEFAULT NULL, `recording_file` VARCHAR(250) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `log` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `connected` INT(1) NULL DEFAULT '0', `end_call` INT(1) NOT NULL DEFAULT '0', `disposition` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`cid` INT(11) NULL DEFAULT NULL, `ivr_name` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`Wrapup_duration` BIGINT(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) COLLATE='latin1_swedish_ci' ENGINE=InnoDB ; SET @cdrtempSQL=CONCAT('INSERT INTO cdrtemp (cid,`unique_id`,`linked_id`,`trunk_channel`,`exten`,`caller_id`,`call_type`,`did`,`start_time`,`acd_time`,`exten_ring_time`,`exten_time`,`exten_ans_time`,`end_time`,`acd`,`cause`,`agent_disconnect`,`out_call_type`,`dtmf`,`feedback`,`process_id`,`campaign_id`,`map_id`,`crm_id`,`master_id`,`userfield`,`hold_duration`,`agent`,`call_hangup_reason`,`duration`,`billsec`,`recording_file`,`end_call`,`connected`,`disposition`,`ivr_name`) VALUES(',Case when IfNULL(@client_id_var,"0")="0" then "0" ELSE @client_id_var END ,',',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmtcdrtempSQL FROM @cdrtempSQL; EXECUTE stmtcdrtempSQL; DEALLOCATE PREPARE stmtcdrtempSQL; if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,'')!='' AND IFNULL(feedback,'')!='' AND IFNULL(linked_id,'')!='' then SET @updatefeedback = CONCAT('update process_table_log_',@process_id_var,' set feedback="',feedback, '" where cdr_id="',linked_id,'"'); PREPARE stmtupdatefeedback FROM @updatefeedback; EXECUTE stmtupdatefeedback; DEALLOCATE PREPARE stmtupdatefeedback; END if; if ifnull(acd,0)>0 AND (exten_ans_time IS NULL) AND end_call=1 then SELECT missed_call_email_template,email_on_missed_call,process.id,campaign.id,process.client_id INTO @missed_call_email_template,@email_on_missed_call,@process_id_new,@campaign_id,@client_id FROM campaign join process ON campaign.process_id=process.id WHERE san_acd_code=acd; CALL addEmailData(@process_id_new,@campaign_id,@client_id,@agent_name_var,@missed_call_email_template,@email_on_missed_call); END if; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniAgentSession`; DELIMITER // CREATE PROCEDURE `getOmniAgentSession`( IN `process_id` INT, IN `chat_type` VARCHAR(20), IN `client_acc_id` VARCHAR(100), IN `customer_acc_id` VARCHAR(100) ) BEGIN SET @query1=CONCAT('select * from omni_chat_session_',process_id,' where type_of_chat="',chat_type,'" and account_id="',client_acc_id,'" and customer_account_id="',customer_acc_id,'" and end_time IS NULL'); PREPARE stmtcdrtempSQL FROM @query1; EXECUTE stmtcdrtempSQL; DEALLOCATE PREPARE stmtcdrtempSQL; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniChatQueueDetails`; DELIMITER // CREATE PROCEDURE `getOmniChatQueueDetails`( IN `process_id` INT, IN `customer_id` INT, IN `log_id` INT, IN `chat` TINYTEXT, IN `rowlimit` INT, IN `rowoffset` INT, IN `total_count` INT ) BEGIN if total_count>0 then SET @selectsql = 'SELECT COUNT(1) Total '; ELSE SET @selectsql = CONCAT('SELECT csl.id AS log_id, FROM_BASE64(chat) chat, csl.attachment_path, csl.attachment_path AS file_path, file_mime_type, GetFileMimeIconClass(file_mime_type) AS file_type_icon, media_url, file_name, DATE_FORMAT(csl.send_time, "%d-%m-%Y") msg_date, DATE_FORMAT(csl.send_time, "%h:%i %p") msg_time, "customer" AS sent_by, csl.type_of_chat, ccm.id customer_id, COALESCE(ccm.customer_name, ccm.email_id, ccm.phone_no) customer_title, COALESCE(csl.message_token, "") message_token, "success" AS message_response '); END if; SET @fromsql = CONCAT(' FROM omni_chat_queue csl LEFT JOIN omni_chat_customer_master_',process_id,' ccm ON ccm.id=csl.customer_id LEFT JOIN client_master cm ON ccm.client_id=cm.id where 1=1 AND DATE(csl.send_time) = CURRENT_DATE() '); IF log_id > 0 THEN SET @fromsql = CONCAT(@fromsql, ' AND csl.id=',log_id); END IF; IF customer_id > 0 THEN SET @fromsql = CONCAT(@fromsql, ' AND csl.customer_id=',customer_id); END IF; SET @fromsql = CONCAT(@fromsql, ' ORDER BY csl.id DESC'); IF log_id = 0 THEN SET @fromsql = CONCAT(@fromsql, ' limit ',(rowoffset-1)*rowlimit,',',rowlimit); END IF; SET @query1=CONCAT(@selectsql,' ',@fromsql); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniDashboardData`; DELIMITER // CREATE PROCEDURE `getOmniDashboardData`( IN `proc_id` INT, IN `camp_id` VARCHAR(50), IN `omni_id` VARCHAR(50), IN `is_summary` INT ) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @ERRNO = MYSQL_ERRNO, @MESSAGE_TEXT = MESSAGE_TEXT; SELECT 'failure' status_msg, CONCAT('MySQL ERROR: ', @ERRNO, ': ', @MESSAGE_TEXT) AS Error_Message; ROLLBACK; END; START TRANSACTION; SET @curdatetime = replace(replace(replace(replace(current_timestamp(6),'-',''),':',''),' ','_'),'.','_'); SET @sql1 = CONCAT('drop table if exists temp_',@curdatetime); PREPARE stmt1 FROM @sql1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if (is_summary = 1) then SET @total_agent = 0; SET @total_queue = 0; SET @chat_disposed = 0; SET @sql1 = CONCAT('SELECT COUNT(DISTINCT acoc.agent_id) Total_Agent INTO @total_agent FROM agent_current_omni_chat acoc left JOIN agent_login_campaign alc ON acoc.agent_id=alc.agent_id WHERE DATE(start_time)= CURDATE()', if(camp_id>0,CONCAT(' and alc.campaign_id in (',camp_id,')'),'')); PREPARE stmt1 FROM @sql1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @SQL1 = CONCAT('SELECT COUNT(case when end_time IS NOT NULL then 1 ELSE null end)Disposed_Chat into @chat_disposed FROM omni_chat_session_',proc_id,' WHERE 1=1 and type_of_chat!="meeting" and date(start_time)=CURDATE() ', if(camp_id>0,CONCAT(' and campaign_id in (',camp_id,')'),''), if(omni_id>0,CONCAT(' and omni_id in (',omni_id,')'),''),' '); PREPARE stmt1 FROM @sql1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @sql1 = CONCAT(' SELECT COUNT(1) INTO @total_queue FROM omni_chat_queue WHERE inserted_at>CURDATE() AND process_id=',proc_id,if(camp_id>0,CONCAT(' and campaign_id in (',camp_id,')'),''),if(omni_id>0,CONCAT(' and omni_id in (',omni_id,')'),'')); PREPARE stmt1 FROM @sql1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SELECT @total_agent total_agent, @total_queue total_queue, @chat_disposed disposed_chat; ELSE SET @sql1 = CONCAT('create table temp_',@curdatetime,' SELECT agent_id,COUNT(1) total_chat FROM omni_chat_session_',proc_id,' WHERE 1=1 and type_of_chat!="meeting" AND end_time IS NOT NULL ',if(camp_id>0,CONCAT(' and campaign_id in (',camp_id,')'),''),if(omni_id>0,CONCAT(' and omni_id in (',omni_id,')'),''),' GROUP BY agent_id'); PREPARE stmt1 FROM @sql1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @sql1 = CONCAT('SELECT agent.id agent_id, agent.name agent_name,agent_status.name status,os.name omni_name,ocs.type_of_chat,ocs.phone_no,ocs.customer_account_id,temp.total_chat, acs.login_extension_no,ocsl.chat last_message,ocs.session_id,ocsl.file_mime_type,ocsl.msg_time,ocsl.sent_by,campaign.name campaign_name,agent_status.color_code, occm.customer_name FROM omni_chat_session_',proc_id,' ocs LEFT JOIN (SELECT MAX(log_id) log_id,session_id FROM omni_chat_session_log_',proc_id,' /*WHERE msg_time>CURDATE()*/ GROUP BY session_id)last_ocsl ON ocs.session_id=last_ocsl.session_id LEFT JOIN omni_chat_session_log_',proc_id,' ocsl ON last_ocsl.log_id=ocsl.log_id LEFT JOIN omni_chat_customer_master_',proc_id,' occm ON ocs.customer_account_id=case ocs.type_of_chat when "whatsapp" then occm.whatsapp_no when "facebook" then occm.facebook_id when "twitter" then occm.twitter_id when "viber" then occm.viber_id when "website" then occm.website_id end LEFT JOIN agent_current_states acs ON acs.login_extension_no IS NOT NULL AND ocs.agent_id=acs.agent_id LEFT JOIN agent_status ON acs.`status`=agent_status.id LEFT JOIN agent ON ocs.agent_id=agent.id LEFT JOIN omni_setup os ON ocs.omni_id=os.id LEFT JOIN temp_',@curdatetime,' temp ON temp.agent_id=ocs.agent_id LEFT JOIN campaign ON ocs.campaign_id=campaign.id WHERE 1=1 and ocs.type_of_chat!="meeting" and ocs.end_time is null ',if(camp_id>0,CONCAT(' and ocs.campaign_id in (',camp_id,')'),''),if(omni_id>0,CONCAT(' and omni_id in (',omni_id,')'),'')); PREPARE stmt1 FROM @sql1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END if; SET @sql1 = CONCAT('drop table if exists temp_',@curdatetime); PREPARE stmt1 FROM @sql1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SELECT 'success' status_msg, '' AS Error_Message; COMMIT; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniDetails`; DELIMITER // CREATE PROCEDURE `getOmniDetails`( IN `account_id` VARCHAR(50), IN `omni_type` VARCHAR(20) ) BEGIN SET @query1 = CONCAT('SELECT * FROM omni_setup where 1=1 ', case when omni_type='facebook' then CONCAT('and fb_page_id="',account_id,'"') when omni_type='twitter' then CONCAT('and twitter_app_id="',account_id,'"') when omni_type='whatsapp' then CONCAT('and whatsApp_no="',account_id,'"') when omni_type='viber' then CONCAT('and viber_acc_id="',account_id,'"') when omni_type='website' then CONCAT('and website="',account_id,'"') ELSE ' and 1=1 ' end); PREPARE stmtcdrtempSQL FROM @QUERY1; EXECUTE stmtcdrtempSQL; DEALLOCATE PREPARE stmtcdrtempSQL; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniFreeAgents`; DELIMITER // CREATE PROCEDURE `getOmniFreeAgents`( IN `process_id` INT, IN `campaign_id` INT, IN `cust_omni_id` INT, IN `map_to_agent` INT, IN `cust_account_id` VARCHAR(100) ) BEGIN if (map_to_agent=1) then SET @sql1 = CONCAT('SELECT case when omni_id=',cust_omni_id,' AND customer_account_id=',cust_account_id,' then agent_id else 0 end, case when omni_id=',cust_omni_id,' AND customer_account_id=',cust_account_id,' and end_time is null then session_id else 0 end into @agent_map,@cust_session_id FROM omni_chat_session',process_id,' WHERE ((omni_id=',cust_omni_id,' AND customer_account_id=',cust_account_id,') or (omni_id=',cust_omni_id,' AND customer_account_id=',cust_account_id,' and end_time is null) ORDER BY session_id desc LIMIT 1'); PREPARE stmt1 FROM @sql1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SELECT agent.id agent_id,agent.name agent_name,acs.login_extension_no extension_no,alc.acd_code,ifnull(concurrent_chat,0) concurrent_chat,ifnull(chat_count,0) current_chat, IFNULL(@cust_session_id,0) session_id FROM agent JOIN agent_current_states acs ON agent.id=acs.agent_id JOIN agent_login_campaign alc ON alc.agent_id=agent.id left JOIN (SELECT agent_id,COUNT(1)chat_count from agent_current_omni_chat GROUP BY agent_id)acc ON agent.id=acc.agent_id WHERE IFNULL(concurrent_chat,0)>0 AND IFNULL(acc.chat_count,0)0 AND IFNULL(acc.chat_count,0)0 AND IFNULL(acc.chat_count,0)0 then SET @master_id = master_id; ELSE SET @query1 = CONCAT('select id into @master_id from process_table_',process_id,' where ',@phone_no_field,' order by id desc limit 1'); #SELECT @query1; PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END if; if ifnull(@master_id,'') != '' then if(ifnull(update_columns,'')!='') then SET @query1 = CONCAT('update process_table_',process_id,' set ',update_columns,' where id=',@master_id); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END if; SET @query1 = CONCAT('select map_id into @map_id from campaign_mapping_',process_id,' where master_id=',@master_id,' and campaign_id=',campaign_id,' order by map_id desc limit 1'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@map_id,'') = '' then set @file_name = CONCAT("OMNI",replace(CURDATE(),'-','')); SET @query1 = CONCAT('select id into @file_id from importmaster_',process_id,' where file_name="',@file_name,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@file_id,'') = '' then SET @query1 = CONCAT('insert into importmaster_',process_id,'(file_name,upload_date,process_id,campaign_id,import_type,active_file,mark_for_deletion) values("',@file_name,'",now(),',process_id,',',campaign_id,',"OMNI",0,0)'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @file_id = LAST_INSERT_ID(); END if; SET @query1 = CONCAT('insert into campaign_mapping_',process_id,'(campaign_id,master_id,dialed,agent_id,lastcalltime,disposition,sub_disposition,noofattempts,fileid,callagaintime,callagainno,callagaintype) values(',campaign_id,',',@master_id,',1,',agent_id,',now(),',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',"',ifnull(cus_sub_disposition,""),'",1,',@file_id,',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'","Telecaller Chat Callback")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @map_id = LAST_INSERT_ID(); ELSE if callback_datetime IS NOT NULL /*AND callback_datetime != ''*/ then SET @query1 = CONCAT('update campaign_mapping_',process_id,' set dialed=0,callagaintime="',callback_datetime,'",callagainno="',callback_number,'",callagaintype="Telecaller Chat Callback" where map_id=',@map_id); END if; END if; ELSE SET @query1 = CONCAT('insert into process_table_',process_id,'(san_insert_date,san_caller_name,san_email_id,',insert_columns,') values(now(),"',cus_name,'","',cus_email,'",',insert_values,')'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @master_id=LAST_INSERT_ID(); set @file_name = CONCAT("OMNI",replace(CURDATE(),'-','')); SET @query1 = CONCAT('select id into @file_id from importmaster_',process_id,' where file_name="',@file_name,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@file_id,'') = '' then SET @query1 = CONCAT('insert into importmaster_',process_id,'(file_name,upload_date,process_id,campaign_id,import_type,active_file,mark_for_deletion) values("',@file_name,'",now(),',process_id,',',campaign_id,',"OMNI",0,0)'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @file_id = LAST_INSERT_ID(); END if; SET @query1 = CONCAT('insert into campaign_mapping_',process_id,'(campaign_id,master_id,dialed,agent_id,lastcalltime,disposition,sub_disposition,noofattempts,fileid,callagaintime,callagainno,callagaintype) values(',campaign_id,',',@master_id,',1,',agent_id,',now(),',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',"',ifnull(cus_sub_disposition,""),'",1,',@file_id,',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'","Telecaller Chat Callback")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @map_id = LAST_INSERT_ID(); END if; SET @chat_start_time = (SELECT ifnull(start_time,NOW()) FROM agent_current_omni_chat WHERE session_id=cus_session_id AND agent_id=agent_id); SET @query1 = CONCAT('insert into process_table_log_',process_id,'(agent_id,agent_name,log_phone_no,start_time,end_time,parent_id,camp_map_id,disposition,sub_disposition,campaign,extension_no,CallType,SAN_Remark',if(ifnull(log_insert_columns,'')!='',CONCAT(',',log_insert_columns),''),',callback_time,callback_no) values(',agent_id,',"',@agent_name,'","',cus_phone_no,'","',IFNULL(@chat_start_time,NOW()),'",now(),',@master_id,',',@map_id,',',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',"',ifnull(cus_sub_disposition,""),'",',campaign_id,',"chat","',chat_type,'",',if(ifnull(cus_remarks,"")!="",CONCAT('"',cus_remarks,'"'),CONCAT('"Auto Dispose"')),'',if(ifnull(log_insert_values,'')!='',CONCAT(',',log_insert_values),''),',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @log_id = LAST_INSERT_ID(); DELETE FROM agent_current_omni_chat WHERE session_id=cus_session_id; DELETE FROM omni_connections WHERE session_id=cus_session_id; SET @query1 = CONCAT('update omni_chat_session_',process_id,' set disposition=',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',sub_disposition="',ifnull(cus_sub_disposition,""),'",remarks=',if(ifnull(cus_remarks,"")!="",CONCAT('"',cus_remarks,'"'),CONCAT('"Auto Dispose"')),',end_time=now(), email_id="',cus_email,'",phone_no="',cus_phone_no,'",customer_name="',cus_name,'",process_master_id=',@master_id,',process_log_id=',@log_id,' where session_id="',cus_session_id,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SELECT 'success' status_msg, '' AS Error_Message, @log_id process_log_id; COMMIT; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniSessionDetails`; DELIMITER // CREATE PROCEDURE `getOmniSessionDetails`( IN `process_id` INT, IN `client_id` INT, IN `agent_id` INT, IN `session_id` INT, IN `log_id` INT, IN `chat` TINYTEXT, IN `rowlimit` INT, IN `rowoffset` INT, IN `total_count` INT, IN `cust_id` INT, IN `omni_acc_no` VARCHAR(100), IN `for_customer` TINYINT ) BEGIN if total_count>0 then SET @selectsql = 'select count(1) Total '; ELSE SET @selectsql = CONCAT('select cs.omni_id,log_id,cs.session_id,cs.parent_session_id,cs.meeting_log_id,FROM_BASE64(chat) chat,csl.attachment_path,csl.attachment_path AS file_path,file_mime_type, GetFileMimeIconClass(file_mime_type) AS file_type_icon, media_url, file_name, DATE_FORMAT(msg_time, "%d-%m-%Y")msg_date,DATE_FORMAT(msg_time, "%h:%i:%s %p")msg_time,sent_by,type_of_chat,ccm.id customer_id,coalesce(ccm.customer_name,ccm.email_id,ccm.phone_no) customer_title, coalesce(agt.name) agent_name,"" message_token, "success" AS message_response, user.user_name '); END if; SET @fromsql = CONCAT(' FROM omni_chat_session_log_',process_id,' csl LEFT JOIN omni_chat_session_',process_id,' cs ON cs.session_id=csl.session_id LEFT JOIN omni_chat_customer_master_',process_id,' ccm ON ccm.id=cs.chat_customer_id LEFT JOIN agent ',' agt ON agt.id=cs.agent_id LEFT JOIN client_master cm ON ccm.client_id=cm.id LEFT JOIN user on user.id=csl.crm_user_id where 1=1 ', if(ifnull(log_id,0)>0,CONCAT(' and log_id=',log_id),''), if(ifnull(session_id,0)>0,CONCAT(' and cs.session_id=', session_id), if(ifnull(omni_acc_no,"")!="",CONCAT(' and cs.account_id="', omni_acc_no, '"'),'')), if(ifnull(chat,'')!='',CONCAT(' and chat like "%',chat,'%"'),''), if(ifnull(for_customer,0)!=0,CONCAT(' AND sent_by!="crm"'),''), if(ifnull(cust_id,0)>0,CONCAT(' AND cs.chat_customer_id=',cust_id),'') , if(ifnull(total_count,0)=0,CONCAT(' ORDER BY ifnull(log_id,0) desc limit ',(rowoffset-1)*rowlimit,',',rowlimit),'')); SET @query1=CONCAT(@selectsql,' ',@fromsql); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniUndisposeChat`; DELIMITER // CREATE PROCEDURE `getOmniUndisposeChat`( IN `process_id` INT, IN `cur_agent_id` INT ) BEGIN SET @query1 = CONCAT('SELECT a.*,ifnull(c.customer_name,"Unknown") customer_name,c.email_id customer_email_id ,c.master_id FROM agent_current_omni_chat a JOIN omni_chat_session_',process_id,' b ON a.session_id=b.session_id join omni_chat_customer_master_',process_id,' c on c.id=b.chat_customer_id WHERE chat_type="whatsapp" and a.agent_id=',cur_agent_id); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @query1 = CONCAT('SELECT a.*,ifnull(c.customer_name,"Unknown") customer_name,c.email_id customer_email_id,c.master_id FROM agent_current_omni_chat a JOIN omni_chat_session_',process_id,' b ON a.session_id=b.session_id join omni_chat_customer_master_',process_id,' c on c.id=b.chat_customer_id WHERE chat_type="facebook" and a.agent_id=',cur_agent_id); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @query1 = CONCAT('SELECT a.*,ifnull(c.customer_name,"Unknown") customer_name,c.email_id customer_email_id,c.master_id FROM agent_current_omni_chat a JOIN omni_chat_session_',process_id,' b ON a.session_id=b.session_id join omni_chat_customer_master_',process_id,' c on c.id=b.chat_customer_id WHERE chat_type="twitter" and a.agent_id=',cur_agent_id); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @query1 = CONCAT('SELECT a.*,ifnull(c.customer_name,"Unknown") customer_name,c.email_id customer_email_id,c.master_id FROM agent_current_omni_chat a JOIN omni_chat_session_',process_id,' b ON a.session_id=b.session_id join omni_chat_customer_master_',process_id,' c on c.id=b.chat_customer_id WHERE chat_type="viber" and a.agent_id=',cur_agent_id); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @query1 = CONCAT('SELECT a.*,ifnull(c.customer_name,"Unknown") customer_name,c.email_id customer_email_id,c.master_id FROM agent_current_omni_chat a JOIN omni_chat_session_',process_id,' b ON a.session_id=b.session_id join omni_chat_customer_master_',process_id,' c on c.id=b.chat_customer_id WHERE chat_type="website" and a.agent_id=',cur_agent_id); #SELECT @query1; PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getPDCampaignData`; DELIMITER // CREATE PROCEDURE `getPDCampaignData`() NO SQL BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @maxcalldialed=(SELECT max_pd_call_dial FROM company); SET @PDCampaignData=CONCAT('SELECT campaign.id campaign_id,process.id Process_id,process.name Process_name,campaign.name Campaign_name, ifnull(process_setting.hide_ph_no_agt_screen,0) AS "san_hide_number",process.pro_reco_fld AS"san_rec_folder", process_setting.dial_no_random,campaign.dial_on_idle,case when campaign.`type` = "IVR" then campaign.ivr_no else campaign.san_acd_code end acd_code,trunkgroup.name AS "Trunck_Group_Id", campaign.pref_dial_pre As "pref_dial_pre",campaign.type AS "campaign_type" ,campaign.ivr_no,campaign.ivr_call,campaign.pacing,campaign.dyn_pacing,campaign.enable_agent_mapping,process_setting.cl_bc_agt_map, campaign.max_dial_tm,campaign.max_call_tm,campaign.caller_id,IFNULL(cmpcontext.name,processcontext.name) AS "Context", case when round(Count(agent_current_states.agent_name)*campaign.pacing,0)>"',@maxcalldialed,'" then "',@maxcalldialed,'" ELSE round(Count(agent_current_states.agent_name)*campaign.pacing,0) end TotalDialNo, ifnull(campaign.minPDlist,250) min_pd_list,ifnull(campaign.maxPDlist,500) max_pd_list FROM agent_current_states JOIN agent_login_campaign ON agent_current_states.agent_id=agent_login_campaign.agent_id JOIN campaign ON agent_login_campaign.campaign_id=campaign.id JOIN process ON campaign.process_id=process.id JOIN process_setting ON process_setting.process_id=process.id LEFT JOIN context cmpcontext on cmpcontext.id=campaign.context LEFT JOIN context processcontext on processcontext.id=campaign.context LEFT JOIN trunkgroup on campaign.san_trunkgroup_id=trunkgroup.id WHERE campaign.active_campaign=1 AND process.isActive=1 and campaign.dial_mode = "Predictive" AND ifnull(agent_current_states.login_extension_no,"") !="" and ifnull(agent_current_states.manual_on,0)=0 and campaign.`type` in("Both","Outbound") /*AND ifnull(campaign.manual_mode_on,0)=0*/ AND ((ifnull(campaign.dial_on_idle,0)=0 AND agent_current_states.`status` NOT IN("8","10","4","2","1","0")) OR (ifnull(campaign.dial_on_idle,0)=1 AND agent_current_states.`status` IN("3","11"))) AND campaign.start_date<=CURDATE() AND campaign.end_date>=CURDATE() AND NOW() BETWEEN CONCAT(CURDATE()," ",campaign.start_time_hh,":",campaign.start_time_mm,":00") AND CONCAT(CURDATE()," ",campaign.end_time_hh,":",campaign.end_time_mm,":00") GROUP BY campaign.id ,process.id ,process.name,process_setting.dial_no_random,campaign.dial_on_idle,acd_code,campaign.pref_dial_pre,campaign.type ,campaign.ivr_no,campaign.ivr_call,campaign.pacing,campaign.dyn_pacing,campaign.enable_agent_mapping,process_setting.cl_bc_agt_map, campaign.max_dial_tm,campaign.max_call_tm,campaign.caller_id,process.pro_reco_fld,campaign.context,process_setting.hide_ph_no_agt_screen ',if((SELECT 1 FROM campaign WHERE `type` = "IVR" LIMIT 1)=1,' union all SELECT campaign.id campaign_id,process.id Process_id,process.name Process_name,campaign.name Campaign_name, ifnull(process_setting.hide_ph_no_agt_screen,0) AS "san_hide_number",process.pro_reco_fld AS"san_rec_folder", process_setting.dial_no_random,campaign.dial_on_idle,case when campaign.`type` = "IVR" then campaign.ivr_no else campaign.san_acd_code end acd_code,trunkgroup.name AS "Trunck_Group_Id", campaign.pref_dial_pre As "Prefix_To_Dail",campaign.type AS "campaign_type" ,campaign.ivr_no,campaign.ivr_call,campaign.pacing,campaign.dyn_pacing,campaign.enable_agent_mapping,process_setting.cl_bc_agt_map, campaign.max_dial_tm,campaign.max_call_tm,campaign.caller_id,IFNULL(cmpcontext.name,processcontext.name) AS "Context", campaign.ivr_call TotalDialNo,ifnull(campaign.minPDlist,250) min_pd_list,ifnull(campaign.maxPDlist,500) max_pd_list FROM campaign JOIN process ON campaign.process_id = process.id JOIN process_setting ON process_setting.process_id = process.id LEFT JOIN context cmpcontext on cmpcontext.id = campaign.context LEFT JOIN context processcontext on processcontext.id = campaign.context LEFT JOIN trunkgroup on campaign.san_trunkgroup_id=trunkgroup.id WHERE campaign.active_campaign=1 AND process.isActive = 1 AND campaign.dial_mode = "Predictive" AND campaign.`type` = "IVR" AND campaign.start_date<=CURDATE() AND campaign.end_date>=CURDATE() AND NOW() BETWEEN CONCAT(CURDATE(),'' '',campaign.start_time_hh,'':'',campaign.start_time_mm,'':00'') AND CONCAT(CURDATE(),'' '',campaign.end_time_hh,'':'',campaign.end_time_mm,'':00'') GROUP BY campaign.id ,process.id,acd_code ,process.name,process_setting.dial_no_random,campaign.dial_on_idle,acd_code,campaign.pref_dial_pre,campaign.type ,campaign.ivr_no,campaign.ivr_call,campaign.pacing,campaign.dyn_pacing,campaign.enable_agent_mapping,process_setting.cl_bc_agt_map, campaign.max_dial_tm,campaign.max_call_tm,campaign.caller_id,process.pro_reco_fld,campaign.context,process_setting.hide_ph_no_agt_screen ;','')); PREPARE stmt3 FROM @PDCampaignData; execute stmt3; DEALLOCATE PREPARE stmt3; SELECT @PDCampaignData; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getPDCampaignDataObj`; DELIMITER // CREATE PROCEDURE `getPDCampaignDataObj`() BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @maxcalldialed=(SELECT max_pd_call_dial FROM company); SET @PDCampaignData=CONCAT('SELECT campaign.id campaign_id,process.id Process_id,process.name Process_name,campaign.name Campaign_name, ifnull(process_setting.hide_ph_no_agt_screen,0) AS "san_hide_number",ifnull(process_setting.dial_no_random,0) as "dial_no_random",ifnull(campaign.max_PD_channel,0) as "max_pd_channel",ifnull(campaign.maxPDlist,1000) as "max_data_list",ifnull(campaign.minPDlist,100) as "min_data_list",ifnull(process_setting.dial_altrnt_no,0) as "dial_altrnt_no",process.pro_reco_fld AS"san_rec_folder", campaign.dial_on_idle,case when campaign.`type` = "IVR" then campaign.ivr_no else campaign.san_acd_code end acd_code,trunkgroup.name AS "Trunck_Group_Id", campaign.pref_dial_pre As "pref_dial_pre",campaign.type AS "campaign_type" ,campaign.ivr_no,ifnull(campaign.ivr_call,0) AS "ivr_call",campaign.pacing,campaign.dyn_pacing,campaign.enable_agent_mapping,process_setting.cl_bc_agt_map, campaign.max_dial_tm,campaign.max_call_tm, /* campaign.callerid_range caller_id,*/ concatenated_dids caller_id, IFNULL(cmpcontext.name,processcontext.name) AS "Context", case when campaign.`type` = "IVR" then campaign.ivr_call else 0 end as "TotalDialNo", ',@maxcalldialed,' as "CompanyMaxDial", DATE_FORMAT(campaign.start_date,"%Y-%m-%d") as "start_date",DATE_FORMAT(campaign.end_date,"%Y-%m-%d") as "end_date", CONCAT(campaign.start_time_hh,":",campaign.start_time_mm) as "start_time", CONCAT(campaign.end_time_hh,":",campaign.end_time_mm) as "end_time",2000 as timeout, answering_machine_detection FROM campaign JOIN process ON campaign.process_id=process.id JOIN process_setting ON process_setting.process_id=process.id LEFT JOIN context cmpcontext on cmpcontext.id=campaign.context LEFT JOIN context processcontext on processcontext.id=campaign.context LEFT JOIN trunkgroup on campaign.san_trunkgroup_id=trunkgroup.id LEFT JOIN (SELECT c.id,GROUP_CONCAT(concat(ifnull(c.caller_id_prefix,""),d.did)) AS concatenated_dids FROM campaign c JOIN did d ON FIND_IN_SET(d.id, c.caller_id) GROUP BY c.id) t ON t.id=campaign.id WHERE campaign.active_campaign=1 AND process.isActive=1 and campaign.dial_mode = "Predictive" ;'); PREPARE stmt3 FROM @PDCampaignData; execute stmt3; DEALLOCATE PREPARE stmt3; SELECT @PDCampaignData; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getPDDialingData`; DELIMITER // CREATE PROCEDURE `getPDDialingData`( IN `pid` VARCHAR(10), IN `cid` VARCHAR(10), IN `calllimit` VARCHAR(5) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @Mastertab=''; SET @PhoneNo=''; SET @Callingorder=''; SET @RecFile_Name=''; SET @AlternateNo=''; SET @client_id=''; SET @check_dnc=''; SET @IsRendome=''; SET @dialalternateno=''; SET @Mastertab=CONCAT('process_table_',pid) ; SET @PhoneNo=(SELECT formbuilder_field.field_name FROM formbuilder_field join process on formbuilder_field.form_id=process.form_id WHERE process.id=pid and ifnull(formbuilder_field.primary_phone_no,0)=1 AND formbuilder_field.data_type='Phone' LIMIT 1); SET @Callingorder=(SELECT GROUP_CONCAT( CONCAT('T1.' ,formbuilder_field.field_name,' ',formbuilder_field.order_by) ) FROM formbuilder_field join process on formbuilder_field.form_id=process.form_id WHERE process.id=pid ); SET @RecFile_Name=(SELECT replace(group_concat(CONCAT('ifnull(T1.',formbuilder_field.field_name,',"")')),'),','),"_",') FROM formbuilder_field join process on formbuilder_field.form_id=process.form_id WHERE process.id=pid and ifnull(formbuilder_field.add_in_recording_file,0)=1); SELECT client_id,ifnull(check_dnc,0),ifnull(process_setting.dial_no_random,0),ifnull(process_setting.dial_altrnt_no,0) INTO @client_id,@check_dnc,@IsRendome,@dialalternateno FROM process LEFT JOIN process_setting ON process.id=process_setting.process_id WHERE process.id=pid LIMIT 1; SET @AlternateNo = case when @dialalternateno=1 then (SELECT group_concat(CONCAT('if(ifnull(T1.',formbuilder_field.field_name,','''')="",''''',',CONCAT(",",T1.',formbuilder_field.field_name,'))')) FROM formbuilder_field join process on formbuilder_field.form_id=process.form_id WHERE process.id=pid AND ifnull(formbuilder_field.primary_phone_no,0)=0 and formbuilder_field.data_type='Phone') ELSE 0 END; IF IFNULL(@PhoneNo,'')!='' THEN DROP TABLE if EXISTS tempimportmaster; SET @importquery = CONCAT('create temporary table tempimportmaster as select * from importmaster_',pid,' where id > 1 AND (IFNULL(active_file,0)=1 OR (IFNULL(active_file,0)=0 and IFNULL(retain_callback,0)=1)) AND mark_for_deletion=0 AND ( valid_upto is null OR valid_upto>=now())'); #SELECT @importquery; PREPARE stmt4 FROM @importquery; execute stmt4; DEALLOCATE PREPARE stmt4; SET @query1 =CONCAT('SELECT T1.Id Master_id,T2.map_id ,concat(',case when IFNULL(@AlternateNo,'')='' then CONCAT("case when IFNULL(T2.CallAgainNo,'''')!='''' then T2.CallAgainNo else T1.",@PhoneNo,' END') else CONCAT("case when IFNULL(T2.CallAgainNo,'''')!='''' then T2.CallAgainNo else T1.",@PhoneNo,' end',',',@AlternateNo) END,') Phone_No,T2.campaign_id,T2.agent_id,',case when @RecFile_Name IS NOT NULL then CONCAT('Concat(',@RecFile_Name,')') ELSE ' "" ' END,' recfile_name,T1.san_unique_id,IFNULL(isDNC,0) as isDNC, T3.id fileid,T3.file_name,T3.priority,',IFNULL(@Callingorder,'""'),' Callingorder from ',@Mastertab,' AS T1 JOIN campaign_mapping_',pid,' AS T2 on T1.id=T2.master_id JOIN tempimportmaster AS T3 on T3.id=T2.FileId JOIN campaign on campaign.id=T2.campaign_id ',case when @check_dnc=1 then CONCAT(' LEFT JOIN dnd_',@client_id,' t4 ON T1.',@PhoneNo,'=t4.phone_no AND t4.process_id=',pid,' AND t4.campaign_id=',cid) ELSE "" END,' WHERE T2.dialed=0 AND IFNULL(T2.DoNotCall,0)=0 AND IFNULL(T2.StopCalling,0)=0 AND IFNULL(T2.MapToAgent,0)=0 /*AND (T2.CallAgainTimeNOW())) ') ELSE "" END,' ORDER BY T3.priority,',Case when IFNULL(@Callingorder,'')!='' then Concat(@Callingorder ,' ,T2.NoOfAttempts ASC ') else ' T2.NoOfAttempts ASC ' END ,Case when @IsRendome='1' then ',Rand() asc ' else ' ' END , ' LIMIT ',calllimit,' ; '); ELSE SET @query1 = ' SELECT "" Master_id,"" map_id,"" PhoneNO,"" campaign_id,"" agent_id,"" recfile_name,"" san_unique_id Limit 0;'; END IF; #SELECT @query1; PREPARE stmt3 FROM @query1; execute stmt3; DEALLOCATE PREPARE stmt3; DROP TABLE if EXISTS tempimportmaster; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_CDRData`; DELIMITER // CREATE PROCEDURE `get_CDRData`( IN `ReportType` VARCHAR(50), IN `PID` VARCHAR(50), IN `team_leader_id` INT, IN `camp_ids` VARCHAR(50) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len=1000000; SET @clientid=(SELECT group_concat(ifnull(client_id,0)) FROM process WHERE id IN (pid)); SET @CdrData=CONCAT('SELECT ',Case when ReportType='CampainWise' then ' campaign.name `CampaignName`,campaign.id `Campaign_Id`, campaign.san_acd_code acd_code, ' ELSE '' END, ' group_concat(distinct campaign.Process_id) `Process_Id`, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)`Offered_Call`, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)`Ans_Call`, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)`Abn_Call`, Round(ifnull((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)*100)/NULLIF((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)),0),0),2) `drop_per`, Round(ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' and TIMESTAMPDIFF(SECOND,acd_time,end_time)<=5 then 1 ELSE 0 END),0),2) `drop_in_5_sec`, Round(ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 6 AND 10 then 1 ELSE 0 END),0),2) `drop_in_10_sec`, Round(ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 15 then 1 ELSE 0 END),0),2) `drop_in_15_sec`, ROUND(ifnull(((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END))*100.0)/(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)),0),2)`SLA`, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END)`Outgoing_Call`, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)`Con_Outgoing`, round(ifnull((Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)*100)/nullif(Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END),0),0),2) `connectivity_per`, SEC_TO_TIME(round(IFNULL(SUM(duration)/nullif(sum(Case when exten_ans_time is not null and cdr.connected>0 then 1 ELSE 0 END),0),0),0))`AHT`, SEC_TO_TIME(round(IFNULL(Sum(Case when exten_ans_time is not null then TIMESTAMPDIFF(second,exten_ans_time,end_time) ELSE 0 END)/nullif(sum(Case when exten_ans_time is not null and cdr.connected>0 then 1 ELSE 0 END),0),0),0))`ATT`, SEC_TO_TIME(round(IFNULL(Sum(Wrapup_duration)/ifnull(Count(Wrapup_duration),0),0),0)) Avg_Wrapup_Time, COUNT(DISTINCT case when call_type="Incoming" then cdr.caller_id END) Incoming, COUNT(DISTINCT case when call_type="Outgoing" then cdr.caller_id END) Outgoing FROM /*cdr_',@clientid,'*/ cdrtemp cdr LEFT JOIN campaign ON cdr.campaign_id=campaign.id LEFT JOIN `process` ON `process`.`id`=`cdr`.`process_id` LEFT JOIN `trunk` ON cdr.trunk_channel=`trunk`.name LEFT JOIN agent on cdr.agent=agent.name WHERE 1=1 and end_call=1 and Start_time>=curdate() AND ifnull(cdr.out_call_type,"")!="TR" AND ifnull(campaign.NAME,"")!="" ',Case when IFNULL(PID,"")!="" then CONCAT(' AND campaign.Process_id in (',PID,') ') ELSE ' ' END,case when IFNULL(team_leader_id,0)>0 then CONCAT(' AND ((ifnull(cdr.agent,"")="" AND ifnull(cdr.exten,"")="" ) OR (ifnull(cdr.agent,"")!="" AND agent.team_leader="',team_leader_id,'" ) ) ')ELSE '' END , ' ',case when ifnull(camp_ids,'')!='' then CONCAT(' AND campaign.id in (',camp_ids,')') ELSE '' end,' ',Case when ReportType='CampainWise' then 'GROUP BY campaign.name,campaign.san_acd_code,campaign.id,campaign.Process_id ' ELSE ' /*campaign.Process_id*/' END); PREPARE getcdrdata FROM @CdrData; execute getcdrdata; DEALLOCATE PREPARE getcdrdata; #SELECT @CdrData; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_CDRReport`; DELIMITER // CREATE PROCEDURE `get_CDRReport`( IN `Clintid` INT, IN `Fromdate` VARCHAR(20), IN `Todate` VARCHAR(20), IN `cond` VARCHAR(500), IN `ReportType` VARCHAR(100), IN `IsCount` INT, IN `Orderby` VARCHAR(300), IN `PageLimit` VARCHAR(50), IN `IsExportReport` VARCHAR(50), IN `ReportFIlePath` VARCHAR(100), IN `tl_id` VARCHAR(100), IN `hide_phone_no` INT, IN `Durn` VARCHAR(20) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; if ( DATEDIFF(Todate,Fromdate)<=60) then SET @query1=NULL; If (SELECT 1 FROM client_master WHERE id=Clintid LIMIT 1)=1 Then SET @CdrTable=case when (LEFT(Fromdate,10)=CURDATE() AND LEFT(Todate,10)=CURDATE()) then 'cdrtemp' ELSE CONCAT('cdr_',ifnull(Clintid,0)) end; SET @hide_phone_no=hide_phone_no; SET @LinkedIdALLData=CONCAT(' FROM ',@CdrTable,' cdr LEFT JOIN campaign ON cdr.campaign_id=campaign.id LEFT JOIN `process` ON `process`.`id`=`cdr`.`process_id`LEFT JOIN `trunk`ON cdr.trunk_channel=`trunk`.name left join hangupclause on hangupclause.code=cdr.cause LEFT JOIN agent on cdr.agent=agent.name LEFT JOIN user on user.id=agent.team_leader WHERE 1=1 ',case when ifnull(Fromdate,'') then CONCAT(' and Start_time>="',FromDate,'" ') ELSE '' END,case when ifnull(ToDate,'') then CONCAT(' and Start_time<="',ToDate,'" ') ELSE ''END,ifnull(cond,''), case when IFNULL(tl_id,'')='' then '' else CONCAT(' and user.id="',tl_id,'"') END,case when @CdrTable='cdrtemp' then CONCAT(' and cdr.cid=',Clintid,'') ELSE '' END); SET @LinkedIdLastData=CONCAT(' FROM ',@CdrTable,' cdr /*JOIN (select max(id)lastid,linked_id from ',@CdrTable,' where 1=1 ',case when ifnull(Fromdate,'') then CONCAT(' and Start_time>="',FromDate,'" ') ELSE '' END,case when ifnull(ToDate,'') then CONCAT(' and Start_time<="',ToDate,'" ') ELSE '' END,' group by linked_id ) Last_CDR on Last_CDR.lastid=cdr.id */ ',case when ReportType='Trunk Billed Summary' then ' JOIN extension on cdr.exten=extension.extension_no ' ELSE '' END ,' LEFT JOIN campaign ON cdr.campaign_id=campaign.id LEFT JOIN `process` ON `process`.`id`=`cdr`.`process_id` LEFT JOIN `trunk`ON cdr.trunk_channel=`trunk`.name left join hangupclause on hangupclause.code=cdr.cause LEFT JOIN agent on cdr.agent=agent.name LEFT JOIN user on user.id=agent.team_leader WHERE 1=1 and end_call=1 AND ifnull(cdr.out_call_type,"")!="TR" AND ifnull(campaign.name,"")!="" ',case when ifnull(Fromdate,'') then CONCAT(' and Start_time>="',FromDate,'" ') ELSE '' END,case when ifnull(ToDate,'') then CONCAT(' and Start_time<="',ToDate,'" ') ELSE ''END,ifnull(cond,''), case when IFNULL(tl_id,'')='' then '' else CONCAT('and user.id="',tl_id,'"') END,case when @CdrTable='cdrtemp' then CONCAT(' and cdr.cid=',Clintid,'') ELSE '' END); If (ReportType ='Date Wise CDR' OR ReportType ='Queue Wise CDR' OR ReportType ='Extension Wise CDR') Then If IsCount=1 then SET @SelectVar ='SELECT Count(1) LogCount '; ELSE SET @SelectVar =' SELECT cdr.exten "Exten",cdr.did "DID_No",Concat(campaign.name,"-",ifnull(cdr.acd,""))"Group_Name", /*cdr.caller_id*/IF(@hide_phone_no = 1, CONCAT("******", RIGHT(cdr.caller_id, 4)), cdr.caller_id) as "Called_No",Start_time,cdr.end_time"End_Time", case when exten_ring_time IS NOT NULL AND exten_ans_time IS NOT NULL AND exten_ring_time<=exten_ans_time THEN SEC_TO_TIME(TIMESTAMPDIFF(second, exten_ring_time, exten_ans_time)) when exten_ring_time IS NOT NULL AND exten_ans_time IS NULL THEN SEC_TO_TIME(TIMESTAMPDIFF(second, exten_ring_time, end_time )) ELSE "00:00:00" end AS "Ring_Durn",Case when call_type="Outgoing" then "00:00:00" ELSE SEC_TO_TIME(TIMESTAMPDIFF(second, start_time, case when acd_time IS NOT NULL and acd_time!="0000-00-00 00:00:00" then acd_time when (acd_time IS NULL or acd_time="0000-00-00 00:00:00") and exten_ring_time IS NOT NULL THEN exten_ring_time else end_time end)) end AS "IVR_Dur", case when acd_time IS NOT NULL AND acd_time!="0000-00-00 00:00:00" AND exten_ring_time IS NOT NULL and acd_time<=exten_ring_time THEN SEC_TO_TIME(TIMESTAMPDIFF(second, acd_time, exten_ring_time)) when acd_time IS NOT NULL and acd_time!="0000-00-00 00:00:00" AND (exten_ring_time IS NULL or ( exten_ring_time IS NOT NULL and acd_time>exten_ring_time)) AND exten_ans_time IS NOT NULL THEN SEC_TO_TIME(TIMESTAMPDIFF(second, acd_time, exten_ans_time)) when acd_time IS NOT NULL AND acd_time!="0000-00-00 00:00:00" AND (exten_ring_time IS NULL or ( exten_ring_time IS NOT NULL and acd_time>exten_ring_time)) AND exten_ans_time IS NULL THEN SEC_TO_TIME(TIMESTAMPDIFF(second, acd_time, end_time)) ELSE "00:00:00" end AS "Queue_Durn", Case when exten_ans_time is not null then SEC_TO_TIME(TIMESTAMPDIFF(second, exten_ans_time,end_time)) ELSE "00:00:00" end AS "Agent_Durn",case when sec_to_time(hold_duration) IS NULL then "00:00:00" else sec_to_time(hold_duration) END "Hold_Durn", SEC_TO_TIME(duration) AS "Durn",case when Ifnull(cdr.connected,0)>0 then "C" ELSE "M" END "C/M", case when acd_time is not null and exten_ans_time IS NULL and exten_ring_time is not null THEN "Agent Missed" when exten_ans_time is NOT NULL or (call_type="Outgoing" and exten_ring_time is not null) THEN "Agent" when exten_ans_time IS NULL and (acd_time IS NULL or acd_time="0000-00-00 00:00:00" or acd_time="") AND call_type="Incoming" THEN "IVR" when (acd_time IS NOT NULL and acd_time!="0000-00-00 00:00:00") and exten_ans_time is NULL THEN "Queue" ELSE "" end AS "Call_End_At", cdr.agent "Agent Name", CONCAT(user.first_name," ",user.last_name) "Team Leader",IFNULL(trunk.display_name,cdr.trunk_channel) "Trunk_No", hangupclause.name AS "Cause" ,dtmf AS "DTMF",feedback as "Feedback",call_type AS "Call_Type" ,case when agent_disconnect is NOT NULL and agent_disconnect=1 then "A" WHEN ((agent_disconnect=0 and agent_disconnect IS NOT NULL) or agent_disconnect IS NULL) THEN "C" else "" end AS "A/C" ,acd AS "ACD",cdr.linked_id AS "Linked_ID",cdr.userfield AS "User_Field",cdr.ivr_name AS "IVR_Name" '; END If; SET @SelectVar1 =' SELECT "Exten" as "Exten","DID_No" as "DID_No","Group" As "Group","Called_No" as "Called_No","Start_Time" As "Start_Time","End_Time" AS "End_Time","Ring_Durn" AS "Ring_Durn","IVR_Dur" AS "IVR_Dur","Queue_Durn" AS "Queue_Durn","Agent_Durn" AS "Agent_Durn","Hold_Durn" AS "Hold_Durn","Durn" AS "Durn","C/M" AS "C/M","Call_End_At" AS "Call_End_At","Agent_Name" As "Agent_Name","Team_Leader" AS "Team_Leader","Trunk_No" AS "Trunk_No","Cause" AS "Cause" ,"DTMF" AS "DTMF","FEEDBACK" AS "FEEDBACK","Call_Type" AS "Call_Type","A/C" AS "A/C","ACD" AS "ACD","Linked_ID" AS "Linked_ID","User_Field" AS "User_Field","IVR_Name" AS "IVR_Name" Union ALL( '; SET @ExterWhereCond=' AND ifnull(cdr.exten,"")!="" '; SET @ExtenWiseOrderVar=CONCAT(' Order by cdr.exten asc ',Case when ifnull(Orderby,'')!='' then CONCAT(' , ',Orderby) ELSE ' , cdr.Start_time asc' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END ); SET @TableVar= Concat(Case when ReportType='Date Wise CDR' then @LinkedIdALLData else @LinkedIdLastData END,case when ReportType='Extension Wise CDR' then @ExterWhereCond ELSE "" END ); SET @OtherOrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' Order By cdr.Id desc' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); SET @OrderVar= Case when ReportType='Extension Wise CDR' then @ExtenWiseOrderVar ELSE @OtherOrderVar END; SET @GroupRec=''; END if; If ReportType='DID Wise Summary' Then If IsCount=1 then SET @SelectVar ='SELECT Count(Distinct cdr.did) LogCount'; ELSE SET @SelectVar =' SELECT cdr.did "DID_No",COUNT(1)Total_Call,Sum(case when cdr.exten_ans_time IS NULL then 1 ELSE 0 END)Total_Missed, Sum(case when (acd_time="0000-00-00 00:00:00" or acd_time IS NULL) then 1 ELSE 0 END)IVR_Missed, Sum(case when acd_time IS NOT NULL AND acd_time!="0000-00-00 00:00:00" AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)Queue_Missed, Sum(case when cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END) "Ans", ROUND((Sum(case when (acd_time IS null or acd_time="0000-00-00 00:00:00")then 1 ELSE 0 END)*100.0)/COUNT(1),2) "IVR_Missed%", ROUND((Sum(case when acd_time IS NOT NULL AND acd_time!="0000-00-00 00:00:00" AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)*100.0)/COUNT(1),2)"Queue_Missed%", ROUND((Sum(case when cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END)*100.0)/COUNT(1),2) "Ans%", ROUND((Sum(case when cdr.exten_ans_time IS NULL then 1 ELSE 0 END)*100.0)/COUNT(1),2) "Total_Missed%"'; END If; SET @SelectVar1 =' SELECT "DID_No" as "DID_No","Total_Call" AS "Total_Call","Total_Missed" AS "Total_Missed","IVR_Missed" AS "IVR_Missed","Queue_Missed" AS "Queue_Missed","Ans" AS "Ans","IVR_Missed%" AS "IVR_Missed%","Queue_Missed%" AS "Queue_Missed%","Ans%" AS "Ans%", "Total_Missed%" AS "Total_Missed%" Union ALL ( '; SET @GroupRec='Group by cdr.did '; SET @ExterWhereCond=' AND call_type="Incoming" AND Ifnull(cdr.did,"")!="" '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END if ; If ReportType='Campaign Wise Summary' Then If IsCount=1 then SET @SelectVar ='SELECT Count(Distinct campaign.name) LogCount'; ELSE SET @SelectVar =' SELECT CONCAT(campaign.name,"-",campaign.san_acd_code) "Campaign_Name",sum(Case when acd_time IS NULL AND call_type="Outgoing" then 1 ELSE 0 END )Total_Dialed, SUM(Case when acd_time IS NULL AND call_type="Outgoing" AND connected="1" then 1 ELSE 0 END )Total_Connected_Dialed, SEC_TO_TIME(SUM(Case when acd_time IS NULL AND call_type="Outgoing" AND connected="1" then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END ))Connected_Dialed_Time, ROUND(ifnull((Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)*100)/Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END),0),2) `Connectivity%`, SUM(Case when acd_time IS NOT NULL then 1 ELSE 0 END )Total_Offered_Call, SUM(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END) Total_Answer_Call, SEC_TO_TIME(SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))Answer_Call_Time, SEC_TO_TIME(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0))AS "AVG_Answer_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Min_Answer_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Max_Answer_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END)*100.0)/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Answer_Call_%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time)<=10 Then 1 ELSE 0 END) AS "Answer_STE_1_With_IN_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Answer_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Answer_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Answer_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Answer_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Answer_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) >60 Then 1 ELSE 0 END) AS "Answer_STE_7_Greater_Then_60_Sec" , SUM(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)Total_Abndon_Call, SEC_TO_TIME(ifnull(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),0))AS "AVG_Abndon_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Min_Abndon_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Max_Abndon_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)*100.0)/nullif(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Abndon_Call%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time)<=5 Then 1 ELSE 0 END) AS Abndon_STE_With_IN_5_Sec, SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 6 AND 10 Then 1 ELSE 0 END) AS "Abndon_STE_1_Between_5_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Abndon_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Abndon_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Abndon_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Abndon_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Abndon_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) >60 Then 1 ELSE 0 END) AS "Abndon_STE_7_Greater_Then_60_Sec"'; END If; SET @SelectVar1 =' SELECT "Campaign_Name" AS "Campaign_Name","Total_Dialed" AS "Total_Dialed","Total_Connected_Dialed" AS "Total_Connected_Dialed","Connectivity%","Connected_Dialed_Time" AS "Connected_Dialed_Time","Total_Offered_Call" AS "Total_Offered_Call","Total_Answer_Call" AS "Total_Answer_Call","Answer_Call_Time" AS "Answer_Call_Time","AVG_Answer_Call_Time" AS "AVG_Answer_Call_Time","Min_Answer_Call_Time" AS "Min_Answer_Call_Time","Max_Answer_Call_Time" AS "Max_Answer_Call_Time", "Answer_Call_%" AS "Answer_Call_%","Answer_STE_1_With_IN_10_Sec" AS "Answer_STE_1_With_IN_10_Sec", "Answer_STE_2_Between_10_20_Sec" AS "Answer_STE_2_Between_10_20_Sec", "Answer_STE_3_Between_20_30_Sec" AS "Answer_STE_3_Between_20_30_Sec", "Answer_STE_4_Between_30_40_Sec" AS "Answer_STE_4_Between_30_40_Sec","Answer_STE_5_Between_40_50_Sec" AS "Answer_STE_5_Between_40_50_Sec", "Answer_STE_6_Between_50_60_Sec" AS "Answer_STE_6_Between_50_60_Sec", "Answer_STE_7_Greater_Then_60_Sec" AS "Answer_STE_7_Greater_Then_60_Sec" , "Total_Abndon_Call" AS "Total_Abndon_Call","AVG_Abndon_Call_Time" AS "AVG_Abndon_Call_Time","Min_Abndon_Call_Time" AS "Min_Abndon_Call_Time","Max_Abndon_Call_Time"AS "Max_Abndon_Call_Time" ,"Abndon_Call%" AS "Abndon_Call%","Abndon_STE_With_IN_5_Sec" AS Abndon_STE_With_IN_5_Sec,"Abndon_STE_1_Between_5_10_Sec" AS "Abndon_STE_1_Between_5_10_Sec","Abndon_STE_2_Between_10_20_Sec" AS "Abndon_STE_2_Between_10_20_Sec","Abndon_STE_3_Between_20_30_Sec" AS "Abndon_STE_3_Between_20_30_Sec","Abndon_STE_4_Between_30_40_Sec" AS "Abndon_STE_4_Between_30_40_Sec","Abndon_STE_5_Between_40_50_Sec" AS "Abndon_STE_5_Between_40_50_Sec","Abndon_STE_6_Between_50_60_Sec" AS "Abndon_STE_6_Between_50_60_Sec","Abndon_STE_7_Greater_Then_60_Sec" AS "Abndon_STE_7_Greater_Then_60_Sec" Union ALL ( '; SET @GroupRec=' Group by CONCAT(campaign.name,"-",campaign.san_acd_code) '; SET @ExterWhereCond=' AND cdr.campaign_id IS NOT NULL '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END If; If ReportType='Campaign Date Wise Summary' Then If IsCount=1 then SET @SelectVar ='SELECT count(distinct CONCAT(campaign.name,DATE(start_time))) LogCount'; ELSE SET @SelectVar =' SELECT CONCAT(campaign.name,"-",campaign.san_acd_code) "Campaign_Name",DATE_FORMAT(start_time,"%d-%m-%Y") "Date",sum(Case when acd_time IS NULL AND call_type="Outgoing" then 1 ELSE 0 END )Total_Dialed, SUM(Case when acd_time IS NULL AND call_type="Outgoing" AND connected="1" then 1 ELSE 0 END )Total_Connected_Dialed, SEC_TO_TIME(SUM(Case when acd_time IS NULL AND call_type="Outgoing" AND connected="1" then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END ))Connected_Dialed_Time, ROUND(ifnull((Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)*100)/Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END),0),2) `Connectivity%`, SUM(Case when acd_time IS NOT NULL then 1 ELSE 0 END )Total_Offered_Call, SUM(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END) Total_Answer_Call, SEC_TO_TIME(SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))Answer_Call_Time, SEC_TO_TIME(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0))AS "AVG_Answer_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Min_Answer_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Max_Answer_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END)*100.0)/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Answer_Call_%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time)<=10 Then 1 ELSE 0 END) AS "Answer_STE_1_With_IN_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Answer_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Answer_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Answer_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Answer_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Answer_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) >60 Then 1 ELSE 0 END) AS "Answer_STE_7_Greater_Then_60_Sec" , SUM(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)Total_Abndon_Call, SEC_TO_TIME(ifnull(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),0))AS "AVG_Abndon_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Min_Abndon_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Max_Abndon_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)*100.0)/nullif(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Abndon_Call%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time)<=5 Then 1 ELSE 0 END) AS Abndon_STE_With_IN_5_Sec, SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 6 AND 10 Then 1 ELSE 0 END) AS "Abndon_STE_1_Between_5_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Abndon_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Abndon_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Abndon_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Abndon_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Abndon_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) >60 Then 1 ELSE 0 END) AS "Abndon_STE_7_Greater_Then_60_Sec"'; END If; SET @SelectVar1 =' SELECT "Campaign_Name" AS "Campaign_Name","Date" AS "Date","Total_Dialed" AS "Total_Dialed","Total_Connected_Dialed" AS "Total_Connected_Dialed","Connectivity%","Connected_Dialed_Time" AS "Connected_Dialed_Time","Total_Offered_Call" AS "Total_Offered_Call","Total_Answer_Call" AS "Total_Answer_Call","Answer_Call_Time" AS "Answer_Call_Time","AVG_Answer_Call_Time" AS "AVG_Answer_Call_Time","Min_Answer_Call_Time" AS "Min_Answer_Call_Time","Max_Answer_Call_Time" AS "Max_Answer_Call_Time", "Answer_Call_%" AS "Answer_Call_%","Answer_STE_1_With_IN_10_Sec" AS "Answer_STE_1_With_IN_10_Sec", "Answer_STE_2_Between_10_20_Sec" AS "Answer_STE_2_Between_10_20_Sec", "Answer_STE_3_Between_20_30_Sec" AS "Answer_STE_3_Between_20_30_Sec", "Answer_STE_4_Between_30_40_Sec" AS "Answer_STE_4_Between_30_40_Sec","Answer_STE_5_Between_40_50_Sec" AS "Answer_STE_5_Between_40_50_Sec", "Answer_STE_6_Between_50_60_Sec" AS "Answer_STE_6_Between_50_60_Sec", "Answer_STE_7_Greater_Then_60_Sec" AS "Answer_STE_7_Greater_Then_60_Sec" , "Total_Abndon_Call" AS "Total_Abndon_Call","AVG_Abndon_Call_Time" AS "AVG_Abndon_Call_Time","Min_Abndon_Call_Time" AS "Min_Abndon_Call_Time","Max_Abndon_Call_Time"AS "Max_Abndon_Call_Time" ,"Abndon_Call%" AS "Abndon_Call%","Abndon_STE_With_IN_5_Sec" AS Abndon_STE_With_IN_5_Sec,"Abndon_STE_1_Between_5_10_Sec" AS "Abndon_STE_1_Between_5_10_Sec","Abndon_STE_2_Between_10_20_Sec" AS "Abndon_STE_2_Between_10_20_Sec","Abndon_STE_3_Between_20_30_Sec" AS "Abndon_STE_3_Between_20_30_Sec","Abndon_STE_4_Between_30_40_Sec" AS "Abndon_STE_4_Between_30_40_Sec","Abndon_STE_5_Between_40_50_Sec" AS "Abndon_STE_5_Between_40_50_Sec","Abndon_STE_6_Between_50_60_Sec" AS "Abndon_STE_6_Between_50_60_Sec","Abndon_STE_7_Greater_Then_60_Sec" AS "Abndon_STE_7_Greater_Then_60_Sec" Union ALL ( '; SET @GroupRec=' Group by CONCAT(campaign.name,"-",campaign.san_acd_code),DATE(start_time),DATE_FORMAT(start_time,"%d-%m-%Y") '; SET @ExterWhereCond=' AND cdr.campaign_id IS NOT NULL '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END If; If ReportType='Campaign Time Wise Summary' Then if IFNULL(durn,"")>0 then If IsCount=1 then SET @SelectVar =CONCAT('SELECT count(distinct CONCAT(campaign.name,CONCAT(Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),":", Case When LENGTH(MINUTE(start_time)-(MINUTE(start_time)%',Durn,'))<2 Then "0" ELSE "" END,(MINUTE(start_time)-(MINUTE(start_time)%',Durn,')),"-", DATE_FORMAT(DATE_ADD((CONCAT(DATE(start_time)," ",Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),":", Case When LENGTH(MINUTE(start_time)-(MINUTE(start_time)%',Durn,'))<2 Then "0" ELSE "" END,(MINUTE(start_time)-(MINUTE(start_time)%',Durn,')),":00")),INTERVAL ',Durn,' MINUTE),"%H:%i")))) LogCount '); ELSE SET @SelectVar =CONCAT(' SELECT CONCAT(campaign.name,"-",campaign.san_acd_code) "Campaign_Name", CONCAT(Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),"-",Case When LENGTH(HOUR(start_time)+1)<2 Then "0" ELSE "" END,HOUR(start_time)+1) AS `Time`, CONCAT(Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),":", Case When LENGTH(MINUTE(start_time)-(MINUTE(start_time)%',Durn,'))<2 Then "0" ELSE "" END,(MINUTE(start_time)-(MINUTE(start_time)%',Durn,')),"-", DATE_FORMAT(DATE_ADD((CONCAT(DATE(start_time)," ",Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),":", Case When LENGTH(MINUTE(start_time)-(MINUTE(start_time)%',Durn,'))<2 Then "0" ELSE "" END,(MINUTE(start_time)-(MINUTE(start_time)%',Durn,')),":00")),INTERVAL ',Durn,' MINUTE),"%H:%i")) Duration, sum(Case when acd_time IS NULL AND call_type="Outgoing" then 1 ELSE 0 END )Total_Dialed, SUM(Case when acd_time IS NULL AND call_type="Outgoing" AND connected="1" then 1 ELSE 0 END )Total_Connected_Dialed, SEC_TO_TIME(SUM(Case when acd_time IS NULL AND call_type="Outgoing" AND connected="1" then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END ))Connected_Dialed_Time, ROUND(ifnull((Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)*100)/Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END),0),2) `Connectivity%`, SUM(Case when acd_time IS NOT NULL then 1 ELSE 0 END )Total_Offered_Call, SUM(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END) Total_Answer_Call, SEC_TO_TIME(SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))Answer_Call_Time, SEC_TO_TIME(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0))AS "AVG_Answer_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Min_Answer_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Max_Answer_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END)*100.0)/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Answer_Call_%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time)<=10 Then 1 ELSE 0 END) AS "Answer_STE_1_With_IN_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Answer_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Answer_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Answer_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Answer_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Answer_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) >60 Then 1 ELSE 0 END) AS "Answer_STE_7_Greater_Then_60_Sec" , SUM(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)Total_Abndon_Call, SEC_TO_TIME(ifnull(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),0))AS "AVG_Abndon_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Min_Abndon_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Max_Abndon_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)*100.0)/nullif(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Abndon_Call%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time)<=5 Then 1 ELSE 0 END) AS Abndon_STE_With_IN_5_Sec, SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 6 AND 10 Then 1 ELSE 0 END) AS "Abndon_STE_1_Between_5_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Abndon_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Abndon_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Abndon_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Abndon_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Abndon_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) >60 Then 1 ELSE 0 END) AS "Abndon_STE_7_Greater_Then_60_Sec"'); END If; SET @SelectVar1 =' SELECT "Campaign_Name" AS "Campaign_Name","Time" AS "Time","Duration" AS "Duration","Total_Dialed" AS "Total_Dialed","Total_Connected_Dialed" AS "Total_Connected_Dialed","Connectivity%","Connected_Dialed_Time" AS "Connected_Dialed_Time","Total_Offered_Call" AS "Total_Offered_Call","Total_Answer_Call" AS "Total_Answer_Call","Answer_Call_Time" AS "Answer_Call_Time","AVG_Answer_Call_Time" AS "AVG_Answer_Call_Time","Min_Answer_Call_Time" AS "Min_Answer_Call_Time","Max_Answer_Call_Time" AS "Max_Answer_Call_Time", "Answer_Call_%" AS "Answer_Call_%","Answer_STE_1_With_IN_10_Sec" AS "Answer_STE_1_With_IN_10_Sec", "Answer_STE_2_Between_10_20_Sec" AS "Answer_STE_2_Between_10_20_Sec", "Answer_STE_3_Between_20_30_Sec" AS "Answer_STE_3_Between_20_30_Sec", "Answer_STE_4_Between_30_40_Sec" AS "Answer_STE_4_Between_30_40_Sec","Answer_STE_5_Between_40_50_Sec" AS "Answer_STE_5_Between_40_50_Sec", "Answer_STE_6_Between_50_60_Sec" AS "Answer_STE_6_Between_50_60_Sec", "Answer_STE_7_Greater_Then_60_Sec" AS "Answer_STE_7_Greater_Then_60_Sec" , "Total_Abndon_Call" AS "Total_Abndon_Call","AVG_Abndon_Call_Time" AS "AVG_Abndon_Call_Time","Min_Abndon_Call_Time" AS "Min_Abndon_Call_Time","Max_Abndon_Call_Time"AS "Max_Abndon_Call_Time" ,"Abndon_Call%" AS "Abndon_Call%","Abndon_STE_With_IN_5_Sec" AS Abndon_STE_With_IN_5_Sec,"Abndon_STE_1_Between_5_10_Sec" AS "Abndon_STE_1_Between_5_10_Sec","Abndon_STE_2_Between_10_20_Sec" AS "Abndon_STE_2_Between_10_20_Sec","Abndon_STE_3_Between_20_30_Sec" AS "Abndon_STE_3_Between_20_30_Sec","Abndon_STE_4_Between_30_40_Sec" AS "Abndon_STE_4_Between_30_40_Sec","Abndon_STE_5_Between_40_50_Sec" AS "Abndon_STE_5_Between_40_50_Sec","Abndon_STE_6_Between_50_60_Sec" AS "Abndon_STE_6_Between_50_60_Sec","Abndon_STE_7_Greater_Then_60_Sec" AS "Abndon_STE_7_Greater_Then_60_Sec" Union ALL ( '; SET @GroupRec=CONCAT(' Group by CONCAT(campaign.name,"-",campaign.san_acd_code),CONCAT(Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),"-",Case When LENGTH(HOUR(start_time)+1)<2 Then "0" ELSE "" END,HOUR(start_time)+1) ',if(ifnull(durn,"")>0,CONCAT(',CONCAT(Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),":", Case When LENGTH(MINUTE(start_time)-(MINUTE(start_time)%',Durn,'))<2 Then "0" ELSE "" END,(MINUTE(start_time)-(MINUTE(start_time)%',Durn,')),"-", DATE_FORMAT(DATE_ADD((CONCAT(DATE(start_time)," ",Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),":", Case When LENGTH(MINUTE(start_time)-(MINUTE(start_time)%',Durn,'))<2 Then "0" ELSE "" END,(MINUTE(start_time)-(MINUTE(start_time)%',Durn,')),":00")),INTERVAL ',Durn,' MINUTE),"%H:%i"))'),""),' '); SET @ExterWhereCond=' AND cdr.campaign_id IS NOT NULL '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); ELSE If IsCount=1 then SET @SelectVar ='SELECT count(distinct CONCAT(campaign.name,Hour(start_time))) LogCount'; ELSE SET @SelectVar =' SELECT CONCAT(campaign.name,"-",campaign.san_acd_code) "Campaign_Name", CONCAT(Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),"-",Case When LENGTH(HOUR(start_time)+1)<2 Then "0" ELSE "" END,HOUR(start_time)+1) AS `Time`, sum(Case when acd_time IS NULL AND call_type="Outgoing" then 1 ELSE 0 END )Total_Dialed, SUM(Case when acd_time IS NULL AND call_type="Outgoing" AND connected="1" then 1 ELSE 0 END )Total_Connected_Dialed, SEC_TO_TIME(SUM(Case when acd_time IS NULL AND call_type="Outgoing" AND connected="1" then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END ))Connected_Dialed_Time, ROUND(ifnull((Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)*100)/Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END),0),2) `Connectivity%`, SUM(Case when acd_time IS NOT NULL then 1 ELSE 0 END )Total_Offered_Call, SUM(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END) Total_Answer_Call, SEC_TO_TIME(SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))Answer_Call_Time, SEC_TO_TIME(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0))AS "AVG_Answer_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Min_Answer_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Max_Answer_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END)*100.0)/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Answer_Call_%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time)<=10 Then 1 ELSE 0 END) AS "Answer_STE_1_With_IN_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Answer_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Answer_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Answer_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Answer_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Answer_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) >60 Then 1 ELSE 0 END) AS "Answer_STE_7_Greater_Then_60_Sec" , SUM(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)Total_Abndon_Call, SEC_TO_TIME(ifnull(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),0))AS "AVG_Abndon_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Min_Abndon_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Max_Abndon_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL then 1 ELSE 0 END)*100.0)/nullif(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Abndon_Call%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time)<=5 Then 1 ELSE 0 END) AS Abndon_STE_With_IN_5_Sec, SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 6 AND 10 Then 1 ELSE 0 END) AS "Abndon_STE_1_Between_5_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Abndon_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Abndon_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Abndon_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Abndon_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Abndon_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) >60 Then 1 ELSE 0 END) AS "Abndon_STE_7_Greater_Then_60_Sec"'; END If; SET @SelectVar1 =' SELECT "Campaign_Name" AS "Campaign_Name","Time" AS "Time","Total_Dialed" AS "Total_Dialed","Total_Connected_Dialed" AS "Total_Connected_Dialed","Connectivity%" AS "Connectivity%","Connected_Dialed_Time" AS "Connected_Dialed_Time","Total_Offered_Call" AS "Total_Offered_Call","Total_Answer_Call" AS "Total_Answer_Call","Answer_Call_Time" AS "Answer_Call_Time","AVG_Answer_Call_Time" AS "AVG_Answer_Call_Time","Min_Answer_Call_Time" AS "Min_Answer_Call_Time","Max_Answer_Call_Time" AS "Max_Answer_Call_Time", "Answer_Call_%" AS "Answer_Call_%","Answer_STE_1_With_IN_10_Sec" AS "Answer_STE_1_With_IN_10_Sec", "Answer_STE_2_Between_10_20_Sec" AS "Answer_STE_2_Between_10_20_Sec", "Answer_STE_3_Between_20_30_Sec" AS "Answer_STE_3_Between_20_30_Sec", "Answer_STE_4_Between_30_40_Sec" AS "Answer_STE_4_Between_30_40_Sec","Answer_STE_5_Between_40_50_Sec" AS "Answer_STE_5_Between_40_50_Sec", "Answer_STE_6_Between_50_60_Sec" AS "Answer_STE_6_Between_50_60_Sec", "Answer_STE_7_Greater_Then_60_Sec" AS "Answer_STE_7_Greater_Then_60_Sec" , "Total_Abndon_Call" AS "Total_Abndon_Call","AVG_Abndon_Call_Time" AS "AVG_Abndon_Call_Time","Min_Abndon_Call_Time" AS "Min_Abndon_Call_Time","Max_Abndon_Call_Time"AS "Max_Abndon_Call_Time" ,"Abndon_Call%" AS "Abndon_Call%","Abndon_STE_With_IN_5_Sec" AS Abndon_STE_With_IN_5_Sec,"Abndon_STE_1_Between_5_10_Sec" AS "Abndon_STE_1_Between_5_10_Sec","Abndon_STE_2_Between_10_20_Sec" AS "Abndon_STE_2_Between_10_20_Sec","Abndon_STE_3_Between_20_30_Sec" AS "Abndon_STE_3_Between_20_30_Sec","Abndon_STE_4_Between_30_40_Sec" AS "Abndon_STE_4_Between_30_40_Sec","Abndon_STE_5_Between_40_50_Sec" AS "Abndon_STE_5_Between_40_50_Sec","Abndon_STE_6_Between_50_60_Sec" AS "Abndon_STE_6_Between_50_60_Sec","Abndon_STE_7_Greater_Then_60_Sec" AS "Abndon_STE_7_Greater_Then_60_Sec" Union ALL ( '; SET @GroupRec=' Group by CONCAT(campaign.name,"-",campaign.san_acd_code),CONCAT(Case When LENGTH(HOUR(start_time))<2 Then "0" ELSE "" END,HOUR(start_time),"-",Case When LENGTH(HOUR(start_time)+1)<2 Then "0" ELSE "" END,HOUR(start_time)+1) '; SET @ExterWhereCond=' AND cdr.campaign_id IS NOT NULL '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END if; END If; If ReportType='Date Wise Summary' Then If IsCount=1 then SET @SelectVar ='SELECT Count(Distinct date(start_time)) LogCount'; ELSE SET @SelectVar =' SELECT DATE_FORMAT(start_time,"%d-%m-%Y") "Date",Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END)Total_Dialed, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END) Total_Connected_Dialed, ROUND(ifnull((Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)*100)/Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END),0),2) `Connectivity%`, SEC_TO_TIME(SUM(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END ))Connected_Dialed_Time, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") OR call_type="Incoming") then 1 ELSE 0 END) Total_Offered_Call, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") OR call_type="Incoming") AND exten_ans_time IS NOT NULL then 1 ELSE 0 END) Total_Answer_Call, SEC_TO_TIME(SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))Answer_Call_Time, SEC_TO_TIME(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0))AS "AVG_Answer_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Min_Answer_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL Then TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) ELSE 0 END)))AS "Max_Answer_Call_Time" , ROUND(IFNULL((Sum(case when acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL then 1 ELSE 0 END)*100.0)/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),2) "Answer_Call_%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time)<=10 Then 1 ELSE 0 END) AS "Answer_STE_1_With_IN_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Answer_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Answer_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Answer_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Answer_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Answer_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) >60 Then 1 ELSE 0 END) AS "Answer_STE_7_Greater_Then_60_Sec" , Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") OR call_type="Incoming") AND exten_ans_time IS NULL then 1 ELSE 0 END) Total_Abndon_Call, SEC_TO_TIME(ifnull(round((sum(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/NULLIF(sum(Case when acd_time IS NOT NULL then 1 ELSE 0 END ),0),0),0))AS "AVG_Abndon_Call_Time", SEC_TO_TIME((Min(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Min_Abndon_Call_Time", SEC_TO_TIME((Max(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Max_Abndon_Call_Time" , ROUND(ifnull((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") OR call_type="Incoming") AND exten_ans_time IS NULL then 1 ELSE 0 END)*100)/Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") OR call_type="Incoming") then 1 ELSE 0 END),0),2) "Abndon_Call%", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time)<=5 Then 1 ELSE 0 END) AS Abndon_STE_With_IN_5_Sec, SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 6 AND 10 Then 1 ELSE 0 END) AS "Abndon_STE_1_Between_5_10_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "Abndon_STE_2_Between_10_20_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "Abndon_STE_3_Between_20_30_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "Abndon_STE_4_Between_30_40_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "Abndon_STE_5_Between_40_50_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "Abndon_STE_6_Between_50_60_Sec", SUM(Case When acd_time IS NOT NULL AND cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) >60 Then 1 ELSE 0 END) AS "Abndon_STE_7_Greater_Then_60_Sec" '; END If; SET @SelectVar1 =' SELECT "Date" AS "Date","Total_Dialed" AS "Total_Dialed","Total_Connected_Dialed" AS "Total_Connected_Dialed", "Connectivity%" AS "Connectivity%","Connected_Dialed_Time" AS "Connected_Dialed_Time","Total_Offered_Call" AS "Total_Offered_Call","Total_Answer_Call" AS "Total_Answer_Call","Answer_Call_Time" AS "Answer_Call_Time","AVG_Answer_Call_Time" AS "AVG_Answer_Call_Time","Min_Answer_Call_Time" AS "Min_Answer_Call_Time","Max_Answer_Call_Time" AS "Max_Answer_Call_Time", "Answer_Call_%" AS "Answer_Call_%","Answer_STE_1_With_IN_10_Sec" AS "Answer_STE_1_With_IN_10_Sec", "Answer_STE_2_Between_10_20_Sec" AS "Answer_STE_2_Between_10_20_Sec", "Answer_STE_3_Between_20_30_Sec" AS "Answer_STE_3_Between_20_30_Sec", "Answer_STE_4_Between_30_40_Sec" AS "Answer_STE_4_Between_30_40_Sec","Answer_STE_5_Between_40_50_Sec" AS "Answer_STE_5_Between_40_50_Sec", "Answer_STE_6_Between_50_60_Sec" AS "Answer_STE_6_Between_50_60_Sec", "Answer_STE_7_Greater_Then_60_Sec" AS "Answer_STE_7_Greater_Then_60_Sec" , "Total_Abndon_Call" AS "Total_Abndon_Call","AVG_Abndon_Call_Time" AS "AVG_Abndon_Call_Time","Min_Abndon_Call_Time" AS "Min_Abndon_Call_Time","Max_Abndon_Call_Time"AS "Max_Abndon_Call_Time" ,"Abndon_Call%" AS "Abndon_Call%","Abndon_STE_With_IN_5_Sec" as Abndon_STE_With_IN_5_Sec,"Abndon_STE_1_Between_5_10_Sec" AS "Abndon_STE_1_Between_5_10_Sec","Abndon_STE_2_Between_10_20_Sec" AS "Abndon_STE_2_Between_10_20_Sec","Abndon_STE_3_Between_20_30_Sec" AS "Abndon_STE_3_Between_20_30_Sec","Abndon_STE_4_Between_30_40_Sec" AS "Abndon_STE_4_Between_30_40_Sec","Abndon_STE_5_Between_40_50_Sec" AS "Abndon_STE_5_Between_40_50_Sec","Abndon_STE_6_Between_50_60_Sec" AS "Abndon_STE_6_Between_50_60_Sec","Abndon_STE_7_Greater_Then_60_Sec" AS "Abndon_STE_7_Greater_Then_60_Sec" Union ALL ( '; SET @GroupRec=' Group by DATE(start_time),DATE_FORMAT(start_time,"%d-%m-%Y") '; SET @ExterWhereCond=' AND cdr.campaign_id IS NOT NULL '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END If; If ReportType='Group Answer Summary' Then If IsCount=1 then SET @SelectVar ='SELECT Count(Distinct campaign.name) LogCount'; ELSE SET @SelectVar =' SELECT concat(campaign.name,"-",cdr.acd) "Campaign_Name",COUNT(1) "Total_Offered_Call", sum(Case When cdr.exten_ans_time IS NOT NULL Then 1 ELSE 0 END)AS "Total_Ans_Call", sum(Case When cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time)<=10 Then 1 ELSE 0 END) AS "STE_1_With_IN_10_Sec", sum(Case When cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "STE_2_Between_10_20_Sec", sum(Case When cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "STE_3_Between_20_30_Sec", sum(Case When cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "STE_4_Between_30_40_Sec", sum(Case When cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "STE_5_Between_40_50_Sec", sum(Case When cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "STE_6_Between_50_60_Sec", sum(Case When cdr.exten_ans_time IS NOT NULL AND TIMESTAMPDIFF(SECOND,acd_time,exten_ans_time) >60 Then 1 ELSE 0 END) AS "STE_7_Greater_Then_60_Sec" '; END If; SET @SelectVar1 =' SELECT "Campaign_Name" as "Campaign_Name","Total_Offered_Call" AS "Total_Offered_Call","Total_Ans_Call" AS "Total_Ans_Call","STE_1_With_IN_10_Sec" AS "STE_1_With_IN_10_Sec","STE_2_Between_10_20_Sec" AS "STE_2_Between_10_20_Sec", "STE_3_Between_20_30_Sec" AS "STE_3_Between_20_30_Sec", "STE_4_Between_30_40_Sec" AS "STE_4_Between_30_40_Sec","STE_5_Between_40_50_Sec" AS "STE_5_Between_40_50_Sec","STE_6_Between_50_60_Sec" AS "STE_6_Between_50_60_Sec","STE_7_Greater_Then_60_Sec" AS "STE_7_Greater_Then_60_Sec" Union ALL ( '; SET @GroupRec='Group by concat(campaign.name,"-",cdr.acd) '; SET @ExterWhereCond=' AND call_type="Incoming" AND ifnull(Ifnull(campaign.name,cdr.acd),"")!="" AND acd_time IS NOT NULL AND acd_time!="0000-00-00 00:00:00" '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END If; If ReportType='Group Missed Summary' Then If IsCount=1 then SET @SelectVar ='SELECT Count(Distinct campaign.name) LogCount'; ELSE SET @SelectVar =' SELECT concat(campaign.name,"-",cdr.acd) "Campaign_Name",COUNT(1) "Total_Offered_Call",sum(Case When cdr.exten_ans_time IS NULL Then 1 ELSE 0 END)AS "Total_MIssed_Call",round((sum(Case When cdr.exten_ans_time IS NULL Then 1 ELSE 0 END)*100.0)/COUNT(1),2)AS "Total_MIssed_Call%",sum(Case When cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time)<=10 Then 1 ELSE 0 END) AS "STE_1_With_IN_10_Sec",sum(Case When cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 20 Then 1 ELSE 0 END) AS "STE_2_Between_10_20_Sec",sum(Case When cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 21 AND 30 Then 1 ELSE 0 END) AS "STE_3_Between_20_30_Sec",sum(Case When cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 31 AND 40 Then 1 ELSE 0 END) AS "STE_4_Between_30_40_Sec",sum(Case When cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 41 AND 50 Then 1 ELSE 0 END) AS "STE_5_Between_40_50_Sec", sum(Case When cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 51 AND 60 Then 1 ELSE 0 END) AS "STE_6_Between_50_60_Sec",sum(Case When cdr.exten_ans_time IS NULL AND TIMESTAMPDIFF(SECOND,acd_time,end_time) >60 Then 1 ELSE 0 END) AS "STE_7_Greater_Then_60_Sec",SEC_TO_TIME(round((sum(Case When cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END))/COUNT(1),0))AS "AVG_Missed_Call_Time",SEC_TO_TIME((Min(Case When cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Min_Missed_Call_Time",SEC_TO_TIME((Max(Case When cdr.exten_ans_time IS NULL Then TIMESTAMPDIFF(SECOND,acd_time,end_time) ELSE 0 END)))AS "Max_Missed_Call_Time" '; END If; SET @SelectVar1 =' SELECT "Campaign_Name" as "Campaign_Name","Total_Call_Offered" AS "Total_Call_Offered","Total_MIssed_Call" AS "Total_MIssed_Call","Total_MIssed_Call%" AS "Total_MIssed_Call%","STE_1_With_IN_10_Sec" AS "STE_1_With_IN_10_Sec","STE_2_Between_10_20_Sec" AS "STE_2_Between_10_20_Sec", "STE_3_Between_20_30_Sec" AS "STE_3_Between_20_30_Sec", "STE_4_Between_30_40_Sec" AS "STE_4_Between_30_40_Sec","STE_5_Between_40_50_Sec" AS "STE_5_Between_40_50_Sec","STE_6_Between_50_60_Sec" AS "STE_6_Between_50_60_Sec","STE_7_Greater_Then_60_Sec" AS "STE_7_Greater_Then_60_Sec","AVG_Missed_Call_Time" AS "AVG_Missed_Call_Time","Min_Missed_Call_Time" AS "Min_Missed_Call_Time","Max_Missed_Call_Time" AS "Max_Missed_Call_Time" Union ALL ( '; SET @GroupRec='Group by concat(campaign.name,"-",cdr.acd) '; SET @ExterWhereCond=' AND call_type="Incoming" AND ifnull(Ifnull(campaign.name,cdr.acd),"")!="" AND acd_time IS NOT NULL AND acd_time!="0000-00-00 00:00:00" '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END If; If ReportType='Trunk Wise Summary' Then If IsCount=1 then SET @SelectVar ='SELECT Count(Distinct trunk.display_name) LogCount'; ELSE SET @SelectVar =' SELECT trunk.display_name`Trunk_Name`,sum(case when call_type="Incoming" and cdr.acd_time IS NOT NULL and cdr.acd!="" then 1 ELSE 0 END)Offered_Call,sum(case when call_type="Incoming" and cdr.acd_time IS NOT NULL and cdr.exten_ans_time IS NOT NULL and cdr.acd!="" and cdr.connected="1" then 1 ELSE 0 END) Answered_Call,sum(case when call_type="Incoming" and cdr.acd_time IS NOT NULL and cdr.acd!="" and cdr.connected="0" then 1 ELSE 0 END) Abandon_Call,sum(case when call_type="Incoming" and cdr.acd_time IS NOT NULL and cdr.exten_ans_time IS NOT NULL and cdr.acd!="" and cdr.connected="1" then TIMESTAMPDIFF(Minute, cdr.exten_ans_time, end_time) ELSE 0 END) Inbound_Minute,sum(case when call_type="outgoing" and (cdr.acd_time IS NULL or(cdr.acd_time IS NOT NULL and cdr.acd!="")) then 1 ELSE 0 END) Outbound_Call,sum(case when call_type="outgoing" and ((cdr.acd_time IS NULL and cdr.exten_ans_time IS NOT NULL and cdr.exten_ans_time IS NOT NULL)or(cdr.acd_time IS NOT NULL and cdr.acd!="" and cdr.exten_ans_time IS NOT NULL)) and cdr.connected="1" then 1 ELSE 0 END) Connected_Call,sum(case when call_type="outgoing" and ((cdr.acd_time IS NULL and cdr.exten_ans_time IS NOT NULL and cdr.exten_ans_time IS NOT NULL)or(cdr.acd_time IS NOT NULL and cdr.acd!="" and cdr.exten_ans_time IS NOT NULL)) and cdr.connected="1" then TIMESTAMPDIFF(Minute, cdr.exten_ans_time, end_time) ELSE 0 END) Outbound_Minute,Count(distinct case when ifnull(cdr.caller_id,"")!="" then cdr.caller_id ELSE NULL END) Unique_Call,Count(distinct case when ifnull(cdr.caller_id,"")!="" and connected="1" then cdr.caller_id ELSE NULL END) Unique_Connected_Call'; END If; SET @SelectVar1 =' SELECT "Trunk_Name" as "Trunk_Name","Offered_Call" AS "Offered_Call","Answered_Call" AS "Answered_Call","Abandon_Call" AS "Abandon_Call","Inbound_Minute" AS"Inbound_Minute","Outbound_Call" AS "Outbound_Call","Connected_Call" AS "Connected_Call","Outbound_Minute" AS "Outbound_Minute","Unique_Call" AS "Unique_Call","Unique_Connected_Call" AS "Unique_Connected_Call" Union ALL ( '; SET @GroupRec='Group by trunk.display_name '; SET @ExterWhereCond=' AND ifnull(cdr.trunk_channel,"")!="" '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END If; If ReportType ='CDR_log_with_recording' then If IsCount=1 then SET @SelectVar ='SELECT Count(1) LogCount '; ELSE SET @SelectVar =' SELECT cdr.exten "Exten",cdr.did "DID_No",Concat(campaign.name,"-",ifnull(cdr.acd,""))"Group_Name", /*cdr.caller_id*/IF(@hide_phone_no = 1, CONCAT("******", RIGHT(cdr.caller_id, 4)), cdr.caller_id) as "Called_No",Start_time,cdr.end_time"End_Time", case when exten_ring_time IS NOT NULL AND exten_ans_time IS NOT NULL AND exten_ring_time<=exten_ans_time THEN SEC_TO_TIME(TIMESTAMPDIFF(second, exten_ring_time, exten_ans_time)) when exten_ring_time IS NOT NULL AND exten_ans_time IS NULL THEN SEC_TO_TIME(TIMESTAMPDIFF(second, exten_ring_time, end_time )) ELSE "00:00:00" end AS "Ring_Durn",Case when call_type="Outgoing" then "00:00:00" ELSE SEC_TO_TIME(TIMESTAMPDIFF(second, start_time, case when acd_time IS NOT NULL and acd_time!="0000-00-00 00:00:00" then acd_time when (acd_time IS NULL or acd_time="0000-00-00 00:00:00") and exten_ring_time IS NOT NULL THEN exten_ring_time else end_time end)) end AS "IVR_Dur", case when acd_time IS NOT NULL AND acd_time!="0000-00-00 00:00:00" AND exten_ring_time IS NOT NULL and acd_time<=exten_ring_time THEN SEC_TO_TIME(TIMESTAMPDIFF(second, acd_time, exten_ring_time)) when acd_time IS NOT NULL and acd_time!="0000-00-00 00:00:00" AND (exten_ring_time IS NULL or ( exten_ring_time IS NOT NULL and acd_time>exten_ring_time)) AND exten_ans_time IS NOT NULL THEN SEC_TO_TIME(TIMESTAMPDIFF(second, acd_time, exten_ans_time)) when acd_time IS NOT NULL AND acd_time!="0000-00-00 00:00:00" AND (exten_ring_time IS NULL or ( exten_ring_time IS NOT NULL and acd_time>exten_ring_time)) AND exten_ans_time IS NULL THEN SEC_TO_TIME(TIMESTAMPDIFF(second, acd_time, end_time)) ELSE "00:00:00" end AS "Queue_Durn", Case when exten_ans_time is not null then SEC_TO_TIME(TIMESTAMPDIFF(second, exten_ans_time,end_time)) ELSE "00:00:00" end AS "Agent_Durn",case when sec_to_time(hold_duration) IS NULL then "00:00:00" else sec_to_time(hold_duration) END "Hold_Durn", SEC_TO_TIME(duration) AS "Durn",case when Ifnull(cdr.connected,0)>0 then "C" ELSE "M" END "C/M", case when acd_time is not null and exten_ans_time IS NULL and exten_ring_time is not null THEN "Agent Missed" when exten_ans_time is NOT NULL or (call_type="Outgoing" and exten_ring_time is not null) THEN "Agent" when exten_ans_time IS NULL and (acd_time IS NULL or acd_time="0000-00-00 00:00:00" or acd_time="") AND call_type="Incoming" THEN "IVR" when (acd_time IS NOT NULL and acd_time!="0000-00-00 00:00:00") and exten_ans_time is NULL THEN "Queue" ELSE "" end AS "Call_End_At", cdr.agent "Agent Name", CONCAT(user.first_name," ",user.last_name) "Team Leader",IFNULL(trunk.display_name,cdr.trunk_channel) "Trunk_No", hangupclause.name AS "Cause" ,dtmf AS "DTMF",feedback as "Feedback",call_type AS "Call_Type" ,case when agent_disconnect is NOT NULL and agent_disconnect=1 then "A" WHEN ((agent_disconnect=0 and agent_disconnect IS NOT NULL) or agent_disconnect IS NULL) THEN "C" else "" end AS "A/C" ,acd AS "ACD",cdr.linked_id AS "Linked_ID",cdr.userfield AS "User_Field",cdr.ivr_name AS "IVR_Name",cdr.billsec as "Duration",cdr.recording_file as "Recording_File" '; END If; SET @SelectVar1 =' SELECT "Exten" as "Exten","DID_No" as "DID_No","Group" As "Group","Called_No" as "Called_No","Start_Time" As "Start_Time","End_Time" AS "End_Time","Ring_Durn" AS "Ring_Durn","IVR_Dur" AS "IVR_Dur","Queue_Durn" AS "Queue_Durn","Agent_Durn" AS "Agent_Durn","Hold_Durn" AS "Hold_Durn","Durn" AS "Durn","C/M" AS "C/M","Call_End_At" AS "Call_End_At","Agent_Name" As "Agent_Name","Team_Leader" AS "Team_Leader","Trunk_No" AS "Trunk_No","Cause" AS "Cause" ,"DTMF" AS "DTMF","FEEDBACK" AS "FEEDBACK","Call_Type" AS "Call_Type","A/C" AS "A/C","ACD" AS "ACD","Linked_ID" AS "Linked_ID","User_Field" AS "User_Field","IVR_Name" AS "IVR_Name","Duration" AS "Duration","Recording_File" AS "Recording_File" Union ALL( '; SET @ExterWhereCond=' AND billsec>0 AND ifnull(cdr.exten,"")!="" '; SET @ExtenWiseOrderVar=CONCAT(' Order by cdr.exten asc ',Case when ifnull(Orderby,'')!='' then CONCAT(' , ',Orderby) ELSE ' , cdr.Start_time asc' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END ); SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond ) ; SET @OtherOrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' Order By cdr.Id desc' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); SET @OrderVar= Case when ReportType='Extension Wise CDR' then @ExtenWiseOrderVar ELSE @OtherOrderVar END; SET @GroupRec=''; END if; If ReportType='Missed Call Summary' Then SET @PId=NULL; SET @getproc=CONCAT(' Select MAX( cdr.Process_id) into @PId FROM ',@CdrTable,' cdr \r\n\t\t\t\t\t\t\t \tLEFT JOIN campaign ON cdr.campaign_id=campaign.id\r\n\t\t\t\t\t\t\t\t\t\twhere 1=1',case when ifnull(Fromdate,'') then CONCAT(' and Start_time>="',FromDate,'" ') ELSE '' END,case when ifnull(ToDate,'') then CONCAT(' and Start_time<="',ToDate,'" ') ELSE ''END,' ',ifnull(cond,'')); PREPARE getprocstmt FROM @getproc; execute getprocstmt; DEALLOCATE PREPARE getprocstmt; if IFNULL(@PId,0)>0 then If IsCount=1 then SET @SelectVar ='SELECT Count(1) LogCount'; ELSE SET @SelectVar =' SELECT /*cdr.caller_id*/IF(@hide_phone_no = 1, CONCAT("******", RIGHT(cdr.caller_id, 4)), cdr.caller_id) as Phone_No, cdr.end_time Miss_Call_time,last_time Called_Time,case when LastCallLog.log_phone_no IS null then "Pending" ELSE "Dialed" END Call_Status,PL.agent_name Agent_Name,campaign.name Campaign_Name'; END If; SET @SelectVar1 =' SELECT "Phone_No" as "Phone_No","Miss_Call_time" AS "Miss_Call_time","Called_Time" AS "Called_Time","Call_Status" AS "Call_Status","Agent_Name" AS "Agent_Name","Campaign_Name" AS "Campaign_Name" Union ALL ( '; SET @GroupRec=' '; SET @ExterWhereCond=' AND char_length(cdr.caller_id)>=10 '; SET @TableVar= CONCAT(' FROM (SELECT * from ',@CdrTable,' cdr WHERE 1=1 AND cdr.end_call=1 AND (ifnull(cdr.acd,"")!="") AND cdr.call_type="incoming" AND cdr.exten_ring_time IS null ',case when ifnull(Fromdate,'') then CONCAT(' and Start_time>="',FromDate,'" ') ELSE '' END,case when ifnull(ToDate,'') then CONCAT(' and Start_time<="',ToDate,'" ') ELSE ''END,' ',IFNULL(@ExterWhereCond,''),' ',ifnull(cond,''), ' )cdr \r\n\t\t\t\t\t\t\t \tLEFT JOIN campaign ON cdr.campaign_id=campaign.id \r\n\t\t\t\t\t\t\t\t\t\t LEFT JOIN (SELECT log_phone_no,MAX(id)last_call_id,MAX(Start_time) last_time\r\n\t\t\t\t\t\t\t\t\t\t\t\t FROM process_table_log_',@PId,' GROUP BY log_phone_no)LastCallLog \r\n\t\t\t\t\t\t\t\t\t\t\t\t ON right(cdr.caller_id,10)=LastCallLog.log_phone_no AND LastCallLog.last_time>cdr.end_time\r\n\t\t\t\t\t\t\t\t\t\t\t\t LEFT JOIN process_table_log_',@PId,' PL on PL.id=LastCallLog.last_call_id WHERE 1=1 ') ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' Order By Miss_Call_time desc' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); ELSE SET @SelectVar='select * from(SELECT "" as "Phone_No","" AS "Miss_Call_time","" AS "Called_Time","" AS "Call_Status")test where 1=2 '; SET @SelectVar1 =' SELECT "Phone_No" as "Phone_No","Miss_Call_time" AS "Miss_Call_time","Called_Time" AS "Called_Time","Call_Status" AS "Call_Status" Union ALL ( '; SET @GroupRec=' '; SET @ExterWhereCond=''; SET @TableVar= ''; SET @OrderVar =''; END IF; END If; If ReportType='Extension CDR Summary' Then If IsCount=1 then SET @SelectVar ='SELECT Count(Distinct exten) extenCount'; ELSE SET @SelectVar ='SELECT agent AS Agent_Name,exten AS Extension_No,COUNT(*) Total_Calls, SUM(Case When agent IS NOT NULL and exten_ans_time IS NOT NULL AND call_type="Incoming" AND connected=1 Then 1 ELSE 0 END)Incoming_Calls, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)Outgoing_Calls, SEC_TO_TIME(SUM(Case When agent IS NOT NULL and exten_ans_time IS NOT NULL AND call_type="Incoming" AND connected=1 Then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END) + Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END))Total_Durn, SEC_TO_TIME(SUM(Case When agent IS NOT NULL and exten_ans_time IS NOT NULL AND call_type="Incoming" AND connected=1 Then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END))Incoming_Durn, SEC_TO_TIME(Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END))Outgoing_Durn, SEC_TO_TIME(round(ifnull((SUM(Case When agent IS NOT NULL and exten_ans_time IS NOT NULL AND call_type="Incoming" AND connected=1 Then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END) + Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then TIMESTAMPDIFF(SECOND,exten_ans_time,end_time) ELSE 0 END))/NULLIF((SUM(Case When agent IS NOT NULL and exten_ans_time IS NOT NULL AND call_type="Incoming" AND connected=1 Then 1 ELSE 0 END) +Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)),0),0),0))Avg_Talk '; END If; SET @SelectVar1 =' SELECT "Agent_Name"Agent_Name,"Extension No"Extension_No,"Total Calls" TotalCalls,"Incoming Calls" IncomingCalls,"Outgoing Calls" OutgoingCalls,"Total Durn" Totaldurn,"Incoming Durn" Incomingdurn,"Outgoing Durn" Outgoingdurn,"Avg Talk" Avg_talk Union ALL ( '; SET @GroupRec='GROUP BY cdr.exten,cdr.agent'; SET @ExterWhereCond=' AND exten IS NOT NULL AND ifnull(cdr.exten,"")!="" AND agent IS NOT NULL AND agent!="" '; SET @TableVar= CONCAT( @LinkedIdLastData ,@ExterWhereCond) ; SET @OrderVar =CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby) ELSE ' ' end,Case when ifnull(PageLimit,'')!='' then PageLimit ELSE '' END); END If; IF ifnull(IsCount,0)=0 then SET @query1=concat(IFNULL(@SelectVar,''),ifnull(@TableVar,''),IFNULL(@GroupRec,''),IFNULL(@OrderVar,'')); IF IFNULL(ReportFIlePath,'')!='' AND IFNULL(IsExportReport,'0')='1' Then SET @query1=concat(@SelectVar1,@query1,' into OUTFILE ''',ReportFIlePath,''' FIELDS TERMINATED BY '','' OPTIONALLY ENCLOSED BY ''"'' LINES TERMINATED BY ''\n'' );'); END if; ELSE SET @query1=concat(IFNULL(@SelectVar,''),ifnull(@TableVar,'')); END if; END IF; #SELECT @query1; PREPARE stmt3 FROM @query1; EXECUTE stmt3; DEALLOCATE PREPARE stmt3; IF IFNULL(ReportFIlePath,'')!='' AND IFNULL(IsExportReport,'0')='1' Then SELECT ReportFIlePath; END if; ELSE SELECT "You Cannot Fetch CDR Report more than 60 Days"; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_free_agent_for_videocall`; DELIMITER // CREATE PROCEDURE `get_free_agent_for_videocall`( IN `pid` VARCHAR(10), IN `cid` VARCHAR(10), IN `slotfromdate` VARCHAR(20), IN `slottodate` VARCHAR(20) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET @agentlogin = CONCAT(' select group_concat(agent_id) into @agentid from campaign_mapping_',pid,' where date(video_call_from)=date("',slotfromdate,'") AND (TIME(video_call_from) BETWEEN TIME("',slotfromdate,'") AND TIME(DATE_SUB("',slottodate,'",INTERVAL 1 MINUTE)) OR TIME("',slotfromdate,'") BETWEEN TIME(video_call_from) AND TIME(DATE_SUB(video_call_to,INTERVAL 1 MINUTE)) ) '); #SELECT @agentlogin; PREPARE stmt FROM @agentlogin; execute stmt; DEALLOCATE PREPARE stmt; /*if IFNULL(DATE(slotfromdate),"")=CURDATE() then SET @sql = CONCAT(' select agent_id,agent_name from agent_current_states acs where ifnull(acs.login_process,"")="',pid,'" and FIND_IN_SET(',cid,', acs.current_campaign) AND date(acs.status_change_tm)=CURDATE() AND ifnull(acs.status,0) not in(0,2) ',if(IFNULL(@agentid,"")!="",CONCAT(' and agent_id not in (',@agentid,')'),""),' limit 1; '); #SELECT @sql; PREPARE stmt FROM @sql; execute stmt; DEALLOCATE PREPARE stmt; ELSE*/ SET @sql = CONCAT(' select id agent_id,name agent_name from agent acs where ifnull(allow_videocall,0)=1 and ifnull(acs.processes,"")="',pid,'" and FIND_IN_SET(',cid,', acs.campaigns) AND ifnull(acs.active,0)=1 ',if(IFNULL(@agentid,"")!="",CONCAT(' and id not in (',@agentid,')'),""),' limit 1; '); #sELECT @sql; PREPARE stmt FROM @sql; execute stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_free_videocall_slot`; DELIMITER // CREATE PROCEDURE `get_free_videocall_slot`( IN `pid` INT, IN `cid` INT, IN `slotdate` VARCHAR(10), IN `agentid` VARCHAR(20) ) BEGIN if (IFNULL(agentid,"")="") then SET @agentcount=CONCAT('SELECT COUNT(1) INTO @agentid FROM agent_current_states acs WHERE ifnull(acs.login_process,"")="',pid,'" and acs.current_campaign=',cid,' AND date(acs.status_change_tm)=CURDATE() AND ifnull(acs.status,0) not in(0,2)'); PREPARE stmt FROM @agentcount; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @SQL=CONCAT('SELECT case when CURDATE()=Dateslot then "Today" when DATE_ADD(CURDATE(), INTERVAL 1 DAY)=Dateslot then "Tomorrow" else Dateslot end DayName,m.* from(SELECT DATE(videocallslot.dateslot) Dateslot,CONCAT(fromtime,"-",totime) Timeslot,(',@agentid,'-COUNT(case when agent_id IS NOT NULL then 1 end)) Totalagent FROM ( SELECT dateslot,fromtime,totime from(SELECT CURRENT_DATE AS dateslot UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 2 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 3 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 4 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 5 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 6 DAY))s, videocall_slot )videocallslot LEFT JOIN campaign_mapping_',pid,' cm ON CONCAT(DATE_FORMAT(cm.video_call_from, "%H:%i"),"-",DATE_FORMAT(cm.video_call_to, "%H:%i"))=CONCAT(fromtime,"-",totime) and dateslot=DATE(video_call_from) and campaign_id=',cid,' AND DATE(cm.video_call_from) BETWEEN current_date() AND DATE(DATE_ADD(CURRENT_DATE,INTERVAL 6 DAY)) AND video_call_from>NOW() WHERE CONCAT(dateslot," ",fromtime,":00")>=NOW() ',if(IFNULL(slotdate,"")!="",CONCAT(' and dateslot="',slotdate,'" '),""),' GROUP BY DATE(videocallslot.dateslot),CONCAT(fromtime,"-",totime))m WHERE Totalagent>0 ORDER BY Dateslot,Timeslot '); #SELECT @SQL; PREPARE stmt FROM @SQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; ELSE SET @SQL=CONCAT('SELECT case when CURDATE()=Dateslot then "Today" when DATE_ADD(CURDATE(), INTERVAL 1 DAY)=Dateslot then "Tomorrow" else Dateslot end DayName,m.* from(SELECT DATE(videocallslot.dateslot) Dateslot,CONCAT(fromtime,"-",totime) Timeslot,agent.name Agent_Name FROM ( SELECT dateslot,fromtime,totime from(SELECT CURRENT_DATE AS dateslot UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 2 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 3 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 4 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 5 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 6 DAY))s, videocall_slot )videocallslot right join agent on agent.id=',agentid,' LEFT JOIN campaign_mapping_',pid,' cm ON CONCAT(DATE_FORMAT(cm.video_call_from, "%H:%i"),"-",DATE_FORMAT(cm.video_call_to, "%H:%i"))=CONCAT(fromtime,"-",totime) and dateslot=DATE(video_call_from) and campaign_id=',cid,' AND DATE(cm.video_call_from) BETWEEN current_date() AND DATE(DATE_ADD(CURRENT_DATE,INTERVAL 6 DAY)) AND video_call_from>NOW() WHERE CONCAT(dateslot," ",fromtime,":00")>=NOW() ',if(IFNULL(slotdate,"")!="",CONCAT(' and dateslot="',slotdate,'" '),""),' )m ORDER BY Dateslot,Timeslot '); #SELECT @SQL; PREPARE stmt FROM @SQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; END if; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_lead_free_agent`; DELIMITER // CREATE PROCEDURE `get_lead_free_agent`( IN `pid` VARCHAR(10), IN `cid` VARCHAR(50), IN `agentid` VARCHAR(200), IN `where_condition` VARCHAR(200) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @max_lead_per_day = 0; SET @agent_max_lead = 0; SET @assign_lead_login_agent=0; SET @round_robin=0; SET @maxlead = CONCAT('SELECT max_lead_per_day, agent_max_lead,assign_lead_login_agent,round_robin INTO @max_lead_per_day, @agent_max_lead,@assign_lead_login_agent,@round_robin FROM process_data_insert_rule WHERE `default` =1 AND process_id =',pid,' LIMIT 1 '); #SELECT @maxlead; PREPARE stmt FROM @maxlead; execute stmt; DEALLOCATE PREPARE stmt; if IFNULL(@round_robin,0)=0 then if IFNULL(@assign_lead_login_agent,0)=0 then SET @leadcount = CONCAT(' SELECT agent_id,agent_name,extension_no,lead_count_per_insert_logic,campaign_id FROM (SELECT agent_id,agent_name,extension_no,total_lead_per_day,(lead_count_per_agent + COUNT(case when inlogic.agent IS NOT NULL then 1 END)) lead_count_per_insert_logic,',cid,' campaign_id FROM ( SELECT agent.id as agent_id,agent.name as agent_name,agent.extension_no,total_lead_per_day,ifnull(today_lead,0) lead_count_per_agent FROM agent LEFT JOIN (SELECT agent_id,count(1) today_lead FROM campaign_mapping_',pid,' cm join importmaster_',pid,' im on im.id=cm.Fileid Where ifnull(im.active_file,0)=1 AND im.mark_for_deletion=0 AND IFNULL(StopCalling,"0")=0 and cm.campaign_id=',cid,' AND (Dialed = 0 AND CallAgainTime IS NULL AND (Disposition is NULL OR Disposition="") AND (HangupCause IS NULL OR HangupCause="")) GROUP BY agent_id )camp ON camp.agent_id = agent.id WHERE agent.active=1 and FIND_IN_SET(',cid,', agent.campaigns) and ifnull(agent.total_lead_per_day,0) <=',@max_lead_per_day,' ',if(ifnull(agentid,"")!="",Concat(' AND agent.id IN (',agentid,') '),""),' AND ', where_condition, ' HAVING today_lead <',@agent_max_lead,' ) AS t LEFT JOIN process_table_data_insert_logic_',pid,' inlogic ON inlogic.agent=agent_name GROUP BY agent_id,agent_name,extension_no HAVING lead_count_per_insert_logic <',@agent_max_lead,')As m ORDER BY lead_count_per_insert_logic ASC,total_lead_per_day LIMIT 1; '); #SELECT @leadcount; PREPARE stmt FROM @leadcount; execute stmt; DEALLOCATE PREPARE stmt; END IF; if IFNULL(@assign_lead_login_agent,0)=1 then SET @loginagent = CONCAT(' SELECT agent_id,agent_name,extension_no,lead_count_per_insert_logic,campaign_id FROM (SELECT agent_id,agent_name,extension_no,last_lead_assign_datetime,total_lead_per_day,(lead_count_per_agent + COUNT(case when inlogic.agent IS NOT NULL then 1 END)) lead_count_per_insert_logic,',cid,' campaign_id FROM ( SELECT agent_current_states.agent_id,agent_current_states.agent_name,agent_current_states.login_extension_no extension_no,last_lead_assign_datetime,total_lead_per_day,SUM(ifnull(today_lead,0)) lead_count_per_agent FROM agent_current_states agent_current_states JOIN agent ON agent_current_states.agent_id = agent.id JOIN agent_login_campaign ON agent_login_campaign.agent_id=agent_current_states.agent_id LEFT JOIN (SELECT agent_id,count(1) today_lead FROM campaign_mapping_',pid,' cm join importmaster_',pid,' im on im.id=cm.Fileid Where ifnull(im.active_file,0)=1 AND im.mark_for_deletion=0 AND IFNULL(StopCalling,"0")=0 and cm.campaign_id=',cid,' AND (Dialed = 0 AND CallAgainTime IS NULL AND (Disposition is NULL OR Disposition="") AND (HangupCause IS NULL OR HangupCause="")) GROUP BY agent_id )camp ON camp.agent_id = agent_current_states.agent_id WHERE agent_login_campaign.campaign_id=',cid,' AND ifnull(agent.total_lead_per_day,0) <=',@max_lead_per_day,' ',if(ifnull(agentid,"")!="",Concat(' AND agent_current_states.agent_id IN (',agentid,') '),""),' AND ifnull(agent_current_states.login_process,"")="',pid,'" AND ', where_condition, ' AND date(agent_current_states.status_change_tm)=CURDATE() AND ifnull(agent_current_states.status,0) not in(0,2) GROUP BY agent_current_states.agent_id,agent_current_states.agent_name,agent_current_states.login_extension_no,last_lead_assign_datetime HAVING lead_count_per_agent <',@agent_max_lead,')t LEFT JOIN process_table_data_insert_logic_',pid,' inlogic ON inlogic.agent=agent_name GROUP BY agent_id,agent_name,extension_no,last_lead_assign_datetime HAVING lead_count_per_insert_logic <',@agent_max_lead,')As m ORDER BY lead_count_per_insert_logic ASC,total_lead_per_day,last_lead_assign_datetime ASC LIMIT 1; '); #SELECT @loginagent; PREPARE stmt FROM @loginagent; execute stmt; DEALLOCATE PREPARE stmt; END IF; END if; if IFNULL(@round_robin,0)=1 then if IFNULL(@assign_lead_login_agent,0)=0 then SET @leadcount = CONCAT(' SELECT agent_id,agent_name,extension_no,lead_count_per_insert_logic,campaign_id FROM (SELECT agent.id agent_id,agent.name agent_name,agent.extension_no,last_lead_assign_datetime,ifnull(Sum(lead_count),0) lead_count_per_insert_logic,',cid,' campaign_id FROM agent LEFT JOIN (select count(1) lead_count,agent from process_table_data_insert_logic_',pid,' group by agent) inlogic ON inlogic.agent=agent_name WHERE agent.active=1 and FIND_IN_SET(',cid,', agent.campaigns) and ifnull(agent.total_lead_per_day,0) <',@max_lead_per_day,' ',if(ifnull(agentid,"")!="",Concat(' AND agent.id IN (',agentid,') '),""),' AND ', where_condition, ' GROUP BY agent.id,agent.name,agent.extension_no,last_lead_assign_datetime HAVING lead_count_per_insert_logic <',@agent_max_lead,')As m ORDER BY lead_count_per_insert_logic ASC,last_lead_assign_datetime ASC LIMIT 1; '); #SELECT @leadcount; PREPARE stmt FROM @leadcount; execute stmt; DEALLOCATE PREPARE stmt; END IF; if IFNULL(@assign_lead_login_agent,0)=1 then SET @loginagent = CONCAT(' SELECT agent_id,agent_name,extension_no,lead_count_per_insert_logic,campaign_id FROM (SELECT agent_current_states.agent_id,agent_current_states.agent_name,agent_current_states.login_extension_no extension_no,last_lead_assign_datetime,ifnull(Sum(lead_count),0) lead_count_per_insert_logic,',cid,' campaign_id FROM agent_current_states agent_current_states JOIN agent ON agent_current_states.agent_id = agent.id JOIN agent_login_campaign ON agent_login_campaign.agent_id=agent_current_states.agent_id LEFT JOIN (select count(1) lead_count,agent from process_table_data_insert_logic_',pid,' group by agent) inlogic ON inlogic.agent=agent_name WHERE agent_login_campaign.campaign_id=',cid,' ',if(ifnull(agentid,"")!="",Concat(' AND agent_current_states.agent_id IN (',agentid,') '),""),' and ifnull(agent.total_lead_per_day,0) <',@max_lead_per_day,' AND ifnull(agent_current_states.login_process,"")="',pid,'" AND ', where_condition, ' AND date(agent_current_states.status_change_tm)=CURDATE() AND ifnull(agent_current_states.status,0) not in(0,2) GROUP BY agent_current_states.agent_id,agent_current_states.agent_name,agent_current_states.login_extension_no,last_lead_assign_datetime HAVING lead_count_per_insert_logic <',@agent_max_lead,')As m ORDER BY lead_count_per_insert_logic ASC,last_lead_assign_datetime ASC LIMIT 1; '); #SELECT @loginagent; PREPARE stmt FROM @loginagent; execute stmt; DEALLOCATE PREPARE stmt; END IF; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_omnifreeagents`; DELIMITER // CREATE PROCEDURE `get_omnifreeagents`( IN `acc_id` VARCHAR(50), IN `Cust_acc_id` VARCHAR(50) ) BEGIN #SELECT agent_mapping INTO @agent_mapping FROM omni_setup DECLARE done INT DEFAULT FALSE; DECLARE current_pid INT; DECLARE result_cursor CURSOR FOR SELECT id FROM process WHERE id=52; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; CREATE TEMPORARY TABLE IF NOT EXISTS temp_results ( pid INT, agent_id INT, start_time DATETIME ); OPEN result_cursor; read_loop: LOOP FETCH result_cursor INTO current_pid; IF done THEN LEAVE read_loop; END IF; SET @sql = CONCAT(' INSERT INTO temp_results SELECT ', current_pid, ' as pid, agent_id, start_time FROM ( (SELECT CASE WHEN /*omni_id=4 AND*/ customer_account_id=',Cust_acc_id,' AND end_time IS NULL THEN agent_id ELSE 0 END AS agent_id, start_time FROM omni_chat_session_', current_pid, ' WHERE ((customer_account_id=',Cust_acc_id,') OR (customer_account_id=',Cust_acc_id,' AND end_time IS NULL)) ORDER BY session_id DESC LIMIT 1) UNION ALL (SELECT agent_id, added_on AS start_time FROM sms_log_', current_pid, ' sl JOIN process_table_', current_pid, ' pm ON sl.master_id=pm.id WHERE process_id=', current_pid, ' AND RIGHT(',Cust_acc_id,',10) = @phone_field ORDER BY sl.id DESC LIMIT 1) UNION ALL (SELECT CASE WHEN agent_id IS NOT NULL THEN agent_id ELSE 0 END AS agent_id, start_time FROM process_table_log_', current_pid, ' pl WHERE log_phone_no = RIGHT(',Cust_acc_id,',10) ORDER BY start_time DESC LIMIT 1) ) combined_results ORDER BY start_time DESC LIMIT 1 '); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END LOOP; CLOSE result_cursor; SELECT pid, agent_id, start_time FROM temp_results ORDER BY start_time DESC LIMIT 1; DROP TEMPORARY TABLE IF EXISTS temp_results; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `updatedynamic_pacing`; DELIMITER // CREATE PROCEDURE `updatedynamic_pacing`() BEGIN DROP TABLE if EXISTS temp_all_campaign_dynamic_pacing; CREATE TEMPORARY TABLE temp_all_campaign_dynamic_pacing as SELECT campaign.id campaign_id,ROUND(((COUNT(1))/ifnull(nullif(sum(case when Connected=1 AND exten_ans_time IS NOT null then 1 ELSE 0 END),0),1)),2)dynamic_pacing FROM cdr_1 cdrtemp JOIN campaign ON cdrtemp.acd=campaign.san_acd_code WHERE Out_call_type="pd" AND end_call=1 AND ifnull(acd,"")!="" AND campaign.dial_mode="Predictive" AND campaign.enable_dy_pacing=1 AND cdrtemp.start_time>= date_add(NOW(), INTERVAL -ifnull(campaign.dyn_pacing_tm,10) MINUTE) AND cdrtemp.start_time< NOW() GROUP BY campaign.id; if EXISTS( SELECT 1 FROM temp_all_campaign_dynamic_pacing LIMIT 1) then UPDATE campaign LEFT JOIN temp_all_campaign_dynamic_pacing pd_call ON campaign.id= pd_call.campaign_id SET campaign.dyn_pacing=if(ifnull(pd_call.dynamic_pacing,0)=0,campaign.pacing,pd_call.dynamic_pacing) WHERE campaign.dial_mode="Predictive" AND campaign.enable_dy_pacing=1; end if; SELECT * FROM temp_all_campaign_dynamic_pacing; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_CDRData_client`; DELIMITER // CREATE PROCEDURE `get_CDRData_client`( IN `ReportType` VARCHAR(50), IN `PID` VARCHAR(50), IN `team_leader_id` INT, IN `camp_ids` VARCHAR(200) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len=1000000; SET @Process_Id =0; SET @Offered_Call =0; SET @Ans_Call =0; SET @Abn_Call =0; SET @drop_per =0; SET @drop_in_5_sec =0; SET @drop_in_10_sec =0; SET @drop_in_15_sec =0; SET @SLA =0; SET @Outgoing_Call =0; SET @Con_Outgoing =0; SET @connectivity_per =0; SET @ATT =0; SET @aht =0; SET @Avg_Wrapup_Time =0; SET @CdrData=CONCAT('SELECT group_concat(distinct campaign.Process_id) `Process_Id`, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND acd IS not null AND ifnull(agent,'''')='''' then 1 ELSE 0 END)`Offered_Call`, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)`Ans_Call`, /*Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)`Abn_Call`,*/ Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND acd IS not null AND ifnull(agent,'''')='''' then 1 ELSE 0 END)`Abn_Call`, Round(ifnull((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)*100)/NULLIF((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)),0),0),2) `drop_per`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' and TIMESTAMPDIFF(SECOND,acd_time,end_time)<=5 then 1 ELSE 0 END),0) `drop_in_5_sec`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 6 AND 10 then 1 ELSE 0 END),0) `drop_in_10_sec`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 15 then 1 ELSE 0 END),0) `drop_in_15_sec`, ROUND(((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END))*100.0)/(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND acd IS not null AND ifnull(agent,'''')='''' then 1 ELSE 0 END)),1)`SLA`, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END)`Outgoing_Call`, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)`Con_Outgoing`, round(ifnull((Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)*100)/nullif(Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END),0),0),2) `connectivity_per`, SEC_TO_TIME(round(IFNULL((SUM(duration)-SUM(Case when call_type="Outgoing" then 0 ELSE TIMESTAMPDIFF(second, start_time, case when acd_time IS NOT NULL and acd_time!="0000-00-00 00:00:00" then acd_time when (acd_time IS NULL or acd_time="0000-00-00 00:00:00") and exten_ring_time IS NOT NULL THEN exten_ring_time else end_time END )END))/nullif(sum(Case when exten_ans_time is not null and cdr.connected>0 then 1 ELSE 0 END),0),0),0))`AHT`, SEC_TO_TIME(round(IFNULL(Sum(Case when exten_ans_time is not null then TIMESTAMPDIFF(second,exten_ans_time,end_time) ELSE 0 END)/nullif(sum(Case when exten_ans_time is not null and cdr.connected>0 then 1 ELSE 0 END),0),0),0))`ATT`, SEC_TO_TIME(round(IFNULL(Sum(Wrapup_duration)/ifnull(Count(Wrapup_duration),0),0),0)) Avg_Wrapup_Time into @Process_Id,@Offered_Call,@Ans_Call,@Abn_Call,@drop_per,@drop_in_5_sec,@drop_in_10_sec,@drop_in_15_sec,@SLA,@Outgoing_Call,@Con_Outgoing,@connectivity_per,@ATT,@Avg_Wrapup_Time,@aht FROM cdrtemp cdr LEFT JOIN campaign ON cdr.campaign_id=campaign.id LEFT JOIN `process` ON `process`.`id`=`cdr`.`process_id` LEFT JOIN `trunk` ON cdr.trunk_channel=`trunk`.name LEFT JOIN agent on cdr.agent=agent.name WHERE 1=1 and end_call=1 and Start_time>=curdate() AND ifnull(cdr.out_call_type,"")!="TR" AND ifnull(campaign.NAME,"")!="" ',Case when IFNULL(PID,"")!="" then CONCAT(' AND campaign.Process_id in (',PID,') ') ELSE ' ' END,case when IFNULL(team_leader_id,0)>0 then CONCAT(' AND ((ifnull(cdr.agent,"")="" AND ifnull(cdr.exten,"")="" ) OR (ifnull(cdr.agent,"")!="" AND agent.team_leader="',team_leader_id,'" ) ) ')ELSE '' END , ' ',case when ifnull(camp_ids,'')!='' then CONCAT(' AND campaign.id in (',camp_ids,')') ELSE '' END,''); #SELECT @CdrData; PREPARE getcdrdata FROM @CdrData; execute getcdrdata; DEALLOCATE PREPARE getcdrdata; SELECT SUBSTRING_INDEX(PID, ',', 1) INTO @pid; SET @getamsaht = CONCAT( ' SELECT (IFNULL(SUM(case when whatsapp_sent=1 then 1 ELSE 0 END),0)+IFNULL(SUM(case when sms_sent=1 then 1 ELSE 0 END),0)) TotalSMS_Sent, IFNULL(SUM(case when whatsapp_sent=1 then 1 ELSE 0 END),0) Whatsapp_Sent, IFNULL(SUM(case when sms_sent=1 then 1 ELSE 0 END),0) SMS_Sent into @TotalSMS_Sent,@Whatsapp_Sent,@SMS_Sent FROM sms_log_',@pid,' sms where 1=1 and added_on>=CURDATE() ' ); PREPARE stmt FROM @getamsaht; EXECUTE stmt; DEALLOCATE PREPARE stmt; SELECT @Process_Id AS Process_Id,@Offered_Call AS Offered_Call,@Ans_Call AS Ans_Call,@Abn_Call AS Abn_Call,@drop_per AS drop_per,@drop_in_5_sec AS drop_in_5_sec,@drop_in_10_sec AS drop_in_10_sec,@drop_in_15_sec AS drop_in_15_sec,@SLA AS SLA,@Outgoing_Call AS Outgoing_Call,@Con_Outgoing AS Con_Outgoing,@connectivity_per AS connectivity_per,@ATT AS ATT,@aht AS AHT,@Avg_Wrapup_Time AS Avg_Wrapup_Time,@TotalSMS_Sent TotalSMS_Sent,@Whatsapp_Sent Whatsapp_Sent,@SMS_Sent SMS_Sent; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_Lead_Report_new`; DELIMITER // CREATE PROCEDURE `get_Lead_Report_new`( IN `pid` VARCHAR(50), IN `cid` VARCHAR(50), IN `agentid` VARCHAR(50), IN `wherecondition` VARCHAR(500), IN `AgentMapping` INT, IN `tl_id` VARCHAR(50) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @AgentMapping=case when (IFNULL(AgentMapping,0)>=0) then AgentMapping ELSE (SELECT enable_agent_mapping FROM campaign WHERE id IN (cid) LIMIT 1) END; SET @dispo1=CONCAT('select group_concat(DISTINCT concat(''ifnull(sum(case when camp.disposition ="'',camp.disposition,''" then 1 else 0 end),0) as `'',camp.disposition,''`'')) into @exactdispo FROM process_table_', pid, ' mast_tbl JOIN (SELECT @row_number:=CASE WHEN@master_id=master_id THEN @row_number + 1 ELSE 1 END rnk, @master_id:=master_id masterid, map_id mapid from campaign_mapping_', pid, ', (SELECT @master_id:=0,@row_number:=0) as t ORDER BY master_id,lastcalltime DESC)cm ON cm.masterid=mast_tbl.id AND rnk=1 JOIN campaign_mapping_', pid, ' camp ON camp.map_id = cm.mapid join importmaster_',pid,' imp on imp.id = camp.fileId LEFT JOIN process_table_log_',pid,' log_tbl on camp.LastLogId = log_tbl.id where ', wherecondition ,' ',if(IFNULL(cid,'')!='', CONCAT(' and ifnull(camp.campaign_id,0) in (',cid,')'),''),' ',if(IFNULL(agentid,'')!='',CONCAT(' and camp.agent_id =',agentid,''),''),' and ifnull(camp.disposition,'''')!='''' '); #SELECT @dispo1; PREPARE stmt FROM @dispo1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @QUERY1 = CONCAT(' SELECT ifnull(count(*),0) AS `Total`, IFNULL(SUM(CASE WHEN ifnull(camp.dialed,0) = 0 AND camp.callAgainTime IS NULL AND ifnull(camp.disposition,"")="" AND (ifnull(DoNotCall,0) = 0 AND ifnull(StopCalling,0) =0) THEN 1 ELSE 0 END),0) AS `Fresh`, IFNULL(SUM(CASE WHEN camp.CallAgainTime IS NOT NULL AND DATE(camp.CallAgainTime)CURDATE() AND (IFNULL(imp.active_file,0)=1 OR (IFNULL(imp.active_file,0)=0 AND IFNULL(imp.retain_callback,0)=1 AND camp.CallAgainTime is not NULL )) AND imp.mark_for_deletion=0 AND camp.dialed=0 AND IFNULL(camp.StopCalling,0)=0 AND IFNULL(camp.DoNotCall,0)=0 THEN 1 ELSE 0 END),0) AS `Future`, ifnull(SUM(CASE WHEN camp.disposition IN (SELECT disposition FROM process_disposition WHERE process_id = ', pid, ' AND ifnull(closed_dispo,0)=1) THEN 1 ELSE 0 END),0) AS `Dump` ',if(IFNULL(@exactdispo,'')='','',CONCAT(',',@exactdispo)),' FROM process_table_', pid, ' mast_tbl JOIN (SELECT @row_number:=CASE WHEN@master_id=master_id THEN @row_number + 1 ELSE 1 END rnk, @master_id:=master_id masterid, map_id mapid from campaign_mapping_', pid, ', (SELECT @master_id:=0,@row_number:=0) as t ORDER BY master_id,lastcalltime DESC)cm ON cm.masterid=mast_tbl.id AND rnk=1 JOIN campaign_mapping_', pid, ' camp ON camp.map_id = cm.mapid JOIN importmaster_', pid, ' imp ON imp.id = camp.FileId LEFT JOIN process_table_log_',pid,' log_tbl on camp.LastLogId = log_tbl.id LEFT JOIN agent on camp.Agent_id=agent.id LEFT JOIN user on user.id = agent.team_leader WHERE ', wherecondition ,' ',if(IFNULL(agentid,'')!='',CONCAT(' and camp.agent_id =',agentid,''),''),' ',if(IFNULL(cid,'')!='', CONCAT(' and ifnull(camp.campaign_id,0) in (',cid,')'),''),' ',if(IFNULL(tl_id,'')!='', CONCAT(' and user.id = ',tl_id,''),''),' ',if(@AgentMapping=1,CONCAT('AND (( camp.agent_id IS NULL OR MapToAgent = 0 OR MapToAgent is NULL) OR (MapToAgent = 1 AND camp.Agent_id="',agentid,'"))'),""),' '); #SELECT @QUERY1; PREPARE stmt FROM @QUERY1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_All_Leads_new`; DELIMITER // CREATE PROCEDURE `get_All_Leads_new`( IN `pid` VARCHAR(50), IN `cid` VARCHAR(50), IN `agentid` VARCHAR(10), IN `recordType` VARCHAR(50), IN `wherecondition` TEXT, IN `rowlimit` VARCHAR(50), IN `hide_phone_no` INT, IN `AgentMapping` INT, IN `tl_id` VARCHAR(50), IN `Orderby` VARCHAR(500) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 10000000; SET @PhoneNoField=NULL; SET @AgentMapping=case when (IFNULL(AgentMapping,0)>=0) then AgentMapping ELSE (SELECT enable_agent_mapping FROM campaign WHERE id IN (cid) LIMIT 1) END; SET @MasterColumn = (SELECT GROUP_CONCAT(CONCAT( case when hide_phone_no=1 AND mask=1 then CONCAT('CONCAT("******",RIGHT(mast_tbl.',field_name,',4))',field_name) else CONCAT('mast_tbl.',field_name) end)) FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=pid AND create_log=0 AND form_type='master' AND IFNULL(show_on_dling_dashboard, 0) = 1); SET @LogColumn=(SELECT GROUP_CONCAT(case when create_log=1 then CONCAT('log_tbl.',field_name) ELSE "" END ) FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=pid AND create_log=1 AND IFNULL(show_on_dling_dashboard, 0) = 1); SET @PhoneNoField=(SELECT CONCAT(CASE WHEN hide_phone_no = 1 THEN CONCAT('CONCAT("******", RIGHT(mast_tbl.', field_name, ',4)) AS ', field_name) ELSE CONCAT('mast_tbl.', field_name, ' AS ', field_name) END) FROM formbuilder_field join process on formbuilder_field.form_id=process.form_id WHERE process.id=pid and ifnull(formbuilder_field.primary_phone_no,0)=1 AND formbuilder_field.data_type='Phone'); SET @recordType=recordType; if IFNULL(rowlimit,'')='' then SET @selectquery='SELECT COUNT(1) no_of_rec '; ELSE SET @selectquery=CONCAT('select mast_tbl.id as `Master_id`,camp.map_id as `Map_id`, ',@PhoneNoField,' , camp.CallAgainTime "CallAgainTime", ',if(IFNULL(@MasterColumn,'')='','',CONCAT(@MasterColumn,',')), ' agent.name AS `Agent_Name`, log_tbl.id log_id,log_tbl.crm_id crm_id, camp.disposition,camp.sub_disposition ',if(IFNULL(@LogColumn,'')='','',CONCAT(',',@LogColumn)),''); END IF; SET @fromquery=CONCAT(' FROM process_table_',pid,' mast_tbl JOIN (SELECT @row_number:=CASE WHEN@master_id=master_id THEN @row_number + 1 ELSE 1 END rnk, @master_id:=master_id masterid, map_id mapid from campaign_mapping_',pid,', (SELECT @master_id:=0,@row_number:=0) as t ORDER BY master_id,lastcalltime DESC)cm ON cm.masterid=mast_tbl.id AND rnk=1 JOIN campaign_mapping_',pid,' camp ON camp.map_id = cm.mapid JOIN importmaster_',pid,' imp ON imp.id = camp.FileId JOIN campaign on campaign.id=camp.campaign_id LEFT JOIN process_table_log_',pid,' log_tbl on camp.LastLogId = log_tbl.id LEFT JOIN agent on camp.Agent_id=agent.id LEFT JOIN user on user.id = agent.team_leader where 1=1 ',if(IFNULL(cid,'')!='', CONCAT(' and camp.campaign_id in (', cid ,')'),''),' ',if(IFNULL(agentid,'')!='',CONCAT(' and camp.agent_id =',agentid,''),''),' ',if(IFNULL(tl_id,'')!='', CONCAT('and user.id = ',tl_id,''),''),' ',if(@AgentMapping=1,CONCAT('AND (( camp.agent_id IS NULL OR MapToAgent = 0 OR MapToAgent is NULL) OR (MapToAgent = 1 AND camp.Agent_id="',agentid,'"))'),""),' '); if ifnull(@recordType,'')='totalLead' then SET @WHERE = CONCAT('and ',wherecondition,' ', Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ', Orderby ) ELSE '' END , case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END ); ELSEIF ifnull(@recordType,'')='newLead' then SET @WHERE = CONCAT(' and ',wherecondition,' and ifnull(camp.dialed,0) = 0 and camp.callAgainTime is null AND ifnull(camp.disposition,'''')='''' AND camp.donotcall IS NULL and ifnull(camp.stopcalling,0)=0 ',Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby ) ELSE '' END , case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); ELSEIF ifnull(@recordType,'')='cloesLead' then SET @WHERE = CONCAT(' and camp.disposition in (SELECT disposition FROM process_disposition WHERE process_id=',pid,' AND ifnull(closed_dispo,0)=1 ) ',Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby ) ELSE '' END , case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); ELSEIF ifnull(@recordType,'')='followupLead_today' then SET @WHERE = CONCAT(' and ',wherecondition,' AND camp.CallAgainTime is not NULL AND DATE(camp.CallAgainTime)=CURDATE() AND (IFNULL(imp.active_file,0)=1 OR (IFNULL(imp.active_file,0)=0 AND IFNULL(imp.retain_callback,0)=1 AND camp.CallAgainTime is not NULL )) AND imp.mark_for_deletion=0 AND ifnull(camp.dialed,0)=0 AND IFNULL(camp.StopCalling,0)=0 AND IFNULL(camp.DoNotCall,0)=0 ',Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby ) ELSE '' END ,case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); ELSEIF ifnull(@recordType,'')='followupLead_pending' then SET @WHERE = CONCAT(' and ',wherecondition,' AND camp.CallAgainTime is not NULL AND DATE(camp.CallAgainTime)CURDATE() AND (IFNULL(imp.active_file,0)=1 OR (IFNULL(imp.active_file,0)=0 AND IFNULL(imp.retain_callback,0)=1 AND camp.CallAgainTime is not NULL )) AND imp.mark_for_deletion=0 AND ifnull(camp.dialed,0)=0 AND IFNULL(camp.StopCalling,0)=0 AND IFNULL(camp.DoNotCall,0)=0 ',Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby ) ELSE '' END ,case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); ELSEIF ifnull(@recordType,'') NOT IN ('totalLead','newLead','cloesLead','followupLead') then SET @WHERE = CONCAT(' and camp.disposition ="',@recordType,'" and ',wherecondition,' ',Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby ) ELSE '' END ,case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); END IF; SET @query_string = CONCAT( @selectquery, @fromquery, @WHERE ); #SELECT @query_string; PREPARE stmt_query_string FROM @query_string; EXECUTE stmt_query_string; DEALLOCATE PREPARE stmt_query_string; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_file_data_count`; DELIMITER // CREATE PROCEDURE `get_file_data_count`( IN `pid` INT, IN `campid` VARCHAR(10), IN `filestatus` VARCHAR(1), IN `file_id` VARCHAR(10), IN `datalimit` VARCHAR(10), IN `wherecondition` VARCHAR(50) ) BEGIN SET @getcountdata=CONCAT('SELECT `impo`.id,`impo`.file_name,`campaign`.name campaign_name,`impo`.active_file,`impo`.priority,`impo`.mark_for_deletion,`impo`.retain_callback,`impo`.valid_upto,`impo`.last_dnd_update, SUM(CASE WHEN (Dialed = 1 OR (Dialed = 0 AND ifnull(CallAgainTime,"")!="")) THEN 1 ELSE 0 END) as dialed_no, SUM(CASE WHEN (Dialed = 0 /*AND ifnull(CallAgainTime,"")=""*/) AND (ifnull(DoNotCall,0)=0 AND ifnull(isDNC,0)=0) THEN 1 ELSE 0 END) as not_dialed_no, sum(1) as total, SUM(CASE WHEN (Dialed = 1 AND ifnull(Disposition,"")!="") THEN 1 ELSE 0 END) AgentDisposed, SUM(CASE WHEN (Dialed = 1 AND ifnull(Disposition,"")="" ) THEN 1 ELSE 0 END) SystemDisposed, SUM(CASE WHEN (Dialed = 0 AND ifnull(CallAgainTime,"")="" AND ifnull(Disposition,"")="" AND ifnull(HangupCause,"")="") AND (ifnull(DoNotCall,0)=0 AND ifnull(isDNC,0)=0 and ifnull(StopCalling,0) =0) THEN 1 ELSE 0 END) FreshNumber, SUM(CASE WHEN (ifnull(StopCalling,0) =1 ) THEN 1 ELSE 0 END) stopcalling, SUM(CASE WHEN (Dialed = 0 AND ifnull(CallAgainTime,"")!="" AND ifnull(LastCallTime,"")!="") AND (ifnull(DoNotCall,0)=0 AND ifnull(isDNC,0)=0) THEN 1 ELSE 0 END) Resheduled, SUM(CASE WHEN (Dialed = 0 AND ifnull(CallAgainTime,"")="" AND (ifnull(Disposition,"")!="" OR ifnull(HangupCause,"")!="")) AND (ifnull(DoNotCall,0)=0 or ifnull(isDNC,0)=0) and ifnull(StopCalling,0) =0 THEN 1 ELSE 0 END) CallAgain, SUM(CASE WHEN (ifnull(DoNotCall,0) = 1 or ifnull(isDNC,0)=1) THEN 1 ELSE 0 END) DND FROM campaign_mapping_',pid,' `cam_map` JOIN process_table_',pid,' `pm` ON `pm`.`id`=`cam_map`.`master_id` JOIN importmaster_',pid,' `impo` ON `cam_map`.`FileId`=`impo`.`id` left join campaign on `cam_map`.campaign_id=campaign.id WHERE `impo`.id != 1 AND ifnull(`impo`.`mark_for_deletion`,0) = "0" ',case when campid='' then '' ELSE CONCAT(' AND cam_map.campaign_id= ',campid) END,case when filestatus='' then '' ELSE CONCAT(' AND impo.active_file= ',filestatus) END,case when file_id='' then '' ELSE CONCAT(' AND cam_map.fileid= ',file_id) END,case when wherecondition='' then '' ELSE CONCAT(' ',wherecondition,'') END,' GROUP BY `impo`.id,`impo`.file_name,`campaign`.name,`impo`.active_file,`impo`.priority,`impo`.mark_for_deletion,`impo`.retain_callback,`impo`.valid_upto,`impo`.last_dnd_update ORDER BY `impo`.id desc ',case when datalimit='' then '' else CONCAT('LIMIT ',datalimit) END); PREPARE getcountdata FROM @getcountdata; EXECUTE getcountdata; DEALLOCATE PREPARE getcountdata; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_search_process_record`; DELIMITER // CREATE PROCEDURE `get_search_process_record`( IN `pid` INT, IN `cid` INT, IN `agent_id` INT, IN `agentmapping` INT, IN `cond` VARCHAR(500), IN `orderby` VARCHAR(200), IN `rowlimit` VARCHAR(20) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @col=NULL; SET @phone_no=NULL; SET @AgentMapping=NULL; SET @AgentMapping=case when (IFNULL(agentmapping,0)>0) then agentmapping ELSE (SELECT enable_agent_mapping FROM campaign WHERE id=cid LIMIT 1) end; SELECT GROUP_CONCAT(formbuilder_field.field_name), group_concat(case when formbuilder_field.primary_phone_no=1 AND formbuilder_field.data_type='phone' then formbuilder_field.field_name END) INTO @col,@phone_no FROM formbuilder JOIN formbuilder_field ON formbuilder.id=formbuilder_field.form_id WHERE formbuilder.process_id=pid and formbuilder.form_type='master' AND formbuilder_field.create_log=0; SET @col=if(IFNULL(@col,'')!='' AND ifnull(@phone_no,'')!='',CONCAT(',',@col),''); if IFNULL(rowlimit,'')!='' then SET @selectget_search_process_record=CONCAT('SELECT t1.id master_id,map_id,campaign.name campaign_name,t3.file_name ',@col); ELSE SET @selectget_search_process_record=CONCAT('SELECT count(1) cnt '); END if; SET @fromget_search_process_record= CONCAT(' FROM process_table_',pid,' t1 LEFT JOIN campaign_mapping_',pid,' t2 ON t1.id=t2.master_id LEFT JOIN importmaster_',pid,' t3 on t2.fileid=t3.id LEFT JOIN campaign ON t2.campaign_id=campaign.id where ',if(ifnull(@phone_no,'')!='',CONCAT('t1.',ifnull(@phone_no,""),' is not null and '),''),if(ifnull(cond,'')='',' 1=1 ',ifnull(cond,'')), if(IFNULL(@AgentMapping,"")=1,CONCAT(' and t2.agent_id="',ifnull(agent_id,""),'" '),""),' ' ); SET @get_search_process_record=CONCAT(@selectget_search_process_record,@fromget_search_process_record,case when IFNULL(rowlimit,'')='' then '' when ifnull(orderby,'')!='' then CONCAT(' order by ',orderby) ELSE ' order by t1.id desc ' end,if(IFNULL(rowlimit,'')!='',CONCAT(' limit ',rowlimit),''),' ;'); #SELECT @get_search_process_record; PREPARE stmt_get_search_process_record FROM @get_search_process_record; EXECUTE stmt_get_search_process_record; DEALLOCATE PREPARE stmt_get_search_process_record; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `GetLogTrail_count`; DELIMITER // CREATE PROCEDURE `GetLogTrail_count`( IN `pid` INT, IN `cid` INT, IN `masterid` BIGINT, IN `rectype` VARCHAR(30), IN `total` INT ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @Call_Log_Count =0; SET @Call_Log_Any_Campaign=0; SET @Call_Log_Active_File=0; SET @PhoneNoLog=""; SET @logtable=""; SET @mastertable=""; SET @ColumnName=""; SELECT campaign.cl_lg_disp_no,campaign.call_log_from_any_campaign,campaign.call_log_from_active_file_only INTO @Call_Log_Count,@Call_Log_Any_Campaign,@Call_Log_Active_File FROM campaign WHERE id =cid; SELECT formbuilder.table_name,log_table_name INTO @mastertable,@logtable FROM formbuilder WHERE formbuilder.process_id=pid AND form_type='master'; if rectype='call' AND ifnull(total,0)=1 then SET @SqlQuery=CONCAT('SELECT count(1)`total` FROM ',@logtable,' t1 JOIN ',@mastertable,' PM on t1.parent_id=PM.id JOIN campaign_mapping_',pid,' t2 ON t1.camp_map_id = t2.map_id JOIN campaign t4 ON t2.campaign_id = t4.id JOIN importmaster_',pid,' t3 ON t2.FileId = t3.id WHERE t1.disposition IS NOT NULL ', case when (@PhoneNoLog!='') then CONCAT(' AND log_phone_no="' ,@PhoneNoLog,'"') ELSE CONCAT(' AND t1.parent_id="' ,masterid,'"' ) END, case when @Call_Log_Active_File=1 then ' AND ifnull(t3.active_file,0) = 1 ' ELSE "" END ,case when @Call_Log_Any_Campaign=0 then CONCAT(' AND t1.campaign ="',cid,'"') ELSE "" END ,''); #SELECT @SqlQuery; PREPARE GetLogTrailCallstmt FROM @SqlQuery; execute GetLogTrailCallstmt; DEALLOCATE PREPARE GetLogTrailCallstmt; ELSE SELECT 'Wrong Data Type'Message; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `recentCallLog`; DELIMITER // CREATE PROCEDURE `recentCallLog`( IN `pid` INT, IN `cid` VARCHAR(50), IN `agentid` INT, IN `phoneno` VARCHAR(20) ) BEGIN SET @mask=0; SELECT mask INTO @mask FROM formbuilder_field JOIN formbuilder ON formbuilder.id=formbuilder_field.form_id WHERE Process_id=pid AND formbuilder_field.data_type="phone" AND formbuilder.form_type="master" AND create_log=0 LIMIT 1; if (IFNULL(@mask,"")>0) then SET @phoneno=CONCAT('CONCAT("xxxxxx",RIGHT(log_phone_no,4))'); ELSE SET @phoneno=CONCAT('log_phone_no'); END if; SET @QUERY=CONCAT('select ',@phoneno,' AS phone_no,start_time,end_time,pl.camp_map_id,pl.parent_id master_id,pl.id log_id from process_table_log_',pid,' pl join (select max(id) id,parent_id from process_table_log_',pid,' where log_phone_no !='''' group by parent_id)pl1 on pl1.id=pl.id where agent_id="',agentid,'" and pl.CallType in ("Incoming","Outgoing","Manual") ',if(IFNULL(phoneno,"")!="",CONCAT(' and log_phone_no LIKE "%',phoneno,'%"'),""),' order by pl.id desc limit 20'); #SELECT @QUERY; PREPARE stmt FROM @QUERY; EXECUTE stmt; DEALLOCATE PREPARE stmt; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_dispo_wise_lead_new`; DELIMITER // CREATE PROCEDURE `get_dispo_wise_lead_new`( IN `pid` VARCHAR(50), IN `cid` VARBINARY(50), IN `agentid` VARCHAR(50), IN `wherecondition` VARCHAR(500), IN `AgentMapping` INT, IN `flag` INT, IN `tl_id` VARCHAR(50) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @AgentMapping=case when (IFNULL(AgentMapping,0)>=0) then AgentMapping ELSE (SELECT enable_agent_mapping FROM campaign WHERE id=cid LIMIT 1) END; SET @QUERY1 = CONCAT(' SELECT COUNT(*) INTO @flagcount FROM process_table_', pid,' mast_tbl JOIN (SELECT @row_number:=CASE WHEN@master_id=master_id THEN @row_number + 1 ELSE 1 END rnk, @master_id:=master_id masterid, map_id mapid from campaign_mapping_', pid, ', (SELECT @master_id:=0,@row_number:=0) as t ORDER BY master_id,lastcalltime DESC)cm ON cm.masterid=mast_tbl.id AND rnk=1 JOIN campaign_mapping_', pid, ' camp ON camp.map_id = cm.mapid JOIN importmaster_',pid,' imp ON imp.id = camp.FileId LEFT JOIN process_table_log_',pid,' log_tbl on camp.LastLogId = log_tbl.id WHERE camp.disposition is not null and ', wherecondition ,' ',if(IFNULL(cid,'')!='',CONCAT(' and ifnull(camp.campaign_id,0)=',cid,''),''), ' ',if(IFNULL(agentid,'')!='',CONCAT(' and camp.agent_id =',agentid,''),''),' '); #SELECT @QUERY1; PREPARE stmt FROM @QUERY1; EXECUTE stmt; DEALLOCATE PREPARE stmt; if IFNULL(@flagcount,0)>0 then DROP TABLE IF EXISTS temp_result1; IF IFNULL(flag, 0) = 1 THEN SET @QUERY1 = CONCAT(' CREATE TABLE temp_result1 AS SELECT camp.disposition AS `Disposition`, camp.sub_disposition AS `Sub_disposition`, COUNT(1) AS `Total`, IFNULL(SUM(CASE WHEN camp.disposition IN (SELECT disposition FROM process_disposition WHERE process_id = "', pid, '" AND IFNULL(closed_dispo, 0) = 1) THEN 1 ELSE 0 END), 0) AS `Dump` FROM process_table_', pid, ' mast_tbl JOIN (SELECT @row_number:=CASE WHEN@master_id=master_id THEN @row_number + 1 ELSE 1 END rnk, @master_id:=master_id masterid, map_id mapid from campaign_mapping_', pid, ', (SELECT @master_id:=0,@row_number:=0) as t ORDER BY master_id,lastcalltime DESC)cm ON cm.masterid=mast_tbl.id AND rnk=1 JOIN campaign_mapping_', pid, ' camp ON camp.map_id = cm.mapid JOIN importmaster_', pid, ' imp ON imp.id = camp.FileId LEFT JOIN process_table_log_',pid,' log_tbl on camp.LastLogId = log_tbl.id LEFT JOIN agent ON camp.Agent_id = agent.id LEFT JOIN user on user.id = agent.team_leader WHERE ', wherecondition , ' and ifnull(camp.disposition,"")!="" ',IF(IFNULL(cid,'')!='', CONCAT(' and ifnull(camp.campaign_id,0)=',cid,''),''), ' ',IF(IFNULL(tl_id,'')!='', CONCAT(' and user.id = ',tl_id,''),''),' ',IF(@AgentMapping = 1, CONCAT('AND ((camp.agent_id IS NULL OR MapToAgent = 0 OR MapToAgent IS NULL) OR (MapToAgent = 1 AND camp.Agent_id = "', agentid, '"))'), ''), ' ',IF(IFNULL(agentid, '') != '', CONCAT(' AND camp.agent_id = ', agentid), ''), ' GROUP BY camp.disposition, camp.sub_disposition '); #SELECT @QUERY1; PREPARE stmt FROM @QUERY1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @QUERY1 = CONCAT(' SELECT `Disposition`, `Sub_disposition`, `Total`, `Dump` FROM temp_result1 UNION ALL SELECT "Total", "", SUM(`Total`)`Total`, SUM(`Dump`)`Dump` FROM temp_result1; '); #SELECT @QUERY1; PREPARE stmt FROM @QUERY1; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; DROP TABLE IF EXISTS temp_result1; DROP TABLE IF EXISTS temp_result2; IF IFNULL(flag, 0) = 0 THEN SET @QUERY2 = CONCAT('CREATE TABLE temp_result2 AS SELECT camp.disposition AS `Disposition`, COUNT(*) AS `Total`, SUM(CASE WHEN camp.disposition IN (SELECT disposition FROM process_disposition WHERE process_id = ', pid, ' AND IFNULL(closed_dispo, 0) = 1) THEN 1 ELSE 0 END) AS `Dump` FROM process_table_', pid, ' mast_tbl JOIN (SELECT @row_number:=CASE WHEN@master_id=master_id THEN @row_number + 1 ELSE 1 END rnk, @master_id:=master_id masterid, map_id mapid from campaign_mapping_', pid, ', (SELECT @master_id:=0,@row_number:=0) as t ORDER BY master_id,lastcalltime DESC)cm ON cm.masterid=mast_tbl.id AND rnk=1 JOIN campaign_mapping_', pid, ' camp ON camp.map_id = cm.mapid JOIN importmaster_', pid, ' imp ON imp.id = camp.FileId LEFT JOIN process_table_log_',pid,' log_tbl on camp.LastLogId = log_tbl.id LEFT JOIN agent ON camp.Agent_id = agent.id LEFT JOIN user on user.id = agent.team_leader WHERE ', wherecondition , ' and ifnull(camp.disposition,"")!="" ',if(IFNULL(cid,'')!='', CONCAT(' and camp.campaign_id =', cid ),''),' ',if(IFNULL(tl_id,'')!='', CONCAT('and user.id = ',tl_id ),''),' ',IF(@AgentMapping = 1, CONCAT('AND ((camp.agent_id IS NULL OR MapToAgent = 0 OR MapToAgent IS NULL) OR (MapToAgent = 1 AND camp.Agent_id = "', agentid, '"))'), ''), ' ',IF(IFNULL(agentid, '') != '', CONCAT(' AND camp.agent_id = ', agentid), ''), ' GROUP BY camp.disposition; '); PREPARE stmt FROM @QUERY2; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @QUERY2 = CONCAT(' SELECT `Disposition`, `Total`, `Dump` FROM temp_result2 UNION ALL SELECT "Total", SUM(`Total`)`Total`, SUM(`Dump`)`Dump` FROM temp_result2;'); PREPARE stmt FROM @QUERY2; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; DROP TABLE IF EXISTS temp_result2; DROP TABLE IF EXISTS temp_result3; SET @QUERY3 = CONCAT(' CREATE TABLE temp_result3 AS Select agent.name AS `Agent_Name`, IFNULL(SUM(CASE WHEN ifnull(camp.dialed,0) = 0 AND camp.callAgainTime IS NULL AND ifnull(camp.disposition,"")="" AND (ifnull(DoNotCall,0) = 0 AND ifnull(StopCalling,0) =0) THEN 1 ELSE 0 END),0) AS `New`, IFNULL(SUM(CASE WHEN camp.CallAgainTime IS NOT NULL AND DATE(camp.CallAgainTime)CURDATE() AND (IFNULL(imp.active_file,0)=1 OR (IFNULL(imp.active_file,0)=0 AND IFNULL(imp.retain_callback,0)=1 AND camp.CallAgainTime is not NULL )) AND imp.mark_for_deletion=0 AND camp.dialed=0 AND IFNULL(camp.StopCalling,0)=0 AND IFNULL(camp.DoNotCall,0)=0 THEN 1 ELSE 0 END),0) AS `Future`, IFNULL(SUM(CASE WHEN camp.disposition IN (SELECT disposition FROM process_disposition WHERE process_id = ',pid,' AND ifnull(closed_dispo,0)=1) THEN 1 ELSE 0 END),0) AS `Dump`, ifnull(count(*),0) AS `Total` FROM process_table_', pid, ' mast_tbl JOIN (SELECT @row_number:=CASE WHEN@master_id=master_id THEN @row_number + 1 ELSE 1 END rnk, @master_id:=master_id masterid, map_id mapid from campaign_mapping_', pid, ', (SELECT @master_id:=0,@row_number:=0) as t ORDER BY master_id,lastcalltime DESC)cm ON cm.masterid=mast_tbl.id AND rnk=1 JOIN campaign_mapping_', pid, ' camp ON camp.map_id = cm.mapid JOIN importmaster_', pid, ' imp ON imp.id = camp.FileId LEFT JOIN process_table_log_',pid,' log_tbl on camp.LastLogId = log_tbl.id LEFT JOIN agent on camp.Agent_id=agent.id LEFT JOIN user on user.id = agent.team_leader WHERE ', wherecondition,' and agent.name is not null ',if(IFNULL(cid,'')!='', CONCAT(' and camp.campaign_id = ', cid ),''),' ',if(IFNULL(tl_id,'')!='', CONCAT('and user.id = ',tl_id ),''),' ',if(IFNULL(agentid,'')!='',CONCAT(' and camp.agent_id =',agentid ),''),' GROUP BY agent.name '); #SELECT @QUERY3; PREPARE stmt FROM @QUERY3; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @query3 = CONCAT('SELECT `Agent_Name`,`New`,`Pending`,`Today`,`Future`,`Dump`,`Total` FROM temp_result3 UNION ALL SELECT "Total",SUM(`New`)`New`,SUM(`Pending`)`Pending`,SUM(`Today`)`Today`,SUM(`Future`)`Future`,SUM(`Dump`)`Dump`,SUM(`Total`)`Total` FROM temp_result3;'); PREPARE stmt FROM @QUERY3; EXECUTE stmt; DEALLOCATE PREPARE stmt; #END IF; END IF; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_CallLogReport`; DELIMITER // CREATE PROCEDURE `get_CallLogReport`( IN `pid` VARCHAR(100), IN `custom_field` VARCHAR(3000), IN `custom_condition` VARCHAR(2000), IN `custom_order` VARCHAR(500), IN `pagelimit` VARCHAR(500), IN `tablename` VARCHAR(100) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET SESSION group_concat_max_len = 1000000; SET @Mastertab=NULL; SET @logtab=NULL; SET @sublogtab=NULL; if IFNULL(tablename,'')!='' then SET @droptable1 = CONCAT('drop table if exists ',tablename); PREPARE stmt_droptable1 FROM @droptable1; EXECUTE stmt_droptable1; DEALLOCATE PREPARE stmt_droptable1; END if; SELECT IFNULL(allow_agt_pl_reco,0) INTO @AgentToPlayRec FROM process_setting WHERE process_id=pid; if ifnull(pid,0)>0 then SELECT TABLE_NAME,log_table_name,sub_log_table_name INTO @Mastertab,@logtab,@sublogtab FROM formbuilder WHERE Process_id=pid AND form_type='master' LIMIT 1; /*SELECT group_concat(case when formbuilder_field.create_log=0 then CONCAT( 'CONCAT("******",RIGHT(t1.',formbuilder_field.field_name,',1)) As "',formbuilder_field.field_name,'"') END) , group_concat(case when formbuilder_field.create_log=1 then CONCAT(' t2.',formbuilder_field.field_name,' As "',formbuilder_field.field_name,'"') END ) INTO @process_column_listMaster,@process_column_listlog FROM formbuilder_field JOIN formbuilder ON formbuilder.id=formbuilder_field.form_id WHERE Process_id=pid AND formbuilder_field.sh_on_cl_lg=1;*/ SELECT GROUP_CONCAT(CONCAT( case when mask=1 then CONCAT('CONCAT("******",RIGHT(t1.',field_name,',4))',field_name) ELSE case when formbuilder_field.create_log=0 then CONCAT('t1.',field_name) END END)) , group_concat(case when formbuilder_field.create_log=1 then CONCAT(' t2.',formbuilder_field.field_name,' As "',formbuilder_field.field_name,'"') END ) INTO @process_column_listMaster,@process_column_listlog FROM formbuilder_field JOIN formbuilder ON formbuilder.id=formbuilder_field.form_id WHERE Process_id=pid AND formbuilder_field.sh_on_cl_lg=1; SET @process_column_list=CONCAT(if( IFNULL(@process_column_listMaster,"")!="" ,CONCAT(',', @process_column_listMaster) , "" ), ',campaign.name as "Campaign Name",t2.agent_name as "Agent Name",t2.start_time As "Start_Time",t2.pick_time As "Pick_Time",t2.end_time As "End_Time",t2.duration As"Crm_Duration",',if(IFNULL(@AgentToPlayRec,"")=1,CONCAT(' sublog.Call_Duration , '),""),'t2.disposition AS "Disposition",t2.sub_disposition As "Sub_Disposition",t2.CallType ',if( IFNULL(@process_column_listlog,"")!="" , CONCAT(',',@process_column_listlog) , "" )); SET @curdatetime = replace(replace(replace(replace(current_timestamp(6),'-',''),':',''),' ','_'),'.','_'); if @AgentToPlayRec = 1 then SET @TABLEQUERY=CONCAT('create table temp_sub_log_',@curdatetime,' as SELECT crm_id ,SUM(ifnull(bill_duration,0)) as "Call_Duration", group_concat(reco_file)recoding_file FROM ', @sublogtab ,' WHERE ifnull(crm_id,0)!=0 AND ifnull(bill_duration,0)>0 GROUP BY crm_id'); PREPARE process_call_log_stmt FROM @TABLEQUERY; EXECUTE process_call_log_stmt; DEALLOCATE PREPARE process_call_log_stmt; END if; SET @SELECTQUERY=CONCAT('SELECT t2.parent_id AS"Masterid",cmpMap.map_id,t2.id AS "LogId" ,t2.crm_id AS "CrmId", t2.campaign As "Camp_id" ',Case when IFNULL(custom_field,'') NOT IN('All','') then CONCAT(',',custom_field) when IFNULL(custom_field,'')='All' then IFNULL(@process_column_list,'') ELSE '' END,if(@AgentToPlayRec=1," ,ifnull(recoding_file,'No-Recording-FOUND!') recoding_file","") ); SET @TABLEQUERY=CONCAT(' FROM ',@Mastertab,' t1 LEFT join branch_master ON t1.branch_id=branch_master.id RIGHT JOIN ',@logtab,' t2 ON t2.parent_id=t1.id LEFT JOIN campaign on t2.campaign=campaign.id LEFT JOIN campaign_mapping_',pid,' cmpMap ON cmpMap.map_id=t2.camp_map_id /*campaign_mapping_',pid,'.map_id=t2.camp_map_id*/ LEFT JOIN user ON user.id=t2.team_leader LEFT JOIN agent ON agent.name=t2.agent_name', if(@AgentToPlayRec=1,CONCAT(' LEFT JOIN temp_sub_log_',@curdatetime,' sublog ON sublog.crm_id=t2.crm_id '),''),' where 1=1 ',Case when IfNULL(custom_condition,'')!='' then CONCAT(' and ',custom_condition) ELSE ' ' END ); if IFNULL(pagelimit,'')='' AND IFNULL(tablename,'')='' then SET @CALL_LOG_QUERY=CONCAT('select count(1) as rowcount ',@TABLEQUERY); ELSEIF IFNULL(pagelimit,'')!='' AND IFNULL(tablename,'')='' then SET @CALL_LOG_QUERY=CONCAT(@SELECTQUERY,' ',@TABLEQUERY,' Order by ',Case when IfNULL(custom_order,'')!='' then custom_order ELSE ' t2.id ' END ,Case when IfNULL(pagelimit,'')!='' then CONCAT(' limit ',pagelimit) ELSE ' limit 0,100 ' END); ELSE SET @CALL_LOG_QUERY=CONCAT('create table ',tablename,' as ',@SELECTQUERY,' ',@TABLEQUERY,' Order by ',Case when IfNULL(custom_order,'')!='' then custom_order ELSE ' t2.id ' END); END if; ELSE SET @CALL_LOG_QUERY='select "select valid process" AS "ERROR"'; END if; #SELECT @CALL_LOG_QUERY; PREPARE process_call_log_stmt FROM @CALL_LOG_QUERY; EXECUTE process_call_log_stmt; DEALLOCATE PREPARE process_call_log_stmt; if IFNULL(tablename,'')!='' then SELECT 1 return_value; /*SET @droptable1 = CONCAT('drop table if exists ',tablename); PREPARE stmt_droptable1 FROM @droptable1; EXECUTE stmt_droptable1; DEALLOCATE PREPARE stmt_droptable1;*/ END if; SET @droptable2 = CONCAT('drop table if exists temp_sub_log_',@curdatetime); PREPARE stmt_droptable2 FROM @droptable2; EXECUTE stmt_droptable2; DEALLOCATE PREPARE stmt_droptable2; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `Check_Index`; DELIMITER // CREATE PROCEDURE `Check_Index`( IN `tablename` VARCHAR(50), IN `columnname` VARCHAR(50) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @datacheck=NULL; SET @sql=CONCAT(' SELECT count(1) count into @datacheck FROM information_schema.statistics WHERE table_schema = DATABASE() AND table_name = "',tablename,'" AND index_name = "',columnname,'"; '); #SELECT @SQL; PREPARE stmt FROM @SQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; if IFNULL(@datacheck,0)<=0 then SET @query=CONCAT('ALTER TABLE ',tablename,' ADD INDEX ',columnname,' (',columnname,') USING BTREE;'); #SELECT @QUERY; PREPARE stmt FROM @QUERY; EXECUTE stmt; DEALLOCATE PREPARE stmt; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getDatamanagementRecord`; DELIMITER // CREATE PROCEDURE `getDatamanagementRecord`( IN `pid` VARCHAR(10), IN `wherecondition` LONGTEXT, IN `rowlimit` VARCHAR(50), IN `hide_phone_no` VARCHAR(1), IN `Orderby` VARCHAR(1000), IN `Team_Leader` VARCHAR(50) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @MasterColumn=(SELECT GROUP_CONCAT(CONCAT(case when hide_phone_no=1 AND data_type='phone' then CONCAT('CONCAT("******",RIGHT(`t2`.',field_name,',4))',field_name) ELSE case when hide_phone_no=1 AND mask=1 then CONCAT('CONCAT("******",RIGHT(`t2`.',field_name,',4))',field_name) else CONCAT('`t2`.`',field_name,'`') end end)) FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=pid AND create_log=0 AND form_type='master'); if IFNULL(rowlimit,'')='' then SET @selectquery='SELECT COUNT(1) no_of_rec '; ELSE SET @selectquery=CONCAT('SELECT `t1`.`map_id`, `t1`.`campaign_id`,`t4`.`id` as `camp_id`, `t1`.`master_id`, `t1`.`dialed`, `t6`.`name`,CONCAT(user.first_name," ",user.last_name) `Team Leader`, `t1`.`CallAgainTime`,`t1`.`CallAgainNo`, `t1`.`CallAgainNoAttempt`, `t1`.`LastCallTime`, `t1`.`disposition`, `t1`.`sub_disposition`, `t1`.`NoOfAttempts`, `t1`.`DoNotCall`, `t1`.`dncReason`, `t1`.`CallConnected`, `t1`.`UniqueId`, `t1`.`CallAssignPhoneNo`, `t1`.`HangupCause`, `t1`.`StopCalling`, `t1`.`FileId`, `t1`.`LastLogId`, `t1`.`LastIvrDigit`, `t1`.`DataChurnCounter`, `t1`.`CallAgainType`, `t1`.`callbackLastDialTime`, IF(t1.MapToAgent = 1, "Yes", "No") MapToAgent_txt, `t1`.`AutoChurnCounter`, `t1`.`agent_id`, /*`t2`.*,*/`t2`.id,`t2`.parent_id,`t2`.isDNC,`t2`.isDNE,`t2`.branch_id,`t2`.import_status,`t2`.san_insert_date,`t2`.san_unique_id,`t2`.san_caller_name,`t2`.san_email_id,`t2`.`last_disposition`,',@MasterColumn,', `t3`.*, IF(t1.dialed = 1, "Yes", "No") dialed_txt, IF(t1.DoNotCall = 1, "Yes", "No") DNC_agent, IF(t1.DoNotCall = 1, "Yes", "No") DoNotCall_txt, `t4`.`name` `campaign_name`, `t5`.`name` `branch_name`, `t1`.`StopCalling`, `t1`.`StopCallingReason`, `t1`.`StopCallingUpdateTime`'); END if; SET @fromquery=CONCAT('FROM `campaign_mapping_',pid,'` `t1` INNER JOIN `process_table_',pid,'` `t2` ON `t2`.`id` = `t1`.`master_id` LEFT JOIN `importmaster_',pid,'` `t3` ON `t3`.`id` = `t1`.`FileId` LEFT JOIN `campaign` `t4` ON `t4`.`id` = `t1`.`campaign_id` LEFT JOIN `branch_master` `t5` ON `t5`.`id` = `t2`.`branch_id` LEFT JOIN `agent` `t6` ON `t6`.`id` = `t1`.`agent_id` LEFT JOIN user on user.id=t6.team_leader '); SET @WhereCond=CONCAT('where 1=1 AND ',wherecondition,' ',if(IFNULL(Team_Leader,"")!="",CONCAT(' and user.id="',Team_Leader,'"'),""),''); SET @orderby = CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby ) ELSE ' ' end,case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); SET @sql=CONCAT(IFNULL(@selectquery,''), IFNULL(@fromquery,''), IFNULL(@WhereCond,''), IFNULL(@orderby,'')); #SELECT @SQL; PREPARE stmtsql FROM @sql; execute stmtsql; DEALLOCATE PREPARE stmtsql; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `custom_callback_report`; DELIMITER // CREATE PROCEDURE `custom_callback_report`( IN `pid` VARCHAR(50), IN `cid` VARCHAR(50), IN `fromdate` VARCHAR(50), IN `todate` VARCHAR(50), IN `wherecondition` TEXT, IN `rowlimit` VARCHAR(100), IN `orderby` VARCHAR(50) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; if IFNULL(rowlimit,'')='' then SET @selectquery='SELECT COUNT(1) no_of_rec '; ELSE SET @selectquery=CONCAT('SELECT log_tbl.log_phone_no AS "Call Back No", log_tbl.prev_callback_time AS "Call Back Set Time", log_tbl.start_time AS "Actual Dial Time", log_tbl.agent_name AS "Call Back Scheduled By", SEC_TO_TIME(TIMESTAMPDIFF(SECOND,log_tbl.start_time,log_tbl.prev_callback_time))TAT, CASE WHEN log_tbl.prev_callback_time IS NOT NULL AND DATE(log_tbl.prev_callback_time) > CURDATE() THEN ''Upcoming'' WHEN log_tbl.prev_callback_time IS NOT NULL AND DATE(log_tbl.prev_callback_time) < CURDATE() THEN ''Missed'' WHEN log_tbl.start_time > log_tbl.prev_callback_time AND TIMESTAMPDIFF(SECOND, log_tbl.prev_callback_time, log_tbl.start_time) > 300 AND DATE(log_tbl.prev_callback_time) = CURDATE() THEN ''Delay'' WHEN TIMESTAMPDIFF(SECOND, log_tbl.start_time,log_tbl.prev_callback_time) <= 300 AND DATE(log_tbl.prev_callback_time) = CURDATE() THEN ''Success'' WHEN log_tbl.prev_callback_time IS NOT NULL AND log_tbl.start_time < log_tbl.prev_callback_time THEN ''Early'' END AS CallBackStatus '); END if; SET @fromquery=CONCAT('from process_table_log_',pid,' AS log_tbl JOIN process_table_',pid,' AS mast_tbl ON mast_tbl.id = log_tbl.parent_id JOIN campaign_mapping_',pid,' AS cmpMap ON log_tbl.camp_map_id = cmpMap.map_id AND log_tbl.parent_id = cmpMap.master_id LEFT JOIN agent on cmpMap.Agent_id= agent.id LEFT JOIN user ON user.id = agent.team_leader '); SET @WhereCond=CONCAT('where 1=1 ',wherecondition,' and log_tbl.start_time>="',fromdate,'" and log_tbl.start_time<="',todate,'" ',if(IFNULL(cid,'')!='',CONCAT(' and log_tbl.campaign in (',cid,') '),''),' and prev_callback_time is not null '); SET @orderby = CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby ) ELSE CONCAT(' order by Start_time desc') end,case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); SET @sql=CONCAT(IFNULL(@selectquery,''), IFNULL(@fromquery,''), IFNULL(@WhereCond,''),IFNULL(@orderby,'')); #SELECT @SQL; PREPARE stmtsql FROM @sql; execute stmtsql; DEALLOCATE PREPARE stmtsql; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `conferenceCallLogReport`; DELIMITER // CREATE PROCEDURE `conferenceCallLogReport`( IN `process_id` INT, IN `campaign_id` VARCHAR(20), IN `fromdate` VARCHAR(50), IN `todate` VARBINARY(50), IN `wherecondition` TEXT, IN `rowlimit` VARCHAR(25) ) BEGIN if IFNULL(rowlimit,'') = '' then SET @sqlquery = 'select count(1) Total_Cnt'; ELSE SET @sqlquery = 'SELECT max(t3.name) "Campaign Name",conf_id "Conf Id",max(t2.agent_name) "Agent Name", max(t2.extension_no) "Extension",GROUP_CONCAT(t1.caller_id) "Conf Member",MIN(t1.start_date) "Start Time", MAX(t1.start_date) "End Time",sec_to_time(t1.duration)Duration,MAX(recording_file) Recording'; END if; SET @fromquery = CONCAT('FROM conference_call_log t1 JOIN process_table_log_',process_id,' t2 ON t1.p_id=',process_id,' and t1.crm_id=t2.crm_id left JOIN campaign t3 ON t2.campaign=t3.id where 1=1 ',wherecondition,' ',if(IFNULL(campaign_id,'')!='', CONCAT(' and t3.id in (', campaign_id ,')'),''),' and t1.start_date>="', fromdate ,'" and t1.start_date<="', todate ,'" GROUP BY conf_id order by t1.start_date desc ',if(IFNULL(rowlimit,'') = '','',CONCAT(' LIMIT ',rowlimit))); SET @mainquery = CONCAT(@sqlquery,' ',@fromquery); PREPARE stmt FROM @mainquery; EXECUTE stmt; DEALLOCATE PREPARE stmt; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_ProcesswiseData`; DELIMITER // CREATE PROCEDURE `get_ProcesswiseData`( IN `pid` VARCHAR(20) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @QUERY=CONCAT('SELECT pl.agent_id, pl.agent_name, pl.extension_no, Call_Count, Incoming, Outgoing,Answered,Abandoned, Break_Time, TotalSMS_Sent, Whatsapp_Sent, SMS_Sent FROM ( SELECT agent_id, agent_name, extension_no, COUNT(1) AS Call_Count, SUM(CASE WHEN calltype = "Incoming" THEN 1 ELSE 0 END) AS Incoming, SUM(CASE WHEN calltype = "Outgoing" THEN 1 ELSE 0 END) AS Outgoing, SUM(CASE WHEN ifnull(CallConnected,0) = 1 THEN 1 ELSE 0 END) AS Answered, SUM(CASE WHEN ifnull(CallConnected,0)=0 THEN 1 ELSE 0 END) AS Abandoned FROM process_table_log_',pid,' WHERE start_time >CURDATE() AND agent_name IS NOT NULL GROUP BY agent_id, agent_name, extension_no ) pl LEFT JOIN ( SELECT agent_id, agent_name, extension_no, SEC_TO_TIME(SUM(CASE WHEN status = 4 THEN TIMESTAMPDIFF(SECOND, start_time, end_time) ELSE 0 END)) AS Break_Time FROM agent_login_log_',pid,' WHERE start_time > CURDATE() AND agent_name IS NOT NULL GROUP BY agent_id, agent_name, extension_no ) ams ON ams.agent_id = pl.agent_id LEFT JOIN ( SELECT agent_id, (SUM(CASE WHEN whatsapp_sent = 1 THEN 1 ELSE 0 END) + SUM(CASE WHEN sms_sent = 1 THEN 1 ELSE 0 END)) AS TotalSMS_Sent, SUM(CASE WHEN whatsapp_sent = 1 THEN 1 ELSE 0 END) AS Whatsapp_Sent, SUM(CASE WHEN sms_sent = 1 THEN 1 ELSE 0 END) AS SMS_Sent FROM sms_log_',pid,' WHERE added_on > CURDATE() AND agent_id IS NOT NULL GROUP BY agent_id ) sms ON sms.agent_id = pl.agent_id'); PREPARE stmt FROM @QUERY; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getDataInsertTempRecord`; DELIMITER // CREATE PROCEDURE `getDataInsertTempRecord`( IN `pid` VARCHAR(10), IN `wherecondition` LONGTEXT, IN `rowlimit` VARCHAR(50), IN `hide_phone_no` VARCHAR(1), IN `Orderby` VARCHAR(500) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @MasterColumn=(SELECT GROUP_CONCAT(CONCAT(case when hide_phone_no=1 AND data_type='phone' then CONCAT('CONCAT("******",RIGHT(`t1`.',field_name,',4))',field_name) ELSE case when hide_phone_no=1 AND mask=1 then CONCAT('CONCAT("******",RIGHT(`t1`.',field_name,',4))',field_name) else CONCAT('`t1`.',field_name) end end)) FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=pid AND create_log=0 AND form_type='master'); if IFNULL(rowlimit,'')='' then SET @selectquery='SELECT COUNT(1) no_of_rec '; ELSE SET @selectquery=CONCAT('SELECT `t1`.id,`t1`.parent_id,`t1`.isDNC,`t1`.isDNE,`t1`.branch_id,`t1`.import_status,`t1`.san_insert_date, `t1`.san_unique_id,`t1`.san_caller_name,`t1`.san_email_id,`t1`.`last_disposition`, ',@MasterColumn,', `t1`.`CallAgainTime`,`t1`.`campaign_id`,`t1`.`process_id`,`t1`.`agent`,`t1`.`dialed`, `t1`.`update_flag`,`t1`.`Insert_flag`,`t1`.`File_id`,`t1`.`processed` '); END if; SET @fromquery=CONCAT('FROM `process_table_data_insert_logic_',pid,'` `t1` '); SET @WhereCond=CONCAT('where 1=1 AND ', wherecondition,' '); SET @orderby = CONCAT(Case when ifnull(Orderby,'')!='' then CONCAT(' Order By ',Orderby ) ELSE ' ' end,case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); SET @sql=CONCAT(IFNULL(@selectquery,''), IFNULL(@fromquery,''), IFNULL(@WhereCond,''), IFNULL(@orderby,'')); #SELECT @SQL; PREPARE stmtsql FROM @sql; execute stmtsql; DEALLOCATE PREPARE stmtsql; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `qa_dashboard_new`; DELIMITER // CREATE PROCEDURE `qa_dashboard_new`( IN `agentname` VARCHAR(50), IN `processid` VARCHAR(50), IN `client_id` INT ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @logtbale=CONCAT('process_table_log_',processid,''); SET @query=CONCAT('SELECT qam.id, qam.agent_name, user.first_name AS auditor_Name,qps.re_audit, DATE_FORMAT(DATE_OF_AUDIT, ''%d-%m-%Y %H:%i:%s'') as DATE_OF_AUDIT, DATE_FORMAT(DATE_OF_CALL, ''%d-%m-%Y %H:%i:%s'') as DATE_OF_CALL, qa_dispositionmaster.qa_dispostion, EXTERNAL_PERFORMANCE,INTERNAL_PERFORMANCE, FATAL_ERROR_CALL,CALL_SUMMARY,area_of_strength,area_of_development,qam.feedback,qam.process_id, qam.parent_id,log_id,qam.log_phone_no,p1.Agent_comment FROM qa_audit_master_',client_id,' qam JOIN ',@logtbale,' p1 ON p1.id=qam.log_id LEFT JOIN qa_dispositionmaster ON qa_dispositionmaster.id = qam.qa_disposition_id LEFT JOIN user ON user.id=qam.auditor_id LEFT JOIN qa_processquestion_setup qps ON qps.id = qam.qa_setup_id WHERE qam.agent_name= "',agentname,'" AND qam.feedback IS NULL OR qam.feedback ="Reconsider" AND decline_state !=1 ORDER BY date_of_audit DESC'); #SELECT @QUERY; PREPARE stmt FROM @query; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `qa_dashboard_month_new`; DELIMITER // CREATE PROCEDURE `qa_dashboard_month_new`( IN `agentname` VARCHAR(50), IN `client_id` INT ) BEGIN SET @sqlquery= CONCAT('select Count(*)NoAuditer, ROUND(avg(Internal_Performance),0)AVGSCORE , Sum(case when Fatal_Error_Call=1 then 1 else 0 END )FatalErrorCount from qa_audit_master_',client_id,' WHERE date_of_audit >= DATE_ADD(CURDATE(),interval -30 DAY) AND YEAR(date_of_audit) = YEAR(CURDATE()) AND agent_name = "',agentname,'" group by agent_name '); PREPARE stmt FROM @sqlquery; EXECUTE stmt; DEALLOCATE PREPARE stmt; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `qa_dashboard_week_new`; DELIMITER // CREATE PROCEDURE `qa_dashboard_week_new`( IN `agentname` VARCHAR(50), IN `reportstatus` INT, IN `client_id` INT ) BEGIN SET @month_int = ''; if(MONTH(CURDATE()) < 10) then SET @month_int = CONCAT('0',MONTH(CURDATE())); ELSE SET @month_int = MONTH(CURDATE()); END if; SET @month_start_date = ''; SELECT CONCAT(YEAR(CURDATE()),"-",@month_int,"-","01") AS DATE INTO @month_start_date; if(reportstatus = 0) then SET @sqldefault = CONCAT('select Count(*)NoAuditer, ROUND(avg(Internal_Performance),0)AVGSCORE , Sum(case when Fatal_Error_Call=1 then 1 else 0 end )FatalErrorCount from qa_audit_master_',client_id,' where date_of_audit BETWEEN ''',@month_start_date,''' AND DATE_ADD(LAST_DAY(''',@month_start_date,'''),interval 1 day) and agent_name = ''',agentname,''' group by agent_name'); PREPARE stmt FROM @sqldefault; EXECUTE stmt; DEALLOCATE PREPARE stmt; ELSE SET @Final = CONCAT('SELECT Count(*)NoAuditer, ROUND(avg(Internal_Performance),0)AVGSCORE , Sum(case when Fatal_Error_Call=1 then 1 else 0 end )FatalErrorCount from qa_audit_master_',client_id,' where date_of_audit BETWEEN ''',@month_start_date,''' AND DATE_ADD(''',@month_start_date,''',interval 7 day) and agent_name = ''',agentname,''' #group by agent_name UNION ALL SELECT Count(*)NoAuditer, ROUND(avg(Internal_Performance),0)AVGSCORE , Sum(case when Fatal_Error_Call=1 then 1 else 0 end )FatalErrorCount from qa_audit_master_',client_id,' where date_of_audit BETWEEN DATE_ADD(''',@month_start_date,''',interval 7 DAY) AND DATE_ADD(DATE_ADD(''',@month_start_date,''',interval 8 DAY),interval 6 day) and agent_name = ''',agentname,''' #group by agent_name UNION ALL SELECT Count(*)NoAuditer, ROUND(avg(Internal_Performance),0)AVGSCORE , Sum(case when Fatal_Error_Call=1 then 1 else 0 end )FatalErrorCount from qa_audit_master_',client_id,' where date_of_audit BETWEEN DATE_ADD(''',@month_start_date,''',interval 14 DAY) AND DATE_ADD(DATE_ADD(''',@month_start_date,''',interval 15 DAY),interval 7 day) and agent_name = ''',agentname,''' #group by agent_name UNION ALL SELECT Count(*)NoAuditer, ROUND(avg(Internal_Performance),0)AVGSCORE , Sum(case when Fatal_Error_Call=1 then 1 else 0 end )FatalErrorCount from qa_audit_master_',client_id,' where date_of_audit BETWEEN DATE_ADD(''',@month_start_date,''',interval 22 DAY) AND DATE_ADD(LAST_DAY(''',@month_start_date,'''),interval 1 day) and agent_name = ''',agentname,''' #group by agent_name ') ; PREPARE stmt FROM @Final; EXECUTE stmt; DEALLOCATE PREPARE stmt; END if; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getAPR_dashboard_log`; DELIMITER // CREATE PROCEDURE `getAPR_dashboard_log`( IN `pid` INT, IN `cid` VARCHAR(50), IN `fromdate` VARCHAR(20), IN `todate` VARCHAR(20), IN `agentid` VARCHAR(50), IN `stateType` VARCHAR(50), IN `wherecon` VARCHAR(50), IN `rowlimit` VARCHAR(10) ) SQL SECURITY INVOKER BEGIN SET @PhoneNoField=(SELECT CONCAT(CASE WHEN mask = 1 THEN CONCAT('CONCAT("******",RIGHT(agent_login_log.phone_no,4)) AS "Called No" ') ELSE CONCAT(' agent_login_log.phone_no ') END) FROM formbuilder_field join process on formbuilder_field.form_id=process.form_id WHERE process.id=pid and ifnull(formbuilder_field.primary_phone_no,0)=1 AND formbuilder_field.data_type='Phone'); if IFNULL(rowlimit,'')='' then SET @selectquery='SELECT COUNT(1) no_of_rec '; ELSE SET @selectquery=CONCAT(' SELECT agent_login_log.agent_id AS "Agent ID" , agent_login_log.agent_name AS "Agent Name", agent_login_log.extension_no as "Exten No" , agent_status.`name` AS "State Name", ',if(IFNULL(@PhoneNoField,"")="","",CONCAT(@PhoneNoField,',')),' agent_login_log.start_time AS "Start Time" , agent_login_log.end_time AS "End Time" , SEC_TO_TIME (agent_login_log.duration) AS "Duration" '); END if; SET @fromquery=CONCAT(' FROM agent_login_log_',pid,' agent_login_log LEFT JOIN campaign ON campaign.id = agent_login_log.campaign_id LEFT JOIN agent_status ON agent_status.id=agent_login_log.`status` LEFT JOIN agent ON agent.`name`=agent_login_log.agent_name WHERE start_time>="',fromdate,'" AND start_time<="',todate,'" ',if(IFNULL(agentid,'')!='' ,CONCAT(' and agent_login_log.agent_id in (',agentid,')'),''),' ', if(IFNULL(cid,'')!='' , CONCAT(' and agent_login_log.campaign_id in (',cid,')'),''),' ',if(IFNULL(wherecon,'')!='' ,CONCAT(' and ', wherecon,''),''),' ' ); if IFNULL(stateType,'')='Login_Count' then SET @WHERE = CONCAT(' and agent_login_log.status=1 ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='Total_Calls' then SET @WHERE = CONCAT(' and agent_login_log.status in (6,23,13,8,16) ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='Inbound_Calls' then SET @WHERE = CONCAT(' and agent_login_log.status in (6,23,13) ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='Answered_Call' then SET @WHERE = CONCAT(' and agent_login_log.status in (6,23) ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='Outbound_Calls' then SET @WHERE = CONCAT(' and agent_login_log.status in (8,16) ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='Con_Outgoing_Call' then SET @WHERE = CONCAT(' and agent_login_log.status =7 ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='Break_Count' then SET @WHERE = CONCAT(' and agent_login_log.status=4 ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='Idle_Duration' then SET @WHERE = CONCAT(' and agent_login_log.status in(3,10) ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='In_Call_Duration' then SET @WHERE = CONCAT(' and agent_login_log.status in (6,23,7) ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'')='Wrapup_Duration' then SET @WHERE = CONCAT(' and agent_login_log.status=5 ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); ELSEIF IFNULL(stateType,'') NOT IN ('Login_Count','Total_Calls','Inbound_Calls','Answered_Call','Outbound_Calls','Con_Outgoing_Call','Break_Count','Idle_Duration','In_Call_Duration','Wrapup_Duration') then SET @WHERE = CONCAT(' and 1=2 ',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END,' '); END if; SET @query_string = CONCAT( @selectquery,@fromquery, @WHERE ); #SELECT @query_string; PREPARE stmt FROM @query_string; EXECUTE stmt; DEALLOCATE PREPARE stmt; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getAPR_dashboard`; DELIMITER // CREATE PROCEDURE `getAPR_dashboard`( IN `pid` VARCHAR(10), IN `cid` VARCHAR(50), IN `fromdate` VARCHAR(20), IN `todate` VARCHAR(20), IN `agent_id` VARCHAR(50), IN `wherecondition` VARCHAR(50), IN `tl` VARCHAR(20) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @query_string=CONCAT('SELECT ifnull(SUM(CASE WHEN agent_login_log.status=1 THEN 1 ELSE 0 END),0) Login_Count, "login-Count.png" Login_Count_Icon, ifnull(SUM(CASE WHEN agent_login_log.status IN (6,23,13) THEN 1 ELSE 0 END)+SUM(CASE WHEN agent_login_log.status IN (8,16) and agent_login_log.start_time!=agent_login_log.end_time THEN 1 ELSE 0 END),0) Total_Calls, "Total-Call.png" Total_Calls_Icon, ifnull(SUM(CASE WHEN agent_login_log.status IN (6,23,13) THEN 1 ELSE 0 END),0) Inbound_Calls, "Inbound-call.png" Inbound_Calls_Icon, ifnull(SUM(CASE WHEN agent_login_log.status in (6,23) THEN 1 ELSE 0 END),0) Answered_Call, "Inbound-call.png" Answered_Call_Icon, ifnull(SUM(CASE WHEN agent_login_log.status IN (8,16) and agent_login_log.start_time!=agent_login_log.end_time THEN 1 ELSE 0 END),0) Outbound_Calls, "Outbound-calls.png" Outbound_Calls_Icon, ifnull(SUM(CASE WHEN agent_login_log.status =7 and agent_login_log.start_time!=agent_login_log.end_time THEN 1 ELSE 0 END),0) Con_Outgoing_Call, "Inbound-call.png" Con_Outgoing_Call_Icon, ifnull(SUM(CASE WHEN agent_login_log.status=4 THEN 1 ELSE 0 END),0) Break_Count, "in-call-duration.png" Break_Count_Icon, SEC_TO_TIME(ifnull(TIMESTAMPDIFF(SECOND,MIN(CASE WHEN agent_login_log.status=1 THEN start_time END),MAX(start_time)),0)) Login_Duration, "login-duration.png" Login_Duration_Icon, SEC_TO_TIME(ifnull(SUM(CASE WHEN agent_login_log.status in(3,10) THEN TIMESTAMPDIFF(SECOND,start_time, end_time) ELSE 0 END),0)) Idle_Duration, "Idle-duration.png" Idle_Duration_Icon, SEC_TO_TIME(ifnull(SUM(CASE WHEN agent_login_log.status in (6,23) THEN TIMESTAMPDIFF(SECOND, start_time, end_time) ELSE 0 END) + SUM(CASE WHEN agent_login_log.status =7 THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END),0)) In_Call_Duration, "in-call-duration.png" In_Call_Duration_Icon, SEC_TO_TIME(ifnull(SUM(CASE WHEN agent_login_log.status=5 THEN TIMESTAMPDIFF(SECOND, start_time, end_time) ELSE 0 END),0)) Wrapup_Duration, "wrapup-duation.png" Wrapup_Duration_Icon, SEC_TO_TIME(ifnull(SUM(CASE WHEN agent_login_log.status=4 AND staff_time=1 THEN TIMESTAMPDIFF(SECOND, start_time, end_time) ELSE 0 END),0)) Productive_Break_Time, "productive break time.png" Productive_Break_Time_Icon, SEC_TO_TIME(ifnull(SUM(CASE WHEN agent_login_log.status=4 AND ifnull(staff_time,0)=0 THEN TIMESTAMPDIFF(SECOND, start_time, end_time) ELSE 0 END),0)) Non_Productive_Break_Time, "Non productive break time.png" Non_Productive_Break_Time_Icon, SEC_TO_TIME(ifnull(SUM(CASE WHEN agent_login_log.status IN (3,5,6,23,7,8,16,9,10,12,13) THEN TIMESTAMPDIFF(SECOND, start_time, end_time) ELSE 0 END)+SUM(CASE WHEN agent_login_log.status=4 AND staff_time=1 THEN TIMESTAMPDIFF(SECOND, start_time, end_time) ELSE 0 END),0)) Staffed, "staffed.png" Staffed_Icon, SEC_TO_TIME(Round(Ifnull(SUM(CASE WHEN agent_login_log.status=5 THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END)/NULLIF(SUM(CASE WHEN agent_login_log.status=5 THEN 1 ELSE 0 END),0),0),0)) Avg_Wrapup, "Avg-wrapup.png" Avg_Wrapup_Icon, SEC_TO_TIME(Round(Ifnull((SUM(CASE WHEN agent_login_log.status=12 THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END)+SUM(CASE WHEN agent_login_log.status=5 THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END)+SUM(CASE WHEN agent_login_log.status in (6,23) THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END)+SUM(CASE WHEN agent_login_log.status=7 THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END))/NULLIF((SUM(CASE WHEN agent_login_log.status in (6,23) THEN 1 ELSE 0 END)+SUM(CASE WHEN agent_login_log.status=7 THEN 1 ELSE 0 END)),0),0),0)) AHT, "AHT.png" AHT_Icon, SEC_TO_TIME(Round(Ifnull(SUM(CASE WHEN agent_login_log.status=12 THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END)/NULLIF(SUM(CASE WHEN agent_login_log.status IN (6,23,13) THEN 1 ELSE 0 END),0),0),0)) ASA, "ASA.png" ASA_Icon, SEC_TO_TIME(Round(Ifnull((SUM(CASE WHEN agent_login_log.status in (6,23) THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END)+SUM(CASE WHEN agent_login_log.status=7 THEN TIMESTAMPDIFF(SECOND,start_time,end_time) ELSE 0 END))/NULLIF((SUM(CASE WHEN agent_login_log.status in (6,23) THEN 1 ELSE 0 END)+SUM(CASE WHEN agent_login_log.status=7 THEN 1 ELSE 0 END)),0),0),0)) ATT, "AHT.png" ATT_Icon, "login-Count.png" agent_login_log_Icon FROM agent_login_log_',pid,' agent_login_log LEFT JOIN agent_status ON agent_status.id = agent_login_log.status LEFT JOIN agentbreak ON agentbreak.id = agent_login_log.break_id LEFT JOIN agent ON agent.name = agent_login_log.agent_name LEFT JOIN user on agent.team_leader = user.id WHERE 1=1 and ', wherecondition ,' and agent_login_log.agent_name IS NOT NULL AND agent_login_log.agent_name != "" AND agent_login_log.process_id=',pid,' AND agent_login_log.start_time >="',fromdate,'" AND agent_login_log.end_time <="',todate,'" ',if(IFNULL(agent_id,"")!="",CONCAT(' and agent_id in (',agent_id,') '),""),' ',if(IFNULL(cid,"")!="", CONCAT(' and agent_login_log.campaign_id in (', cid ,')'),"") ,' ',if( IFNULL(tl,"")!="", CONCAT(' and user.id in (',tl,')'),""),' '); PREPARE stmt FROM @query_string; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `qa_dispositionwiseReport`; DELIMITER // CREATE PROCEDURE `qa_dispositionwiseReport`( IN `client_id` INT, IN `agent_id` VARCHAR(50), IN `fromDate` VARCHAR(30), IN `toDate` VARCHAR(30), IN `process_id` VARCHAR(10), IN `campaign_id` VARCHAR(10) ) BEGIN DROP TABLE if EXISTS temp_dispo,temp_dispo1; IF(process_id!='') then SET @process_id=CONCAT(' AND qam.process_id=',process_id); END if; IF(campaign_id!='') then SET @campaign_id=CONCAT(' AND qam.campaign_id in (',campaign_id,')'); END if; if(fromDate ='') then SET @fromDate = CONCAT(' and date_of_audit>="',CURDATE(),' 00:00:00"'); ELSE SET @fromDate = CONCAT(' and date_of_audit>="', fromDate,'"' ); END if; if(toDate ='' ) then SET @toDate= CONCAT(' and date_of_audit<="',CURDATE(),' 23:59:59"'); ELSE SET @toDate= CONCAT(' and date_of_audit<= "',toDate,'"' ); END if; SET @dispo =CONCAT(' create table temp_dispo as SELECT log_tbl.qa_disposition `QA_Disposition`, COUNT(1)`Total_Count` FROM process_table_log_',process_id,' log_tbl LEFT JOIN qa_audit_master_',client_id,' qam ON qam.id =log_tbl.san_audit_id WHERE 1=1 and ifnull(log_tbl.qa_disposition,"")!="" ',@process_id,' ',@campaign_id,'',@fromDate,' ',@toDate,' ',if(IFNULL(agent_id,"")!="", CONCAT(' and qam.agent_id in (',agent_id,')') ,""),' GROUP BY log_tbl.qa_disposition '); PREPARE stmt FROM @dispo; EXECUTE stmt; DEALLOCATE PREPARE stmt; SELECT * FROM temp_dispo; SET @dispo =CONCAT(' create table temp_dispo1 as SELECT log_tbl.qa_disposition `QA_Disposition`, COUNT(1)`Total_Count` FROM process_table_log_',process_id,' log_tbl LEFT JOIN qa_audit_master_',client_id,' qam ON qam.id =log_tbl.san_audit_id WHERE 1=1 AND ifnull(log_tbl.qa_disposition,"")!="" ',@process_id,' ',@campaign_id,'',@fromDate,' ',@toDate,' ',if(IFNULL(agent_id,"")!="", CONCAT(' and qam.agent_id in (',agent_id,')') ,""),' GROUP BY log_tbl.qa_disposition '); PREPARE stmt FROM @dispo; EXECUTE stmt; DEALLOCATE PREPARE stmt; SELECT * FROM temp_dispo1; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `qa_audit_dashboard_data_New`; DELIMITER // CREATE PROCEDURE `qa_audit_dashboard_data_New`( IN `processid` INT, IN `campaignid` VARCHAR(50), IN `fromdate` VARCHAR(20), IN `todate` VARCHAR(20), IN `wherecondition` VARCHAR(100), IN `TL` VARCHAR(20) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SELECT client_id INTO @clientid FROM process WHERE id=processid LIMIT 1; SELECT user_type INTO @usertype FROM user WHERE id=TL LIMIT 1; SET @dispo=CONCAT(' SELECT GROUP_CONCAT(DISTINCT CONCAT(''IFNULL(SUM(case when log_tbl.qa_disposition = "'',log_tbl.qa_disposition,''" then 1 ELSE 0 END),0) AS `'',qa_disposition,''`'')) into @exactdisposition FROM process_table_',processid,' mast_tbl JOIN process_table_log_',processid,' log_tbl ON mast_tbl.id = log_tbl.parent_id JOIN qa_dispositionmaster qd ON qd.qa_dispostion = log_tbl.qa_disposition JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end)) as call_duration,crm_id from process_table_sub_log_',processid,' where crm_id!=0 group by crm_id) as sub_log ON log_tbl.crm_id =sub_log.crm_id LEFT JOIN user u1 ON u1.id=log_tbl.assign_to LEFT JOIN user u2 ON u2.id=log_tbl.assign_by LEFT JOIN qa_audit_master_',@clientid,' qam ON qam.id =log_tbl.san_audit_id WHERE ', wherecondition ,' ',if(ifnull(campaignid,"")!="", CONCAT(' AND log_tbl.campaign in (',campaignid,')'),""),' ',if(IFNULL(TL,"")!="" AND IFNULL(@usertype,"")!="1",CONCAT(' and (log_tbl.assign_to in (', TL ,') or log_tbl.assign_by in (', TL ,') or qam.auditor_id in (', TL ,') ) '),""),' AND log_tbl.start_time >= "',fromdate,'" AND log_tbl.start_time <= "',todate,'" '); #SELECT @dispo; PREPARE stmt FROM @dispo; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @dashquery=CONCAT(' SELECT COUNT(*) AS Total, ifnull(SUM(case when log_tbl.assign_to IS NULL AND log_tbl.audit_by IS NULL and qam.date_of_audit IS NULL and log_tbl.start_time >="',fromdate,'" and log_tbl.start_time <= "',todate,'" then 1 ELSE 0 END), 0)"Not Assigned", ifnull(SUM(case when log_tbl.assign_to IS NOT NULL and log_tbl.start_time >="',fromdate,'" and log_tbl.start_time <= "',todate,'" then 1 ELSE 0 END), 0)"Assigned", IFNULL(SUM(CASE WHEN log_tbl.san_audit_datetime IS NOT NULL then 1 ELSE 0 END ), 0) AS "Audited", IFNULL(SUM(CASE WHEN log_tbl.san_audit_datetime IS NULL then 1 ELSE 0 END ), 0) AS "Not Audited", IFNULL(sum(case when IFNULL(qam.feedback,"")="Accept" then 1 ELSE 0 END),0) `Accepted_feedback`, IFNULL(sum(case when IFNULL(qam.feedback,"")="Reconsider" then 1 ELSE 0 END),0) `Reconsider_feedback` ',if(IFNULL(@exactdisposition,'')='','',CONCAT(',',@exactdisposition)),' FROM process_table_',processid,' as mast_tbl JOIN process_table_log_',processid,' log_tbl ON log_tbl.parent_id=mast_tbl.id JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end)) as call_duration,crm_id from process_table_sub_log_',processid,' where crm_id!=0 group by crm_id) as sub_log ON log_tbl.crm_id =sub_log.crm_id LEFT JOIN user u1 ON u1.id=log_tbl.assign_to LEFT JOIN user u2 ON u2.id=log_tbl.assign_by LEFT JOIN qa_audit_master_',@clientid,' qam ON qam.id =log_tbl.san_audit_id WHERE ', wherecondition ,' ',if(ifnull(campaignid,"")!="", CONCAT(' AND log_tbl.campaign in (',campaignid,')'),""),' ',if(IFNULL(TL,"")!="" AND IFNULL(@usertype,"")!="1" ,CONCAT(' and (log_tbl.assign_to in (', TL ,') or log_tbl.assign_by in (', TL ,') or qam.auditor_id in (', TL ,') ) '),""),' AND log_tbl.start_time >= "',fromdate,'" AND log_tbl.start_time <= "',todate,'" '); #SELECT @dashquery; PREPARE stmt FROM @dashquery; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `qa_audit_dashboardDataDetails_New`; DELIMITER // CREATE PROCEDURE `qa_audit_dashboardDataDetails_New`( IN `processid` INT, IN `campaignid` VARCHAR(50), IN `recordtype` VARCHAR(50), IN `fromdate` VARCHAR(20), IN `todate` VARCHAR(20), IN `wherecondition` VARCHAR(100), IN `rowlimit` VARCHAR(10), IN `orderby` VARCHAR(20), IN `hide_phone_no` INT, IN `TL` VARCHAR(10) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @hide_phone_no=hide_phone_no; SELECT client_id INTO @clientid FROM process WHERE id=processid LIMIT 1; SELECT user_type INTO @usertype FROM user WHERE id=TL LIMIT 1; SET @MasterColumn = (SELECT GROUP_CONCAT(CONCAT( case when mask=1 then CONCAT('CONCAT("******",RIGHT(mast_tbl.',field_name,',4))',field_name) ELSE CONCAT('mast_tbl.',field_name) END)) FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=processid AND create_log=0 AND form_type='master' AND IFNULL(ShowOnQA, 0) = 1); SET @LogColumn=(SELECT GROUP_CONCAT(case when create_log=1 then CONCAT('log_tbl.',field_name) ELSE "" END ) FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=processid AND create_log=1 AND IFNULL(ShowOnQA, 0) = 1); SET @recordtype = recordtype; if IFNULL(rowlimit,"")="" then SET @dashquerydetails=' SELECT count(1) no_of_rec '; ELSE SET @dashquerydetails=CONCAT(' SELECT log_tbl.qa_disposition,if(@hide_phone_no=1,CONCAT("******",Right(log_tbl.log_phone_no,4)),log_tbl.log_phone_no) As `Dialed_No`, u1.first_name as assigned_to, u2.first_name as assined_by, log_tbl.id as `Log_ID`, log_tbl.agent_id, log_tbl.parent_id, log_tbl.agent_name, DATE_FORMAT(log_tbl.start_time, ''%d-%m-%Y %H:%i:%S'') as start_time, DATE_FORMAT(log_tbl.end_time, ''%d-%m-%Y %H:%i:%S'') as end_time, log_tbl.disposition, log_tbl.sub_disposition, c1.name as campaign, c1.id as campaign_id, log_tbl.agent_id, sub_log.call_duration AS Duration, DATE_FORMAT(log_tbl.san_audit_datetime, ''%d-%m-%Y %H:%i:%s'') as audit_date, log_tbl.san_audit_id as audit_id,log_tbl.CallType as call_type,log_tbl.Agent_comment,qam.feedback, #qam.agent_sentiment,qam.customer_sentiment,qam.external_performance,qam.internal_performance, CONCAT(UPPER(LEFT(qam.agent_sentiment,1)),LOWER(SUBSTRING(qam.agent_sentiment,2)))agent_sentiment, case when qam.agent_sentiment=''neutral'' then ''bg-warning'' when qam.agent_sentiment=''positive'' then ''bg-success'' when qam.agent_sentiment=''negative'' then ''bg-danger'' ELSE NULL END agent_sentiment_color, CONCAT(UPPER(LEFT(qam.customer_sentiment,1)),LOWER(SUBSTRING(qam.customer_sentiment,2)))customer_sentiment, case when qam.customer_sentiment=''neutral'' then ''bg-warning'' when qam.customer_sentiment=''positive'' then ''bg-success'' when qam.customer_sentiment=''negative'' then ''bg-danger'' ELSE NULL END customer_sentiment_color, qam.external_performance, case when qam.external_performance BETWEEN 81 AND 100 then ''bg-success'' when qam.external_performance BETWEEN 61 AND 80 then ''bg-warning'' when qam.external_performance BETWEEN 0 AND 61 then ''bg-danger'' ELSE NULL END external_performance_color, qam.internal_performance, case when qam.internal_performance BETWEEN 81 AND 100 then ''bg-success'' when qam.internal_performance BETWEEN 61 AND 80 then ''bg-warning'' when qam.internal_performance BETWEEN 0 AND 61 then ''bg-danger'' ELSE NULL END internal_performance_color, qam.fatal_error_call ', if(IFNULL(@MasterColumn,'')='','',CONCAT(',',@MasterColumn) ),' ',if(IFNULL(@LogColumn,'')='','',CONCAT(',',@LogColumn)),' '); END if; SET @fromquery = CONCAT(' FROM process_table_',processid,' as mast_tbl JOIN process_table_log_',processid,' log_tbl ON log_tbl.parent_id=mast_tbl.id LEFT JOIN campaign c1 ON log_tbl.campaign = c1.id LEFT JOIN user u1 ON u1.id=log_tbl.assign_to LEFT JOIN user u2 ON u2.id=log_tbl.assign_by JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end)) as call_duration,crm_id from process_table_sub_log_',processid,' where crm_id!=0 group by crm_id) as sub_log ON log_tbl.crm_id =sub_log.crm_id LEFT JOIN qa_audit_master_',@clientid,' qam ON qam.id =log_tbl.san_audit_id WHERE 1=1 AND log_tbl.start_time >= "',fromdate,'" AND log_tbl.start_time <= "',todate,'" ',if(IFNULL(campaignid,"")!="", CONCAT(' AND log_tbl.campaign in (',campaignid,') ') , ""),' ',if(IFNULL(TL,"")!="" AND IFNULL(@usertype,"")!="1",CONCAT(' and (log_tbl.assign_to in (', TL ,') or log_tbl.assign_by in (', TL ,') or qam.auditor_id in (', TL ,') ) '),""),' '); if IFNULL(@recordtype,'')='Total' then SET @WHERE= CONCAT(' and ', wherecondition ,' ',if(ifnull(Orderby,"")!="",CONCAT(' Order By ',Orderby ),""),if(IFNULL(rowlimit,"")="","", CONCAT(' LIMIT ',rowlimit,' ') ),' '); ELSEIF IFNULL(@recordtype,'')='Not Assigned' then SET @WHERE= CONCAT(' and log_tbl.assign_to IS NULL AND log_tbl.audit_by IS NULL AND qam.date_of_audit IS NULL and ', wherecondition ,' ',if(ifnull(Orderby,"")!="",CONCAT(' Order By ',Orderby ),""),if(IFNULL(rowlimit,"")="","", CONCAT(' LIMIT ',rowlimit,' ') ),' '); ELSEIF IFNULL(@recordtype,'')='Assigned' then SET @WHERE= CONCAT(' and log_tbl.assign_to IS NOT NULL and ', wherecondition ,' ',if(ifnull(Orderby,"")!="",CONCAT(' Order By ',Orderby ),""),if(IFNULL(rowlimit,"")="","", CONCAT(' LIMIT ',rowlimit,' ') ),' '); ELSEIF IFNULL(@recordtype,'')='Audited' then SET @WHERE= CONCAT(' and log_tbl.san_audit_datetime IS NOT NULL and ', wherecondition ,' ',if(ifnull(Orderby,"")!="",CONCAT(' Order By ',Orderby ),""),if(IFNULL(rowlimit,"")="","", CONCAT(' LIMIT ',rowlimit,' ') ),' '); ELSEIF IFNULL(@recordtype,'')='Not Audited' then SET @WHERE= CONCAT(' and log_tbl.san_audit_datetime IS NULL and ', wherecondition ,' ',if(ifnull(Orderby,"")!="",CONCAT(' Order By ',Orderby ),""),if(IFNULL(rowlimit,"")="","", CONCAT(' LIMIT ',rowlimit,' ') ),' '); ELSEIF IFNULL(@recordtype,'')='Accepted_feedback' then SET @WHERE= CONCAT(' and IFNULL(qam.feedback,"")="Accept" and ', wherecondition ,' ',if(ifnull(Orderby,"")!="",CONCAT(' Order By ',Orderby ),""),if(IFNULL(rowlimit,"")="","", CONCAT(' LIMIT ',rowlimit,' ') ),' '); ELSEIF IFNULL(@recordtype,'')='Reconsider_feedback' then SET @WHERE= CONCAT(' and IFNULL(qam.feedback,"")="Reconsider" and ', wherecondition ,' ',if(ifnull(Orderby,"")!="",CONCAT(' Order By ',Orderby ),""),if(IFNULL(rowlimit,"")="","", CONCAT(' LIMIT ',rowlimit,' ') ),' '); ELSEIF IFNULL(@recordtype,'') NOT IN ('Total','Not Assigned','Assigned','Audited','Not Audited') then SET @WHERE= CONCAT(' and ', wherecondition ,' ',if(ifnull(Orderby,"")!="",CONCAT(' Order By ',Orderby ),""),if(IFNULL(rowlimit,"")="","", CONCAT(' LIMIT ',rowlimit,' ') ),' '); END if; SET @finalquery=CONCAT(@dashquerydetails,@fromquery,@WHERE); PREPARE stmt FROM @finalquery; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `QA_AGENT_WISE_Report_New`; DELIMITER // CREATE PROCEDURE `QA_AGENT_WISE_Report_New`( IN `client_id` VARCHAR(10), IN `agent_id` VARCHAR(50), IN `fromDate` VARCHAR(50), IN `toDate` VARCHAR(50), IN `process_id` VARCHAR(50), IN `campaign_id` VARCHAR(50) ) BEGIN DROP TABLE IF EXISTS temp; SET @droptab=CONCAT('drop table if exists tempcallscor_',REPLACE(CURDATE(),'-','')); PREPARE stmt_droptab FROM @droptab; EXECUTE stmt_droptab; DEALLOCATE PREPARE stmt_droptab; IF(process_id!='') then SET @process_id=CONCAT(' AND process_id=',process_id); END if; IF(campaign_id!='') then SET @campaign_id=CONCAT(' AND campaign_id in (',campaign_id,')'); END if; if(fromDate ='') then SET @fromDate = CONCAT(' and date_of_audit>="',CURDATE(),' 00:00:00"'); ELSE SET @fromDate = CONCAT(' and date_of_audit>="', fromDate,'"' ); END if; if(toDate ='' ) then SET @toDate= CONCAT(' and date_of_audit<="',CURDATE(),' 23:59:59"'); ELSE SET @toDate= CONCAT(' and date_of_audit<= "',toDate,'"' ); END if; SET @SQL1=CONCAT(' create table tempcallscor_',REPLACE(CURDATE(),'-','') ,' AS select Agent_Name,agent_id, COUNT(1)`Calls_Audited`, ROUND(Avg(External_Performance),2)`Score`, ROUND(AVG(internal_performance),2)`Fatal_Score`, SUM(case when IFNULL(fatal_error_call,0)!=0 then 1 ELSE 0 END)`Fatal_Error_Count`, CASE WHEN Avg(External_Performance)>=91 THEN ''A'' WHEN Avg(External_Performance)>=86 and Avg(External_Performance)<=90 THEN ''B'' ELSE ''C'' END `Category` FROM qa_audit_master_',client_id,' WHERE 1=1 ',@fromDate,'',@toDate,'',IFNULL(@process_id,''),'',IFNULL(@campaign_id,''),' ',if(IFNULL(agent_id,"")="","",CONCAT(' AND agent_id in (',agent_id,')')) ,' GROUP BY Agent_Name,agent_id;'); #SELECT @SQL1; PREPARE stmt FROM @SQL1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @SQL2=CONCAT(' select * from tempcallscor_',REPLACE(CURDATE(),'-','')); PREPARE stmt_sql2 FROM @SQL2; EXECUTE stmt_sql2; DEALLOCATE PREPARE stmt_sql2; SET @tempcount=CONCAT('select COUNT(1) into @tempcount1 FROM tempcallscor_',REPLACE(CURDATE(),'-','')); PREPARE stmt_tempcount FROM @tempcount; EXECUTE stmt_tempcount; DEALLOCATE PREPARE stmt_tempcount; SET @SQL3=CONCAT(' SELECT "A: Excellent{Score>=91}" Call_Quality_Category,ifnull(SUM(CASE WHEN Score>=91 THEN 1 ELSE 0 END),0) Number_of_Agents, round(ifnull(SUM(CASE WHEN Score>=91 THEN 1 ELSE 0 END)*100/nullif(',@tempcount1,',0),0),2) `per_Contribution` FROM tempcallscor_',REPLACE(CURDATE(),'-',''),' where Score>=91 UNION ALL SELECT "B: Good{Score between 81 & 90}" Call_Quality_Category,ifnull(SUM(CASE WHEN Score>=86 and Score<=90 THEN 1 ELSE 0 END),0)Number_of_Agents , round(ifnull(SUM(CASE WHEN Score>=81 and Score<=90 THEN 1 ELSE 0 END)*100/nullif(',@tempcount1,',0),0),2) `per_Contribution` FROM tempcallscor_',REPLACE(CURDATE(),'-',''),' where Score>=86 and Score<=90 UNION ALL SELECT "C: Average{Score <= 80}" Call_Quality_Category,ifnull(SUM(CASE WHEN Score<86 THEN 1 ELSE 0 END),0)Number_of_Agents , round(ifnull(SUM(CASE WHEN Score<=80 THEN 1 ELSE 0 END)*100/nullif(',@tempcount1,',0),0),2) `per_Contribution` FROM tempcallscor_',REPLACE(CURDATE(),'-',''),' where Score<90;'); #SELECT @SQL3; PREPARE stmt FROM @SQL3; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @droptab1=CONCAT('drop table if exists tempcallscor_',REPLACE(CURDATE(),'-','')); PREPARE stmt_droptab1 FROM @droptab1; EXECUTE stmt_droptab1; DEALLOCATE PREPARE stmt_droptab1; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `QA_Ftr_Report_New`; DELIMITER // CREATE PROCEDURE `QA_Ftr_Report_New`( IN `client_id` VARCHAR(10), IN `agent_id` VARCHAR(50), IN `fromDate` VARCHAR(50), IN `toDate` VARCHAR(50), IN `process_id` VARCHAR(50), IN `campaign_id` VARCHAR(50) ) BEGIN drop table if exists tempftr,tempftr1; IF(process_id!='') then SET @process_id=CONCAT(' AND qam.process_id=',process_id); END if; IF(campaign_id!='') then SET @campaign_id=CONCAT(' AND qam.campaign_id in (',campaign_id,')'); END if; if(fromDate ='') then SET @fromDate = CONCAT(' and date_of_audit>="',CURDATE(),' 00:00:00"'); ELSE SET @fromDate = CONCAT(' and date_of_audit>="', fromDate,'"' ); END if; if(toDate ='' ) then SET @toDate= CONCAT(' and date_of_audit<="',CURDATE(),' 23:59:59"'); ELSE SET @toDate= CONCAT(' and date_of_audit<= "',toDate,'"' ); END if; SET @SQL1=CONCAT(' create table tempftr AS SELECT qam.agent_name,COUNT(1)`Total Audit`, SUM(CASE WHEN ftr_status=''yes'' THEN 1 ELSE 0 END)`FTR_Status`, ROUND(SUM(CASE WHEN ftr_status=''yes'' THEN 1 ELSE 0 END)*100/NULLIF(COUNT(1),0),1)`FTR_Status_per` FROM qa_audit_master_',client_id,' qam WHERE 1=1 ',@fromDate,' ',@toDate,' ',IFNULL(@process_id,''),' ',if(IFNULL(agent_id,"")="","",CONCAT(' AND agent_id in (', agent_id ,') ')),' GROUP BY qam.agent_name; '); #SELECT @SQL1; PREPARE stmt_SQL1 FROM @SQL1; EXECUTE stmt_SQL1; DEALLOCATE PREPARE stmt_SQL1; SET @result=CONCAT(' select * from tempftr '); PREPARE stmt FROM @result; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @SQL2=CONCAT(' create table tempftr1 AS SELECT qam.agent_name,COUNT(1)`Total Audit`, SUM(CASE WHEN ftr_status=''yes'' THEN 1 ELSE 0 END)`FTR_Status`, ROUND(SUM(CASE WHEN ftr_status=''yes'' THEN 1 ELSE 0 END)*100/NULLIF(COUNT(1),0),1)`FTR_Status_per` FROM qa_audit_master_',client_id,' qam WHERE 1=1 ',@fromDate,'',@toDate,'',IFNULL(@process_id,''),' ',if(IFNULL(agent_id,"")="","",CONCAT(' AND agent_id in (', agent_id ,') ')),' GROUP BY qam.agent_name;'); #SELECT @SQL2; PREPARE stmt FROM @SQL2; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @result=CONCAT(' select * from tempftr1 '); PREPARE stmt FROM @result; EXECUTE stmt; DEALLOCATE PREPARE stmt; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `QA_Performers_Report_New`; DELIMITER // CREATE PROCEDURE `QA_Performers_Report_New`( IN `client_id` VARCHAR(10), IN `agent_id` VARCHAR(50), IN `fromDate` VARCHAR(50), IN `toDate` VARCHAR(50), IN `process_id` VARCHAR(50), IN `campaign_id` VARCHAR(50) ) BEGIN DROP TABLE IF EXISTS temp; SET @droptab=CONCAT('drop table if exists tempcallscor_PERFOMANCE'); PREPARE stmt_droptab FROM @droptab; EXECUTE stmt_droptab; DEALLOCATE PREPARE stmt_droptab; IF(process_id!='') then SET @process_id=CONCAT(' AND process_id=',process_id); END if; IF(campaign_id!='') then SET @campaign_id=CONCAT(' AND campaign_id in (',campaign_id,')'); END if; if(fromDate ='') then SET @fromDate = CONCAT(' and date_of_audit>="',CURDATE(),' 00:00:00"'); ELSE SET @fromDate = CONCAT(' and date_of_audit>="', fromDate,'"' ); END if; if(toDate ='' ) then SET @toDate= CONCAT(' and date_of_audit<="',CURDATE(),' 23:59:59"'); ELSE SET @toDate= CONCAT(' and date_of_audit<= "',toDate,'"' ); END if; SET @SQL =CONCAT(' create table tempcallscor_PERFOMANCE SELECT Agent_Name,Round(Avg(External_Performance),0)`CallScore`, case when day(date_of_audit) between 1 and 7 then ''1'' when day(date_of_audit) between 8 and 15 then ''2'' when day(date_of_audit) between 16 and 23 then ''3'' else ''4'' END `Week` FROM qa_audit_master_',client_id,' WHERE 1=1 ',if(IFNULL(agent_id,"")="","",CONCAT(' AND agent_id in (',agent_id,') ')),'',@fromDate,'',@toDate,'',IFNULL(@process_id,''),'',IFNULL(@campaign_id,''),' GROUP BY Agent_Name,case when day(date_of_audit) between 1 and 7 then ''1'' when day(date_of_audit) between 8 and 15 then ''2'' when day(date_of_audit) between 16 and 23 then ''3'' else ''4'' END ORDER BY Avg(External_Performance) DESC;'); #SELECT @SQL; PREPARE stmt_SQL FROM @SQL; EXECUTE stmt_SQL; DEALLOCATE PREPARE stmt_SQL; SET @SQL2=CONCAT('select * from tempcallscor_PERFOMANCE as `Quality Star` WHERE CallScore>=''95'' ORDER BY CallScore DESC '); PREPARE stmt_SQL2 FROM @SQL2; EXECUTE stmt_SQL2; DEALLOCATE PREPARE stmt_SQL2; SET @SQL3=CONCAT('select * from tempcallscor_PERFOMANCE as `1st Runnerup` WHERE CallScore>=''90'' and CallScore<''95'' ORDER BY CallScore DESC '); PREPARE stmt_SQL3 FROM @SQL3; EXECUTE stmt_SQL3; DEALLOCATE PREPARE stmt_SQL3; SET @SQL4=CONCAT('select * from tempcallscor_PERFOMANCE as `2nd Runnerup` WHERE CallScore>=''80'' AND CallScore<''90'' ORDER BY CallScore DESC '); PREPARE stmt_SQL4 FROM @SQL4; EXECUTE stmt_SQL4; DEALLOCATE PREPARE stmt_SQL4; SET @SQL5 =CONCAT('SELECT q.agent_name,round(AVG(q.external_performance),0)AS `Average_of_Final_Score_%` FROM qa_audit_master_',client_id,' q WHERE 1=1 ',if(IFNULL(agent_id,"")="","",CONCAT(' AND q.agent_id in (',agent_id,') ')),'',@fromDate,'',@toDate,'',IFNULL(@process_id,''),' GROUP BY q.agent_name'); PREPARE stmt_SQL5 FROM @SQL5; EXECUTE stmt_SQL5; DEALLOCATE PREPARE stmt_SQL5; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `QA_Defect_Analysis_Report_New`; DELIMITER // CREATE PROCEDURE `QA_Defect_Analysis_Report_New`( IN `client_id` VARCHAR(10), IN `agent_id` VARCHAR(50), IN `fromDate` VARCHAR(50), IN `toDate` VARCHAR(50), IN `process_id` VARCHAR(50), IN `campaign_id` VARCHAR(50) ) BEGIN DROP TABLE IF EXISTS temp; SET @droptab=CONCAT('drop table if exists tempcallscor_',REPLACE(CURDATE(),'-','')); PREPARE stmt_droptab FROM @droptab; EXECUTE stmt_droptab; DEALLOCATE PREPARE stmt_droptab; IF(process_id!='') then SET @process_id=CONCAT(' AND qam.process_id=',process_id); END if; IF(campaign_id!='') then SET @campaign_id=CONCAT(' AND qam.campaign_id in (',campaign_id,')'); END if; if(fromDate ='') then SET @fromDate = CONCAT(' and date_of_audit>="',CURDATE(),' 00:00:00"'); ELSE SET @fromDate = CONCAT(' and date_of_audit>="', fromDate,'"' ); END if; if(toDate ='' ) then SET @toDate= CONCAT(' and date_of_audit<="',CURDATE(),' 23:59:59"'); ELSE SET @toDate= CONCAT(' and date_of_audit<= "',toDate,'"' ); END if; SET @SQL1=CONCAT(' create table tempcallscor_',REPLACE(CURDATE(),'-',''),' SELECT qq.question,count(1)`question_appeared_count`, SUM(CASE WHEN rating=''no'' THEN 1 ELSE 0 END) as `defect_count` FROM qa_audit_question_result_',client_id,' qa_audit_question JOIN qa_questionmaster qq ON qq.id = qa_audit_question.question_id JOIN qa_audit_master_',client_id,' qam ON qa_audit_question.qa_audit_id=qam.id WHERE 1=1 ',@fromDate,'',@toDate,'',IFNULL(@process_id,''),'',IFNULL(@campaign_id,''),' ', if(IFNULL(agent_id,"")="","", CONCAT(' AND qam.agent_id in (',agent_id,') ')) ,' GROUP BY qq.question;'); PREPARE stmt FROM @SQL1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @SQL2=CONCAT('select * from tempcallscor_',REPLACE(CURDATE(),'-','')); PREPARE stmt_sql2 FROM @SQL2; EXECUTE stmt_sql2; DEALLOCATE PREPARE stmt_sql2; SET @tempcount=CONCAT('select sum(Defect_Count) into @tempcount1 FROM tempcallscor_',REPLACE(CURDATE(),'-','')); PREPARE stmt_tempcount FROM @tempcount; EXECUTE stmt_tempcount; DEALLOCATE PREPARE stmt_tempcount; SET @CumulativeSum:=0; SET @SQL3=CONCAT('select Question, (',@CumulativeSum,' + Defect_Count)`Cumulative_Frequency`, round((',@CumulativeSum,' + Defect_Count)*100/',IFNULL(@tempcount1,0),',2)`per_Cumulative_Frequency` from tempcallscor_',REPLACE(CURDATE(),'-',''),'; '); PREPARE stmt_sql3 FROM @SQL3; EXECUTE stmt_sql3; DEALLOCATE PREPARE stmt_sql3; SET @droptab1=CONCAT('drop table if exists tempcallscor_',REPLACE(CURDATE(),'-','')); PREPARE stmt_droptab1 FROM @droptab1; EXECUTE stmt_droptab1; DEALLOCATE PREPARE stmt_droptab1; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `QA_DQR_Report_New`; DELIMITER // CREATE PROCEDURE `QA_DQR_Report_New`( IN `client_id` VARCHAR(10), IN `agent_id` VARCHAR(50), IN `fromDate` VARCHAR(50), IN `toDate` VARCHAR(50), IN `process_id` VARCHAR(50), IN `campaign_id` VARCHAR(50) ) BEGIN DROP TABLE IF EXISTS temp; SET @droptab=CONCAT('drop table if exists tempcall_DQR1'); PREPARE stmt_droptab FROM @droptab; EXECUTE stmt_droptab; DEALLOCATE PREPARE stmt_droptab; DROP TABLE IF EXISTS temp; SET @droptab2=CONCAT('drop table if exists tempcall_DQR2'); PREPARE stmt_droptab2 FROM @droptab2; EXECUTE stmt_droptab2; DEALLOCATE PREPARE stmt_droptab2; DROP TABLE IF EXISTS temp; SET @droptab3=CONCAT('drop table if exists tempcall_DQR3'); PREPARE stmt_droptab3 FROM @droptab3; EXECUTE stmt_droptab3; DEALLOCATE PREPARE stmt_droptab3; IF(process_id!='') then SET @process_id=CONCAT(' AND QAD.process_id=',process_id); END if; IF(campaign_id!='') then SET @campaign_id=CONCAT(' AND QAD.campaign_id in (',campaign_id,')'); END if; IF(agent_id!='') then SET @agentid= CONCAT(' AND QAD.agent_id=',agent_id); END if; if(fromDate ='') then SET @fromDate = CONCAT(' and date_of_audit>="',CURDATE(),' 00:00:00"'); ELSE SET @fromDate = CONCAT(' and date_of_audit>="', fromDate,'"' ); END if; if(toDate ='' ) then SET @toDate= CONCAT(' and date_of_audit<="',CURDATE(),' 23:59:59"'); ELSE SET @toDate= CONCAT(' and date_of_audit<= "',toDate,'"' ); END if; SET @formfield =CONCAT('SELECT GROUP_CONCAT(distinct case when create_log=0 then CONCAT(''PM.'',field_name) ELSE CONCAT(''PL.'',field_name) END) into @formfields FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=',process_id,' and showonqa = 1'); PREPARE stmt FROM @formfield; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @SQL1 = CONCAT(' CREATE TABLE tempcall_DQR1 AS SELECT QAF.question_id AS question_id, TRIM(LEFT(qq.question,60)) AS question FROM qa_audit_question_result_', client_id, ' QAF JOIN qa_questionmaster qq ON QAF.question_id = qq.id JOIN qa_audit_master_', client_id, ' QAD ON QAF.qa_audit_id = QAD.id WHERE 1=1 ',IFNULL(@agentid, ''), ' ',IFNULL(@fromDate, ''), ' ',IFNULL(@toDate, ''), ' ',IFNULL(@process_id, ''), ' ',IFNULL(@campaign_id, ''), ' GROUP BY QAF.question_id, qq.question; '); PREPARE stmt_SQL1 FROM @SQL1; EXECUTE stmt_SQL1; DEALLOCATE PREPARE stmt_SQL1; SET SESSION group_concat_max_len = 1000000; SELECT GROUP_CONCAT(' MAX(CASE WHEN question_id=', question_id, ' THEN rating END) `', LEFT(question,60), '`') INTO @CONDITION FROM tempcall_DQR1; #SELECT @CONDITION ; SET @SQL2=CONCAT(' create table tempcall_DQR2 SELECT qa_audit_id ',if(IFNULL(@CONDITION,'')!="",CONCAT (' ',',',@CONDITION,''),""),' from qa_audit_question_result_',client_id,' GROUP BY qa_audit_id;'); PREPARE stmt_SQL2 FROM @SQL2; EXECUTE stmt_SQL2; DEALLOCATE PREPARE stmt_SQL2; SET @SQL3=CONCAT('select * from tempcall_DQR2'); PREPARE stmt_sql3 FROM @SQL3; EXECUTE stmt_sql3; DEALLOCATE PREPARE stmt_sql3; SET @SQL4= CONCAT(' CREATE TABLE tempcall_DQR3 AS SELECT ',if(IFNULL(@formfields,'')!="",CONCAT ('',@formfields,',',''),""),' QAD.agent_name,agent.doj`Date of Joining`,date_of_call`Call Date`,date_of_audit`date_of_audit`, PL.disposition`Call Status`,QAD.Agent_Name`Call_taken_by` ',if(IFNULL(@CONDITION,'')!="",CONCAT (' ',',',@CONDITION,''),""),' ,date_of_audit`Disposition_Date`,QAD.ftr_status`FTR status`,QAD.external_performance`Score`,QAD.internal_performance`Fatal Score`,QAD.Fatal_error_call`Fatal Error Call`,QAD.area_of_strength`Area of Strength`,QAD.area_of_development`Area of Development`, QAD.call_summary`Call Summary` FROM qa_audit_master_',client_id,' QAD left join process_table_log_',process_id,' PL on QAD.log_id=PL.Id left join process_table_',process_id,' PM on PL.parent_id=PM.id LEFT JOIN agent ON PL.agent_id=agent.id LEFT join qa_audit_question_result_', client_id, ' QAF ON QAF.qa_audit_id = QAD.id WHERE 1=1 ',IFNULL(@agentid,''),'',@fromDate,'',@toDate,'',IFNULL(@process_id,''),' GROUP BY QAD.id;'); PREPARE stmt_sql4 FROM @SQL4; EXECUTE stmt_sql4; DEALLOCATE PREPARE stmt_sql4; SET @SQL4_result=CONCAT(' select * from tempcall_DQR3 '); PREPARE stmt FROM @SQL4_result; EXECUTE stmt; DEALLOCATE PREPARE stmt; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `QA_Agentwise_Feedback_New`; DELIMITER // CREATE PROCEDURE `QA_Agentwise_Feedback_New`( IN `client_id` VARCHAR(10), IN `agent_id` VARCHAR(50), IN `fromDate` VARCHAR(50), IN `toDate` VARCHAR(50), IN `process_id` VARCHAR(50), IN `campaign_id` VARCHAR(50) ) BEGIN drop table if exists temp_disposition_1; drop table if exists temp_disposition_2; IF(process_id!='') then SET @process_id=CONCAT(' AND QAD.process_id=',process_id); END if; IF(campaign_id!='') then SET @campaign_id=CONCAT(' AND QAD.campaign_id in (',campaign_id,')'); END if; IF(agent_id!='') then SET @agent_id=CONCAT(' AND agent.id=',agent_id); ELSE SET @agent_id=''; END if; if(fromDate ='') then SET @fromDate = CONCAT(' and QAD.date_of_audit>="',CURDATE(),' 00:00:00"'); ELSE SET @fromDate = CONCAT(' and QAD.date_of_audit>="', fromDate,'"' ); END if; if(toDate ='' ) then SET @toDate= CONCAT(' and QAD.date_of_audit<="',CURDATE(),' 23:59:59"'); ELSE SET @toDate= CONCAT(' and QAD.date_of_audit<= "',toDate,'"' ); END if; SET @SQL1=CONCAT(' create table temp_disposition_1 SELECT agent_name`Agent Name`,QAD.auditor_name as `Auditor Name`, date_of_audit`Date of Audit`, date_of_call`Date of Call`, qdm.qa_dispostion `Disposition`, feedback`Feedback` from qa_audit_master_',client_id,' QAD JOIN qa_dispositionmaster qdm ON QAD.qa_disposition_id = qdm.id LEFT JOIN agent ON agent.name=QAD.agent_name LEFT JOIN user ON user.id=QAD.auditor_id WHERE 1=1 /*AND QAD.feedback IS NOT NULL*/ ',@fromDate,'',@toDate,'',IFNULL(@process_id,''),'',IFNULL(@campaign_id,''),'',IFNULL(@agent_id,''),' order by date_of_audit desc;'); #SELECT @SQL1; PREPARE stmt FROM @SQL1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SELECT * FROM temp_disposition_1; SELECT COUNT(1) INTO @temp_disp1 FROM temp_disposition_1; #SELECT @temp_disp1; SET @SQL2=CONCAT(' CREATE TABLE temp_disposition_2 select (case when Feedback is not null then Feedback else "No Response" end)`Feedback`,count(1)`total` FROM temp_disposition_1 GROUP BY Feedback; '); PREPARE stmt_sql2 FROM @SQL2; EXECUTE stmt_sql2; DEALLOCATE PREPARE stmt_sql2; SELECT Feedback,round(total*100/@temp_disp1)`percentage` FROM temp_disposition_2; drop table if exists temp_disposition_1; drop table if exists temp_disposition_2; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getChildUsers`; DELIMITER // CREATE PROCEDURE `getChildUsers`( IN `user_id` INT, INOUT `child` TEXT ) BEGIN DECLARE finished INTEGER DEFAULT 0; DECLARE var_ch_user_id INT; DECLARE var_ch_users TEXT; DECLARE temppath TEXT; DECLARE childUsers CURSOR FOR SELECT t1.id FROM user t1 WHERE t1.manager_id=user_id AND t1.client_id=(SELECT client_id FROM user WHERE id=user_id LIMIT 1); DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1; OPEN childUsers; getChild: LOOP SET max_sp_recursion_depth = 255; FETCH childUsers INTO var_ch_user_id; IF finished = 1 THEN LEAVE getChild; END IF; IF var_ch_user_id IS NULL THEN SET child = child; ELSE IF child = '' THEN SET child = var_ch_user_id; ELSE SET child = CONCAT(child, ',', var_ch_user_id); END IF; CALL GetChildUsers(var_ch_user_id, child); END IF; END LOOP getChild; CLOSE childUsers; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getprocessreport`; DELIMITER // CREATE PROCEDURE `getprocessreport`( IN `pid` VARCHAR(10), IN `reportid` VARCHAR(50), IN `selectcondition` LONGTEXT, IN `wherecondition` LONGTEXT, IN `groupcondition` LONGTEXT, IN `ordercondition` LONGTEXT, IN `rowlimit` VARCHAR(20), IN `summary` VARCHAR(10) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; if IFNULL(rowlimit,'')='' then SET @selectquery=CONCAT('SELECT COUNT(1) no_of_rec '); ELSE SET @selectquery=CONCAT('SELECT ',IFNULL(selectcondition,''),''); END if; SET @fromquery=CONCAT(' FROM process_table_',pid,' mast_tbl join process_table_log_',pid,' log_tbl ON log_tbl.parent_id=mast_tbl.id LEFT JOIN agent ON agent.name=log_tbl.agent_name LEFT JOIN campaign camp ON camp.id=log_tbl.campaign LEFT JOIN campaign_mapping_',pid,' cmpMap ON cmpMap.master_id=mast_tbl.id and cmpMap.campaign_id=log_tbl.campaign and cmpMap.map_id=log_tbl.camp_map_id LEFT JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end))call_duration,crm_id from process_table_sub_log_',pid,' where crm_id!=0 group by crm_id)sub_log on sub_log.crm_id=log_tbl.crm_id LEFT JOIN (select TIMEDIFF(end_time, start_time) cobrowse_duration,crm_id from process_table_sub_log_cobrowse_',pid,' where crm_id!=0)cobrowse on cobrowse.crm_id=log_tbl.crm_id '); SET @orderby=CONCAT('where 1=1 ',wherecondition,' ',if(IFNULL(groupcondition,"")!="",CONCAT(' GROUP BY ',groupcondition,' ',if(IFNULL(summary,"")="sum",CONCAT(' WITH ROLLUP'),""),''),""), if(IFNULL(ordercondition,"")!="" AND IFNULL(summary,"")!="sum",CONCAT(' ORDER BY ',ordercondition,' '),""), if(IFNULL(rowlimit,"")!="",CONCAT(' LIMIT ',rowlimit,' '),""),' '); SET @SQL=CONCAT(@selectquery,' ',@fromquery,' ',@orderby); PREPARE stmtsql FROM @sql; execute stmtsql; DEALLOCATE PREPARE stmtsql; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `qa_autoassign_data`; DELIMITER // CREATE PROCEDURE `qa_autoassign_data`() BEGIN DECLARE campid VARCHAR(10); DECLARE done INT DEFAULT FALSE; DECLARE getclientdata CURSOR FOR SELECT campaign_id FROM qa_processquestion_setup WHERE assign_type="auto"; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN getclientdata; read_loop: LOOP FETCH getclientdata INTO campid; IF done THEN LEAVE read_loop; END IF; SET SESSION group_concat_max_len = 1000000; SET @curdatetime = replace(replace(replace(replace(current_timestamp(6),'-',''),':',''),' ','_'),'.','_'); SET @pid=NULL; SET @setupid=NULL; SET @user_id=NULL; SET @assign_type=NULL; SET @client_id=NULL; SET @fromdate=NULL; SELECT process_id,id,user_id,assign_type,client_id,concat(DATE,' 00:00:00') fromdate INTO @pid,@setupid,@user_id,@assign_type,@client_id,@fromdate FROM qa_processquestion_setup WHERE campaign_id=campid; SET @updated_on=null; SET @agentSQL=CONCAT('SELECT QA_assign_leaddate into @updated_on FROM user WHERE id in (',@user_id,') and QA_assign_leaddate>=curdate() limit 1'); #SELECT @agentSQL; PREPARE stmt FROM @agentSQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; if IFNULL(@updated_on,"")="" then SET @agentupdate=CONCAT('UPDATE user SET qa_count=0, QA_assign_leaddate=null WHERE QA_assign_leaddate=numbers.n-1 JOIN process_disposition pd ON pd.id=disposition_id WHERE setup_id=@setupid GROUP BY disposition,duration,percentage; SELECT GROUP_CONCAT(CONCAT("( pl.Disposition ='",disposition,"'" ,case when (sub_disposition!="" OR sub_disposition IS NOT NULL) then CONCAT(" and pl.sub_disposition IN (",sub_disposition,") ") ELSE "" END,case when percentage>0.00 then CONCAT(" AND percentage ='",percentage,"'") ELSE CONCAT(" AND percentage ='100.00' ") END,case when duration>0 then CONCAT(" and pl.duration >='",duration,"')") ELSE ")" end ) SEPARATOR ' or '), GROUP_CONCAT(CONCAT("( pl.Disposition ='",disposition,"'" ,case when (sub_disposition!="" OR sub_disposition IS NOT NULL) then CONCAT(" and pl.sub_disposition IN (",sub_disposition,") )") ELSE ")" END )SEPARATOR ' or ') INTO @dispo,@pl_dispo FROM getqadispodata; #SELECT @dispo; if IFNULL(@pid,'')!='' then DROP TABLE if EXISTS qa_dispo_assign; SET @SQL=CONCAT('create table qa_dispo_assign select pl.disposition,pl.sub_disposition,round((count(1)*ifnull(percentage,0)/100),0) limitcount,count(1) Totalcount FROM process_table_',@pid,' as pm JOIN process_table_log_',@pid,' pl ON pl.parent_id=pm.id JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end)) as call_duration,crm_id from process_table_sub_log_',@pid,' where crm_id!="0" group by crm_id) as p3 ON pl.crm_id =p3.crm_id join getqadispodata qa ON qa.disposition=pl.disposition where campaign=',campid,' and start_time>="',@fromdate,'" and start_time>=concat(date_sub(curdate(),interval 9 DAY)," 00:00:00") and start_time<=concat(date_sub(curdate(),interval 1 DAY)," 23:00:00") and ',@dispo,' group by pl.disposition,pl.sub_disposition,percentage'); #SELECT @SQL; PREPARE stmt FROM @SQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @row_num=0; SET @query=CONCAT(' create table temp_table_',@pid,'_',@curdatetime,' select @row_num:=@row_num+1 SrNo,logid,assignto from(SELECT assign_to assignto,pl.id logid,disposition,ROW_NUMBER() OVER(PARTITION by disposition,pl.sub_disposition ORDER BY pl.id) rnk FROM process_table_',@pid,' as pm JOIN process_table_log_',@pid,' pl ON pl.parent_id=pm.id JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end)) as call_duration,crm_id from process_table_sub_log_',@pid,' where crm_id!="0" group by crm_id) as p3 ON pl.crm_id =p3.crm_id WHERE ifnull(assign_to,0)=0 and ',@pl_dispo,')t join qa_dispo_assign on qa_dispo_assign.disposition=t.disposition and t.rnk<=limitcount'); #SELECT @QUERY; PREPARE stmt FROM @query; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @total_count=NULL; SET @SQL3 = CONCAT('select count(1) into @total_count from temp_table_',@pid,'_',@curdatetime); #SELECT @sql3; PREPARE stmt FROM @sql3; EXECUTE stmt; DEALLOCATE PREPARE stmt; if(IFNULL(@total_count,0)>0) then SET @startFlag = 1; WHILE(@startFlag <= ifnull(@total_count,0)) DO SET @logid=NULL; SET @sql4 = CONCAT('select logid into @logid FROM temp_table_',@pid,'_',@curdatetime,' WHERE SrNo=',@startFlag); #SELECT @sql4; PREPARE stmt FROM @sql4; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @userid=NULL; SET @sql4 = CONCAT('select id into @userid FROM user where id in (',@user_id,') order by QA_assign_leaddate,qa_count limit 1'); #SELECT @sql4; PREPARE stmt FROM @sql4; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @sql = CONCAT('Update temp_table_',@pid,'_',@curdatetime,' set assignto=',IFNULL(@userid,NULL),' where srno=',@startFlag,' and logid=',@logid,' '); PREPARE stmt from @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @SQL5 = CONCAT('update user set QA_assign_leaddate=now(), qa_count=ifnull(qa_count,0)+1 where id=',@userid,''); #SELECT @sql5; PREPARE stmt FROM @SQL5; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @startFlag = @startFlag + 1; END WHILE; END if; SET @sql_query=CONCAT('update process_table_log_',@pid,' join temp_table_',@pid,'_',@curdatetime,' on logid=id set assign_to=assignto where ifnull(assignto,0)>0'); PREPARE stmt from @sql_query; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @qa_query=CONCAT(' INSERT INTO qa_assign_log_',@client_id,' (log_id, assign_to,assign_date,process_id,campaign_id,assign_by, assign_type) select id,assignto,now(),',@pid,',campaign,1,@assign_type from process_table_log_',@pid,' join temp_table_',@pid,'_',@curdatetime,' on logid=id where ifnull(assignto,0)>0 '); PREPARE stmt from @qa_query; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @SQL5 = CONCAT('drop table if exists temp_table_',@pid,'_',@curdatetime); #SELECT @sql1; PREPARE stmt FROM @SQL5; EXECUTE stmt; DEALLOCATE PREPARE stmt; end if; END LOOP; CLOSE getclientdata; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `qa_nonAudit_data`; DELIMITER // CREATE PROCEDURE `qa_nonAudit_data`( IN `setupid` INT ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @curdatetime = replace(replace(replace(replace(current_timestamp(6),'-',''),':',''),' ','_'),'.','_'); SET @pid=NULL; SET @campid=NULL; SET @user_id=NULL; SET @assign_type=NULL; SET @client_id=NULL; SET @fromdate=NULL; SELECT process_id,campaign_id,user_id,assign_type,client_id,concat(DATE,' 00:00:00') fromdate INTO @pid,@campid,@user_id,@assign_type,@client_id,@fromdate FROM qa_processquestion_setup WHERE id=setupid; SET @dispo=NULL; SET @pl_dispo=NULL; DROP TABLE if EXISTS getqadispodata; create table getqadispodata SELECT disposition,group_concat(CONCAT("""",SUBSTRING_INDEX(SUBSTRING_INDEX(sub_disposition, ',', numbers.n), ',', -1),"""")) sub_disposition,ifnull(round(percentage,0),0) percentage,Time_to_sec(duration) duration from (select 1 n union all select 2 union all select 3 union all select 4 union all select 5) numbers right join qa_processquestion_disposition_setup qa on CHAR_LENGTH(sub_disposition)-CHAR_LENGTH(REPLACE(sub_disposition, ',', ''))>=numbers.n-1 JOIN process_disposition pd ON pd.id=disposition_id WHERE setup_id=setupid GROUP BY disposition,duration,percentage; SELECT GROUP_CONCAT(CONCAT("( pl.Disposition ='",disposition,"'" ,case when (sub_disposition!="" OR sub_disposition IS NOT NULL) then CONCAT(" and pl.sub_disposition IN (",sub_disposition,") ") ELSE "" END,case when percentage>0.00 then CONCAT(" AND percentage ='",percentage,"'") ELSE CONCAT(" AND percentage ='100.00' ") END,case when duration>0 then CONCAT(" and pl.duration >='",duration,"')") ELSE ")" end ) SEPARATOR ' or '), GROUP_CONCAT(CONCAT("( pl.Disposition ='",disposition,"'" ,case when (sub_disposition!="" OR sub_disposition IS NOT NULL) then CONCAT(" and pl.sub_disposition IN (",sub_disposition,") )") ELSE ")" END )SEPARATOR ' or ') INTO @dispo,@pl_dispo FROM getqadispodata; #SELECT @dispo; if IFNULL(@pid,'')!='' then DROP TABLE if EXISTS qa_dispo_assign; SET @SQL=CONCAT('create table qa_dispo_assign select pl.disposition,pl.sub_disposition,round((count(1)*ifnull(percentage,0)/100),0) limitcount,count(1) Totalcount FROM process_table_',@pid,' as pm JOIN process_table_log_',@pid,' pl ON pl.parent_id=pm.id JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end)) as call_duration,crm_id from process_table_sub_log_',@pid,' where crm_id!="0" group by crm_id) as p3 ON pl.crm_id =p3.crm_id join getqadispodata qa ON qa.disposition=pl.disposition where campaign=',@campid,' and start_time>="',@fromdate,'" and start_time>=concat(date_sub(curdate(),interval 9 DAY)," 00:00:00") and start_time<=concat(date_sub(curdate(),interval 1 DAY)," 23:00:00") and ',@dispo,' group by pl.disposition,pl.sub_disposition,percentage'); #SELECT @SQL; PREPARE stmt FROM @SQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @query=CONCAT(' select group_concat(logid) logid from(SELECT pl.id logid,disposition,ROW_NUMBER() OVER(PARTITION by disposition,pl.sub_disposition ORDER BY pl.id) rnk FROM process_table_',@pid,' as pm JOIN process_table_log_',@pid,' pl ON pl.parent_id=pm.id JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end)) as call_duration,crm_id from process_table_sub_log_',@pid,' where crm_id!="0" group by crm_id) as p3 ON pl.crm_id =p3.crm_id WHERE ifnull(assign_to,0)=0 and ',@pl_dispo,')t join qa_dispo_assign on qa_dispo_assign.disposition=t.disposition and t.rnk<=limitcount'); #SELECT @QUERY; PREPARE stmt FROM @query; EXECUTE stmt; DEALLOCATE PREPARE stmt; end if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_free_calendarinvite_slot`; DELIMITER // CREATE PROCEDURE `get_free_calendarinvite_slot`( IN `pid` INT, IN `cid` INT, IN `slotdate` VARCHAR(10), IN `agentid` VARCHAR(20) ) BEGIN SET @SQL=CONCAT('SELECT case when CURDATE()=Dateslot then "Today" when DATE_ADD(CURDATE(), INTERVAL 1 DAY)=Dateslot then "Tomorrow" else Dateslot end DayName,m.* from(SELECT DATE(CalendarInviteslot.dateslot) Dateslot,CONCAT(fromtime,"-",totime) Timeslot,agent.name Agent_Name FROM ( SELECT dateslot,fromtime,totime from(SELECT CURRENT_DATE AS dateslot UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 2 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 3 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 4 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 5 DAY) UNION ALL SELECT DATE_ADD(CURDATE(), INTERVAL 6 DAY))s, CalendarInvite_slot )CalendarInviteslot right join agent on agent.id=',agentid,' LEFT JOIN campaign_mapping_',pid,' cm ON CONCAT(DATE_FORMAT(cm.invite_from, "%H:%i"),"-",DATE_FORMAT(cm.invite_to, "%H:%i"))=CONCAT(fromtime,"-",totime) and dateslot=DATE(invite_from) and campaign_id=',cid,' AND DATE(cm.invite_from) BETWEEN current_date() AND DATE(DATE_ADD(CURRENT_DATE,INTERVAL 6 DAY)) AND invite_from>NOW() WHERE CONCAT(dateslot," ",fromtime,":00")>=NOW() ',if(IFNULL(slotdate,"")!="",CONCAT(' and dateslot="',slotdate,'" '),""),' and agent_id is null)m ORDER BY Dateslot,Timeslot '); PREPARE stmt FROM @SQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `Check_Index`; DELIMITER // CREATE PROCEDURE `Check_Index`( IN `tablename` VARCHAR(50), IN `columnname` VARCHAR(50) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @datacheck=NULL; SET @sql=CONCAT(' SELECT count(1) count into @datacheck FROM information_schema.statistics WHERE table_schema = DATABASE() AND table_name = "',tablename,'" AND index_name = "',columnname,'"; '); PREPARE stmt FROM @SQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; if IFNULL(@datacheck,0)<=0 then SET @query=CONCAT('ALTER TABLE ',tablename,' ADD INDEX ',columnname,' (',columnname,') USING BTREE;'); PREPARE stmt FROM @QUERY; EXECUTE stmt; DEALLOCATE PREPARE stmt; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_CDRDatCampaignWise`; DELIMITER // CREATE PROCEDURE `get_CDRDatCampaignWise`( IN `pid` VARCHAR(50), IN `team_leader_id` INT, IN `camp_ids` VARCHAR(350) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len=1000000; SET @clientid=(SELECT group_concat(ifnull(client_id,0)) FROM process WHERE id IN (pid)); SET @CdrData=CONCAT('SELECT campaign.name `CampaignName`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) then 1 ELSE 0 END),0)`Offered_Call`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL and cdr.agent IS not NULL then 1 ELSE 0 END),0)`Ans_Call`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND (exten_ans_time IS NULL or (exten_ans_time is not NULL and cdr.agent IS NULL)) then 1 ELSE 0 END),0)`Abn_Call`, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END)`Outgoing_Call`, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)`Con_Outgoing`, ROUND((ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL and cdr.agent IS not NULL then 1 ELSE 0 END),0)*100.0)/NULLIF(ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) then 1 ELSE 0 END),0),0),1)`SLA` ,campaign.queuecount, sec_to_time(case when campaign.queuecount>0 then TIMESTAMPDIFF(SECOND,campaign.maxWaitTime, NOW()) ELSE NULL END) maxWaitTime FROM cdrtemp cdr LEFT JOIN campaign ON cdr.campaign_id=campaign.id LEFT JOIN `process` ON `process`.`id`=`cdr`.`process_id` LEFT JOIN `trunk` ON cdr.trunk_channel=`trunk`.name LEFT JOIN agent on cdr.agent=agent.name WHERE 1=1 and end_call=1 and Start_time>=curdate() AND ifnull(cdr.out_call_type,"")!="TR" AND ifnull(campaign.NAME,"")!="" ',Case when IFNULL(PID,"")!="" then CONCAT(' AND campaign.Process_id in (',pid,') ') ELSE ' ' END,case when IFNULL(team_leader_id,0)>0 then CONCAT(' AND ((ifnull(cdr.agent,"")="" AND ifnull(cdr.exten,"")="" ) OR (ifnull(cdr.agent,"")!="" AND agent.team_leader="',team_leader_id,'" ) ) ')ELSE '' END , ' ',case when ifnull(camp_ids,'')!='' then CONCAT(' AND campaign.id in (',camp_ids,')') ELSE '' end,' GROUP BY campaign.name,campaign.queuecount, campaign.maxWaitTime '); PREPARE getcdrdata FROM @CdrData; execute getcdrdata; DEALLOCATE PREPARE getcdrdata; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getAgentMissedData`; DELIMITER // CREATE PROCEDURE `getAgentMissedData`( IN `pid` INT, IN `agentid` VARCHAR(10), IN `from_date` VARCHAR(20), IN `to_date` VARCHAR(20), IN `hide_phone_no` INT, IN `rowlimit` VARCHAR(10) ) BEGIN SET @clientid=(SELECT client_id FROM process WHERE id=pid); SET @CdrTable=case when (LEFT(from_date,10)=CURDATE() AND LEFT(to_date,10)=CURDATE()) then 'cdrtemp' ELSE CONCAT('cdr_',ifnull(@clientid,0)) end; SET @baseQuery=CONCAT(' WITH call_log AS ( SELECT MAX(start_time) AS start_time,RIGHT(log_phone_no,10) AS log_phone_no FROM process_table_log_',pid,' WHERE start_time > DATE_ADD(CURDATE(), INTERVAL -5 DAY) AND start_time >= "',CONCAT(from_date,' 00:00:00'),'" AND disposition != ''AgentMissed'' GROUP BY RIGHT(log_phone_no,10) ), cdr_table AS ( SELECT MAX(start_time) AS Last_MissCall_Time,COUNT(1) AS no_of_call,RIGHT(caller_id,10) AS calledno FROM ', @CdrTable ,' c LEFT JOIN ( SELECT RIGHT(caller_id,10) AS callerid, MAX(start_time) AS lastanstime FROM ', @CdrTable ,' WHERE start_time > DATE_ADD(CURDATE(), INTERVAL -5 DAY) AND call_type=''Incoming'' and start_time >= "',CONCAT(from_date,' 00:00:00'),'" AND end_call=1 AND exten_ans_time IS NOT NULL GROUP BY RIGHT(caller_id,10) )ans ON ans.callerid = RIGHT(c.caller_id,10) WHERE (ans.lastanstime IS NULL OR c.start_time > ans.lastanstime) AND c.start_time > DATE_ADD(CURDATE(), INTERVAL -5 DAY) AND c.start_time >= "',CONCAT(from_date,' 00:00:00'),'" AND call_type=''Incoming'' AND c.end_call=1 AND c.exten_ans_time IS NULL ',case when @CdrTable='cdrtemp' then CONCAT(' and cid=',@clientid,' ') ELSE '' end,' GROUP BY RIGHT(caller_id,10) ), finalQuery AS ( SELECT ROW_NUMBER() OVER(PARTITION BY RIGHT(cdr.caller_id,10) ORDER BY cdr.start_time DESC) rn, RIGHT(cdr.caller_id,10) AS phone_no,cd.no_of_call, CASE WHEN acd_time IS NOT NULL AND exten_ans_time IS NULL AND exten_ring_time IS NOT NULL THEN ''Agent Missed'' WHEN exten_ans_time IS NULL AND acd_time IS NULL AND call_type=''Incoming'' THEN ''IVR'' WHEN acd_time IS NOT NULL AND exten_ans_time IS NULL THEN ''Queue'' WHEN cdr.agent IS NULL THEN ''Queue'' ELSE '''' END AS Call_End_At, cdr.agent AS `Agent Name`, CASE WHEN (cdr.start_time>pl1.start_time OR pl1.start_time IS NULL) THEN ''Not Dialed'' ELSE ''Dialed'' END AS Call_Status, cd.Last_MissCall_Time, campaign.name Campaign_Name, cdr.campaign_id as Camp_Id FROM ',@CdrTable,' cdr LEFT JOIN call_log pl1 ON RIGHT(cdr.caller_id,10)=pl1.log_phone_no LEFT JOIN cdr_table cd ON cd.calledno = RIGHT(cdr.caller_id,10) LEFT JOIN campaign ON cdr.campaign_id=campaign.id WHERE cdr.start_time > DATE_ADD(CURDATE(), INTERVAL -5 DAY) ', case when @CdrTable='cdrtemp' then CONCAT(' and cid=',@clientid,' ') ELSE '' end,' AND cdr.start_time >= "',CONCAT(from_date,' 00:00:00'),'" and cdr.start_time<="',CONCAT(to_date,' 23:59:59'),'" AND call_type=''Incoming'' AND cdr.end_call=1 AND cdr.exten_ans_time IS NULL ) '); if IFNULL(rowlimit,"")="" then SET @finalquery = CONCAT(@baseQuery ,' SELECT COUNT(*) AS no_of_rec FROM finalQuery WHERE rn=1 AND Call_Status="Not Dialed" '); ELSE SET @finalquery =CONCAT(@baseQuery ,' SELECT ',if(hide_phone_no=1,'CONCAT("******",RIGHT(phone_no,4))',' phone_no '),'Phone_no, No_of_call,Call_End_At,`Agent Name`,Call_Status,Last_MissCall_Time,Campaign_Name,Camp_Id FROM finalQuery WHERE rn=1 and Call_Status=''Not Dialed'' Order by Last_MissCall_Time desc ', case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END ,' '); END if; PREPARE stmt FROM @finalquery; EXECUTE stmt; DEALLOCATE PREPARE stmt; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `searchphoneno`; DELIMITER // CREATE PROCEDURE `searchphoneno`( IN `pid` INT, IN `phoneno` VARCHAR(16), IN `wherecondition` TEXT ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET SESSION group_concat_max_len = 1000000; SET @masterphone =(SELECT GROUP_CONCAT(CONCAT(case when primary_phone_no=1 AND data_type='phone' then CONCAT('master_tab.',field_name)END)) FROM formbuilder_field JOIN formbuilder ON formbuilder.id = formbuilder_field.form_id WHERE process_id=pid AND create_log=0 AND form_type='master'); SET @mastertab = CONCAT(' SELECT * FROM process_table_',pid,' master_tab where 1=1 ',if(IFNULL(phoneno,'')!='',CONCAT(' and ',IFNULL(@masterphone,''),' = ',phoneno,' '),""),' ',if(ifnull(wherecondition,'')!='' , CONCAT(' ',wherecondition,' '),""),' '); PREPARE stmt FROM @mastertab; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @mastertable = CONCAT(' SELECT camp_map. * FROM campaign_mapping_',pid,' camp_map LEFT JOIN process_table_',pid,' master_tab ON master_tab.id = camp_map.master_id where 1=1 ',if(IFNULL(phoneno,'')!='',CONCAT(' and ',IFNULL(@masterphone,''),' = ',phoneno,' '),""),' ',if(ifnull(wherecondition,'')!='' , CONCAT(' ',wherecondition,' '),""),' '); PREPARE stmt FROM @mastertable; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @logtab= CONCAT(' SELECT log_tab.* , campaign.name as campaign FROM process_table_log_',pid,' log_tab LEFT JOIN campaign ON campaign.id=log_tab.campaign left join process_table_',pid,' master_tab on master_tab.id = log_tab.parent_id where 1=1 ',if(ifnull(wherecondition,'')!='' , CONCAT(' ',wherecondition,' '),""),' ',if(ifnull(phoneno,'')!='',CONCAT( ' and log_phone_no=',phoneno,' '),""),' '); PREPARE stmt FROM @logtab; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_recordingdata`; DELIMITER // CREATE PROCEDURE `get_recordingdata`( IN `clientid` VARCHAR(500), IN `fromdate` VARCHAR(20), IN `todate` VARCHAR(20), IN `mindurn` VARCHAR(20), IN `maxdurn` VARCHAR(20), IN `noofrecords` VARCHAR(20), IN `hide_no` INT ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @fromDate = case when IFNULL(fromdate,'')='' then CURDATE() ELSE fromdate END; SET @toDate = case when IFNULL(todate,'')='' then CURDATE() ELSE todate END; SELECT recording_url INTO @recording_url FROM company; SET @cdrrecodata=''; SET @cdrdata=CONCAT('SELECT GROUP_CONCAT(CONCAT(" select client_id,process_id,campaign_id,Phone_Number,unique_id,Date,recording_file from(SELECT ",id," Client_id, @row_number:=CASE WHEN @process_id=process_id AND @campaign_id=campaign_id THEN @row_number + 1 ELSE 1 END AS rnk, @process_id:=process_id process_id, @campaign_id:=campaign_id campaign_id,cdr.unique_id,',if(ifnull(hide_no,"")=1,CONCAT(' concat(""******"",right(cdr.caller_id,4)) '),CONCAT( 'cdr.caller_id')),' Phone_Number,date(start_time) `Date`, concat(''',@recording_url,'''/*,''/monitor/''*/,''?file='',recording_file) recording_file FROM cdr_",id," cdr, (SELECT @process_id:=0,@campaign_id:=0,@row_number:=0) as t WHERE recording_file is not null and call_type=''Outgoing'' and billsec>0 and start_time>=''',@fromdate,''' AND start_time<=DATE_ADD(''',@todate,''',INTERVAL 1 DAY) ',if(IFNULL(mindurn,"")!="" AND IFNULL(maxdurn,"")="",CONCAT(' and billsec>=',mindurn,' ')," " ) ,if(IFNULL(maxdurn,"")!="" AND IFNULL(mindurn,"")="",CONCAT(' and billsec<=',maxdurn,' ')," " ),' ',if(IFNULL(mindurn,"")!="" AND IFNULL(maxdurn,"")!="",CONCAT(' and (billsec>=',mindurn,' and billsec<= ',maxdurn,') ')," " ),' ORDER BY process_id,campaign_id)m where rnk<=5 " ) SEPARATOR " UNION ALL " ) into @cdrrecodata from client_master where ActiveClient=1 and id in (',clientid,')'); PREPARE stmt FROM @cdrdata; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @SQL=CONCAT('select client_master.name AS Client_Name,process.name Process_Name,campaign.name Campaign_Name,s.Phone_Number,s.Date,s.unique_id,recording_file AS Recording_File,al.Remark,al.id Remark_id from (',@cdrrecodata,')s join client_master on client_master.id=Client_id left join process on process.id=process_id left join campaign on campaign.id=campaign_id left join (select max(id) log_id,unique_id from callrecording_audit_log group by unique_id)als on s.unique_id=als.unique_id left join callrecording_audit_log al on al.id=als.log_id'); PREPARE stmt FROM @SQL; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `addCdrData`; DELIMITER // CREATE PROCEDURE `addCdrData`( IN `unique_id` VARCHAR(100), IN `linked_id` VARCHAR(100), IN `trunk_channel` VARCHAR(25), IN `exten` VARCHAR(20), IN `caller_id` VARCHAR(20), IN `call_type` VARCHAR(15), IN `did` VARCHAR(20), IN `start_time` VARCHAR(50), IN `acd_time` VARCHAR(50), IN `exten_ring_time` VARCHAR(50), IN `exten_time` VARCHAR(50), IN `exten_ans_time` VARCHAR(50), IN `end_time` VARCHAR(50), IN `acd` VARCHAR(15), IN `cause` CHAR(50), IN `agent_disconnect` INT(1), IN `out_call_type` VARCHAR(15), IN `dtmf` TINYTEXT, IN `feedback` TINYTEXT, IN `process_id` INT, IN `campaign_id` INT, IN `mapid` INT, IN `userfield` VARCHAR(15), IN `hold_duration` INT, IN `call_hangup_reason` VARCHAR(150), IN `duration` INT, IN `billsec` INT, IN `recording_file` VARCHAR(250), IN `end_call` INT(1), IN `disposition` VARCHAR(100), IN `ivr_name` VARCHAR(200) ) NO SQL DETERMINISTIC BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @agent_name_var=NULL; SET @client_id_var=NULL; SET @process_id_var=NULL; SET @login_process_var=NULL; SET @crm_id_var=NULL; SET @map_id_var=NULL; SET @current_campaign_var=NULL; SET @campaign_id_var=NULL; SET @connected=0; SET @campaign_type=NULL; IF exten_ans_time is not NULL and exten_ans_time!='' THEN SET @connected=1; ELSEIF call_type='Outgoing' AND disposition='ANSWER' THEN SET @connected=1; END IF; IF exten!='' and exten IS NOT NULL THEN select agent_name,login_process,current_crm_id,current_map_id,current_campaign into @agent_name_var,@login_process_var,@crm_id_var,@map_id_var,@current_campaign_var from agent_current_states WHERE login_extension_no=exten; END IF; IF campaign_id!='' AND campaign_id>0 AND campaign_id IS NOT NULL THEN SELECT process.client_id,campaign.process_id,campaign.type into @client_id_var,@process_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=campaign_id; SET @campaign_id_var=campaign_id; ELSE IF (did IS NULL OR did='') AND (acd iS NULL OR acd='') THEN SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE if (@current_campaign_var IS NOT NULL AND @current_campaign_var!='' AND @current_campaign_var>0) then SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE SET @client_id_var=NULL; SET @process_id_var=NULL; SET @campaign_id_var=NULL; SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id WHERE (( IFNULL(did,'')!='' AND did_no=did AND ifnull(did_no,'')!='' ) and (IFNULL(acd,'')!='' AND san_acd_code=acd )) OR ((ifnull(did_no,'')='' OR IFNULL(did,'')='' )and IFNULL(acd,'')!='' and (san_acd_code=acd )) OR (IFNULL(acd,'')='' AND IFNULL(did,'')!='' and did_no=did) LIMIT 0,1; END IF; END IF; END IF; SET @dynSQL=CONCAT('INSERT INTO ',Case when IfNULL(@client_id_var,"0")="0" then 'cdr' ELSE CONCAT('cdr_',IfNULL(@client_id_var,"0"))END ,'( `unique_id`, `linked_id`, `trunk_channel`, `exten`, `caller_id`, `call_type`, `did`, `start_time`, `acd_time`, `exten_ring_time`, `exten_time`, `exten_ans_time`, `end_time`, `acd`, `cause`, `agent_disconnect`, `out_call_type`, `dtmf`, `feedback`, `process_id`, `campaign_id`, `map_id`, `crm_id`, `master_id`, `userfield`, `hold_duration`, `agent`, `call_hangup_reason`, `duration`, `billsec`, `recording_file`,`end_call` , `connected`,`disposition`,`ivr_name` )VALUES(',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmt1 FROM @dynSQL; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @cdrid=LAST_INSERT_ID(); if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,"")!="" AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(recording_file,"")!="" then CALL `addProcessSublog`(@process_id_var , case when IFNULL(@crm_id_var,"")="" then "0" ELSE @crm_id_var END, recording_file, call_type ,IFNULL(linked_id,"") , duration,billsec); END if; if IFNULL(out_call_type,"")="PD" AND IFNULL(@process_id_var,"")!="" AND exten_ans_time IS null AND ifnull(mapid,0)>0 AND ifnull(end_call,0)=1 then CALL `addSystemDisposeLog`(IFNULL(@process_id_var,"0") ,ifnull(mapid,0),linked_id,unique_id,ifnull(caller_id,""),ifnull(cause,0),IFNULL(call_hangup_reason,""),IFNULL(dtmf,""),IFNULL(duration,0)); END if; IF end_call=1 AND call_type='Incoming' AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(@connected,0)=0 THEN CALL `set_callback_on_missedcall`(@client_id_var, did,acd, @cdrid,caller_id,if(acd_time IS NULL,'IVR','QUEUE')); END IF; END if; CREATE TABLE if NOT EXISTS `cdrtemp` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`unique_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`linked_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`trunk_channel` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`exten` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`caller_id` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`call_type` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`did` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `start_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ring_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ans_time` DATETIME NULL DEFAULT NULL, `end_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `cause` VARCHAR(20) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `agent_disconnect` INT(1) NULL DEFAULT NULL, `out_call_type` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `dtmf` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `feedback` VARCHAR(5) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `process_id` INT(11) NULL DEFAULT NULL, `campaign_id` INT(11) NULL DEFAULT NULL, `map_id` INT(11) NULL DEFAULT NULL, `crm_id` BIGINT(20) NULL DEFAULT NULL, `master_id` INT(11) NULL DEFAULT NULL, `userfield` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `hold_duration` INT(3) NULL DEFAULT NULL, `agent` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `call_hangup_reason` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `duration` INT(11) NULL DEFAULT NULL, `billsec` INT(11) NULL DEFAULT NULL, `recording_file` VARCHAR(250) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `log` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `connected` INT(1) NULL DEFAULT '0', `end_call` INT(1) NOT NULL DEFAULT '0', `disposition` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`cid` INT(11) NULL DEFAULT NULL, `ivr_name` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`Wrapup_duration` BIGINT(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) COLLATE='latin1_swedish_ci' ENGINE=InnoDB ; SET @cdrtempSQL=CONCAT('INSERT INTO cdrtemp (cid,`unique_id`,`linked_id`,`trunk_channel`,`exten`,`caller_id`,`call_type`,`did`,`start_time`,`acd_time`,`exten_ring_time`,`exten_time`,`exten_ans_time`,`end_time`,`acd`,`cause`,`agent_disconnect`,`out_call_type`,`dtmf`,`feedback`,`process_id`,`campaign_id`,`map_id`,`crm_id`,`master_id`,`userfield`,`hold_duration`,`agent`,`call_hangup_reason`,`duration`,`billsec`,`recording_file`,`end_call`,`connected`,`disposition`,`ivr_name`) VALUES(',Case when IfNULL(@client_id_var,"0")="0" then "0" ELSE @client_id_var END ,',',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmtcdrtempSQL FROM @cdrtempSQL; EXECUTE stmtcdrtempSQL; DEALLOCATE PREPARE stmtcdrtempSQL; if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,'')!='' AND IFNULL(feedback,'')!='' AND IFNULL(linked_id,'')!='' then SET @updatefeedback = CONCAT('update process_table_log_',@process_id_var,' set feedback="',feedback, '" where cdr_id="',linked_id,'"'); PREPARE stmtupdatefeedback FROM @updatefeedback; EXECUTE stmtupdatefeedback; DEALLOCATE PREPARE stmtupdatefeedback; END if; if ifnull(acd,0)>0 AND (exten_ans_time IS NULL) AND end_call=1 then SELECT missed_call_email_template,email_on_missed_call,process.id,campaign.id,process.client_id INTO @missed_call_email_template,@email_on_missed_call,@process_id_new,@campaign_id,@client_id FROM campaign join process ON campaign.process_id=process.id WHERE san_acd_code=acd; CALL addEmailData(@process_id_new,@campaign_id,@client_id,@agent_name_var,@missed_call_email_template,@email_on_missed_call); END if; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_lead_free_agent`; DELIMITER // CREATE PROCEDURE `get_lead_free_agent`( IN `pid` VARCHAR(10), IN `cid` VARCHAR(50), IN `agentid` VARCHAR(200), IN `where_condition` VARCHAR(200) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; SET @max_lead_per_day = 0; SET @agent_max_lead = 0; SET @assign_lead_login_agent=0; SET @round_robin=0; SET @maxlead = CONCAT('SELECT max_lead_per_day, agent_max_lead,assign_lead_login_agent,round_robin INTO @max_lead_per_day, @agent_max_lead,@assign_lead_login_agent,@round_robin FROM process_data_insert_rule WHERE `default` =1 AND process_id =',pid,' LIMIT 1 '); PREPARE stmt FROM @maxlead; execute stmt; DEALLOCATE PREPARE stmt; if IFNULL(@round_robin,0)=0 then if IFNULL(@assign_lead_login_agent,0)=0 then SET @leadcount = CONCAT(' SELECT agent_id,agent_name,extension_no,lead_count_per_insert_logic,campaign_id FROM (SELECT agent_id,agent_name,extension_no,total_lead_per_day,(lead_count_per_agent + COUNT(case when inlogic.agent IS NOT NULL then 1 END)) lead_count_per_insert_logic,',cid,' campaign_id FROM ( SELECT agent.id as agent_id,agent.name as agent_name,agent.extension_no,total_lead_per_day,ifnull(today_lead,0) lead_count_per_agent FROM agent LEFT JOIN (SELECT agent_id,count(1) today_lead FROM campaign_mapping_',pid,' cm join importmaster_',pid,' im on im.id=cm.Fileid Where ifnull(im.active_file,0)=1 AND im.mark_for_deletion=0 AND IFNULL(StopCalling,"0")=0 and cm.campaign_id=',cid,' AND (Dialed = 0 AND CallAgainTime IS NULL AND (Disposition is NULL OR Disposition="") AND (HangupCause IS NULL OR HangupCause="")) GROUP BY agent_id )camp ON camp.agent_id = agent.id WHERE agent.active=1 and FIND_IN_SET(',cid,', agent.campaigns) and ifnull(agent.total_lead_per_day,0) <=',@max_lead_per_day,' ',if(ifnull(agentid,"")!="",Concat(' AND agent.id IN (',agentid,') '),""),' AND ', where_condition, ' HAVING today_lead <',@agent_max_lead,' ) AS t LEFT JOIN process_table_data_insert_logic_',pid,' inlogic ON inlogic.agent=agent_name GROUP BY agent_id,agent_name,extension_no HAVING lead_count_per_insert_logic <',@agent_max_lead,')As m ORDER BY lead_count_per_insert_logic ASC,total_lead_per_day LIMIT 1; '); PREPARE stmt FROM @leadcount; execute stmt; DEALLOCATE PREPARE stmt; END IF; if IFNULL(@assign_lead_login_agent,0)=1 then SET @loginagent = CONCAT(' SELECT agent_id,agent_name,extension_no,lead_count_per_insert_logic,campaign_id FROM (SELECT agent_id,agent_name,extension_no,last_lead_assign_datetime,total_lead_per_day,(lead_count_per_agent + COUNT(case when inlogic.agent IS NOT NULL then 1 END)) lead_count_per_insert_logic,',cid,' campaign_id FROM ( SELECT agent_current_states.agent_id,agent_current_states.agent_name,agent_current_states.login_extension_no extension_no,last_lead_assign_datetime,total_lead_per_day,SUM(ifnull(today_lead,0)) lead_count_per_agent FROM agent_current_states agent_current_states JOIN agent ON agent_current_states.agent_id = agent.id JOIN agent_login_campaign ON agent_login_campaign.agent_id=agent_current_states.agent_id LEFT JOIN (SELECT agent_id,count(1) today_lead FROM campaign_mapping_',pid,' cm join importmaster_',pid,' im on im.id=cm.Fileid Where ifnull(im.active_file,0)=1 AND im.mark_for_deletion=0 AND IFNULL(StopCalling,"0")=0 and cm.campaign_id=',cid,' AND (Dialed = 0 AND CallAgainTime IS NULL AND (Disposition is NULL OR Disposition="") AND (HangupCause IS NULL OR HangupCause="")) GROUP BY agent_id )camp ON camp.agent_id = agent_current_states.agent_id WHERE agent_login_campaign.campaign_id=',cid,' AND ifnull(agent.total_lead_per_day,0) <=',@max_lead_per_day,' ',if(ifnull(agentid,"")!="",Concat(' AND agent_current_states.agent_id IN (',agentid,') '),""),' AND ifnull(agent_current_states.login_process,"")="',pid,'" AND ', where_condition, ' AND date(agent_current_states.status_change_tm)=CURDATE() AND ifnull(agent_current_states.status,0) not in(0,2) GROUP BY agent_current_states.agent_id,agent_current_states.agent_name,agent_current_states.login_extension_no,last_lead_assign_datetime HAVING lead_count_per_agent <',@agent_max_lead,')t LEFT JOIN process_table_data_insert_logic_',pid,' inlogic ON inlogic.agent=agent_name GROUP BY agent_id,agent_name,extension_no,last_lead_assign_datetime HAVING lead_count_per_insert_logic <',@agent_max_lead,')As m ORDER BY lead_count_per_insert_logic ASC,total_lead_per_day,last_lead_assign_datetime ASC LIMIT 1; '); PREPARE stmt FROM @loginagent; execute stmt; DEALLOCATE PREPARE stmt; END IF; END if; if IFNULL(@round_robin,0)=1 then if IFNULL(@assign_lead_login_agent,0)=0 then SET @leadcount = CONCAT(' SELECT agent_id,agent_name,extension_no,lead_count_per_insert_logic,campaign_id FROM (SELECT agent.id agent_id,agent.name agent_name,agent.extension_no,last_lead_assign_datetime,ifnull(Sum(lead_count),0) lead_count_per_insert_logic,',cid,' campaign_id FROM agent LEFT JOIN (select count(1) lead_count,agent from process_table_data_insert_logic_',pid,' group by agent) inlogic ON inlogic.agent=agent_name WHERE agent.active=1 and FIND_IN_SET(',cid,', agent.campaigns) and ifnull(agent.total_lead_per_day,0) <',@max_lead_per_day,' ',if(ifnull(agentid,"")!="",Concat(' AND agent.id IN (',agentid,') '),""),' AND ', where_condition, ' GROUP BY agent.id,agent.name,agent.extension_no,last_lead_assign_datetime HAVING lead_count_per_insert_logic <',@agent_max_lead,')As m ORDER BY lead_count_per_insert_logic ASC,last_lead_assign_datetime ASC LIMIT 1; '); PREPARE stmt FROM @leadcount; execute stmt; DEALLOCATE PREPARE stmt; END IF; if IFNULL(@assign_lead_login_agent,0)=1 then SET @loginagent = CONCAT(' SELECT agent_id,agent_name,extension_no,lead_count_per_insert_logic,campaign_id FROM (SELECT agent_current_states.agent_id,agent_current_states.agent_name,agent_current_states.login_extension_no extension_no,last_lead_assign_datetime,ifnull(Sum(lead_count),0) lead_count_per_insert_logic,',cid,' campaign_id FROM agent_current_states agent_current_states JOIN agent ON agent_current_states.agent_id = agent.id JOIN agent_login_campaign ON agent_login_campaign.agent_id=agent_current_states.agent_id LEFT JOIN (select count(1) lead_count,agent from process_table_data_insert_logic_',pid,' group by agent) inlogic ON inlogic.agent=agent_name WHERE agent_login_campaign.campaign_id=',cid,' ',if(ifnull(agentid,"")!="",Concat(' AND agent_current_states.agent_id IN (',agentid,') '),""),' and ifnull(agent.total_lead_per_day,0) <',@max_lead_per_day,' AND ifnull(agent_current_states.login_process,"")="',pid,'" AND ', where_condition, ' AND date(agent_current_states.status_change_tm)=CURDATE() AND ifnull(agent_current_states.status,0) not in(0,2) GROUP BY agent_current_states.agent_id,agent_current_states.agent_name,agent_current_states.login_extension_no,last_lead_assign_datetime HAVING lead_count_per_insert_logic <',@agent_max_lead,')As m ORDER BY lead_count_per_insert_logic ASC,last_lead_assign_datetime ASC LIMIT 1; '); PREPARE stmt FROM @loginagent; execute stmt; DEALLOCATE PREPARE stmt; END IF; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `aftersaveupdate`; DELIMITER // CREATE PROCEDURE `aftersaveupdate`( IN `processid` VARCHAR(15), IN `campaignid` VARCHAR(15), IN `logid` VARCHAR(15), IN `mapid` VARCHAR(15), IN `masterid` VARCHAR(15), IN `maindisposition` VARCHAR(100), IN `subdisposition` VARCHAR(100), IN `start_time` VARCHAR(30), IN `end_time` VARCHAR(30), IN `setcallbacktime` VARCHAR(30), IN `sqlcommand` TEXT, IN `proc_agent_id` VARCHAR(50), IN `extension_no` VARCHAR(20), IN `calltype` VARCHAR(20), IN `CallConnected` VARCHAR(2), IN `agent_name` VARCHAR(200) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; INSERT INTO aftersaveupdatelog(logid,mapid,masterid,disposition,subdisposition,start_time,end_time,setcallbacktime,processid,campaignid,sqlcommand,proc_agent_id,agent_name,extension_no,calltype,CallConnected) VALUES(logid,mapid,masterid,maindisposition,subdisposition,start_time,end_time,setcallbacktime,processid,campaignid,sqlcommand,proc_agent_id,agent_name,extension_no,calltype,ifnull(CallConnected,0)); if (IFNULL(start_time,"")!="") then INSERT into process_log_temp(agent_id,agent_name,extension_no,calltype,CallConnected,start_time,pid,cid) VALUES (proc_agent_id,agent_name,extension_no,calltype,case when CallConnected=1 then 1 ELSE 0 end ,start_time,processid,campaignid); END if; SET @sms_count = 0; SELECT COUNT(1) INTO @sms_count FROM sms_schedule WHERE added_on>CURDATE() AND process_id=processid AND master_id=masterid AND ifnull(sms_sent,0) = 1; if(IFNULL(@sms_count,0) > 0) then UPDATE sms_schedule SET sms=0 WHERE added_on>CURDATE() AND process_id=processid AND process_id=processid AND master_id=masterid; END if; if ifnull(sqlcommand,"")!="" then SET @sqlcommand = replace(sqlcommand,'`','"'); PREPARE stmtsqlcommand FROM @sqlcommand; EXECUTE stmtsqlcommand; DEALLOCATE PREPARE stmtsqlcommand; END if; SET @updatewrapupdurn = CONCAT('update cdrtemp cdr join process_table_log_',processid,' pl on cdr.linked_id=pl.cdr_id set cdr.Wrapup_duration=pl.wrapup_durn where pl.id=',logid,''); PREPARE stmtupdatewrapupdurn FROM @updatewrapupdurn; EXECUTE stmtupdatewrapupdurn; DEALLOCATE PREPARE stmtupdatewrapupdurn; if ifnull(logid,"")!="" then SET @updatefeedback = CONCAT('update process_table_log_',processid,' pl join cdrtemp cdr on cdr.linked_id=pl.cdr_id set pl.feedback=cdr.feedback where pl.id=',logid,' AND cdr.feedback is not null '); PREPARE stmtupdatefeedback FROM @updatefeedback; EXECUTE stmtupdatefeedback; DEALLOCATE PREPARE stmtupdatefeedback; END if; if processid=1 AND campaignid=1 AND maindisposition='not connected' then UPDATE campaign_mapping_1 SET exact_attempt_count = IFNULL(exact_attempt_count,0)+1, NC_agent_id=agent_id WHERE map_id=mapid; SET @exact_count=NULL; SELECT IFNULL(exact_attempt_count,0) INTO @exact_count FROM campaign_mapping_1 WHERE map_id=mapid; IF IFNULL(@exact_count, 0) >= 10 THEN UPDATE campaign_mapping_1 SET DoNotCall = 1,StopCalling = 1,StopCallingReason = 'Max attempt >= 10',StopCallingUpdateTime = NOW() WHERE map_id = mapid; ELSE SET @new_agent_id=NULL; SET @NC_agent_id=NULL; SELECT NC_agent_id INTO @NC_agent_id FROM campaign_mapping_1 WHERE IFNULL(NC_agent_id,"")!="" and map_id=mapid; UPDATE campaign_mapping_1 SET dialed=0, agent_id=@new_agent_id,CallAgainTime=NULL,CallAgainType='NC Churn' WHERE map_id=mapid; END if; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `removeCdrTempData`; DELIMITER // CREATE PROCEDURE `removeCdrTempData`() BEGIN DELETE FROM cdrtemp WHERE start_time0 AND campaign_id IS NOT NULL THEN SELECT process.client_id,campaign.process_id,campaign.type into @client_id_var,@process_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=campaign_id; SET @campaign_id_var=campaign_id; ELSE IF (did IS NULL OR did='') AND (acd iS NULL OR acd='') THEN SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE if (@current_campaign_var IS NOT NULL AND @current_campaign_var!='' AND @current_campaign_var>0) then SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE SET @client_id_var=NULL; SET @process_id_var=NULL; SET @campaign_id_var=NULL; /*SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id WHERE (( IFNULL(did,'')!='' AND did_no=did AND ifnull(did_no,'')!='' ) and (IFNULL(acd,'')!='' AND san_acd_code=acd )) OR ((ifnull(did_no,'')='' OR IFNULL(did,'')='' )and IFNULL(acd,'')!='' and (san_acd_code=acd )) OR (IFNULL(acd,'')='' AND IFNULL(did,'')!='' and did_no=did) LIMIT 0,1;*/ SELECT process.client_id,campaign.process_id,campaign.id into @client_id_var,@process_id_var,@campaign_id_var from campaign JOIN did ON did.id=campaign.did_no JOIN process on campaign.process_id=process.id WHERE (( IFNULL(did,'')!='' AND did.did=did AND ifnull(did.did,'')!='' ) and (IFNULL(acd,'')!='' AND san_acd_code=acd )) OR ((ifnull(did.did,'')='' OR IFNULL(did,'')='' )and IFNULL(acd,'')!='' and (san_acd_code=acd )) OR (IFNULL(acd,'')='' AND IFNULL(did,'')!='' and did.did=did) LIMIT 0,1; END IF; END IF; END IF; SET @dynSQL=CONCAT('INSERT INTO ',Case when IfNULL(@client_id_var,"0")="0" then 'cdr' ELSE CONCAT('cdr_',IfNULL(@client_id_var,"0"))END ,'( `unique_id`, `linked_id`, `trunk_channel`, `exten`, `caller_id`, `call_type`, `did`, `start_time`, `acd_time`, `exten_ring_time`, `exten_time`, `exten_ans_time`, `end_time`, `acd`, `cause`, `agent_disconnect`, `out_call_type`, `dtmf`, `feedback`, `process_id`, `campaign_id`, `map_id`, `crm_id`, `master_id`, `userfield`, `hold_duration`, `agent`, `call_hangup_reason`, `duration`, `billsec`, `recording_file`,`end_call` , `connected`,`disposition`,`ivr_name` )VALUES(',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmt1 FROM @dynSQL; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @cdrid=LAST_INSERT_ID(); if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,"")!="" AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(recording_file,"")!="" then CALL `addProcessSublog`(@process_id_var , case when IFNULL(@crm_id_var,"")="" then "0" ELSE @crm_id_var END, recording_file, call_type ,IFNULL(linked_id,"") , duration,billsec); END if; if IFNULL(out_call_type,"")="PD" AND IFNULL(@process_id_var,"")!="" AND exten_ans_time IS null AND ifnull(mapid,0)>0 AND ifnull(end_call,0)=1 then CALL `addSystemDisposeLog`(IFNULL(@process_id_var,"0") ,ifnull(mapid,0),linked_id,unique_id,ifnull(caller_id,""),ifnull(cause,0),IFNULL(call_hangup_reason,""),IFNULL(dtmf,""),IFNULL(duration,0)); END if; IF end_call=1 AND call_type='Incoming' AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(@connected,0)=0 THEN CALL `set_callback_on_missedcall`(@client_id_var, did,acd, @cdrid,caller_id,if(acd_time IS NULL,'IVR','QUEUE')); END IF; END if; CREATE TABLE if NOT EXISTS `cdrtemp` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`unique_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`linked_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`trunk_channel` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`exten` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`caller_id` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`call_type` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`did` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `start_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ring_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ans_time` DATETIME NULL DEFAULT NULL, `end_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `cause` VARCHAR(20) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `agent_disconnect` INT(1) NULL DEFAULT NULL, `out_call_type` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `dtmf` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `feedback` VARCHAR(5) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `process_id` INT(11) NULL DEFAULT NULL, `campaign_id` INT(11) NULL DEFAULT NULL, `map_id` INT(11) NULL DEFAULT NULL, `crm_id` BIGINT(20) NULL DEFAULT NULL, `master_id` INT(11) NULL DEFAULT NULL, `userfield` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `hold_duration` INT(3) NULL DEFAULT NULL, `agent` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `call_hangup_reason` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `duration` INT(11) NULL DEFAULT NULL, `billsec` INT(11) NULL DEFAULT NULL, `recording_file` VARCHAR(250) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `log` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `connected` INT(1) NULL DEFAULT '0', `end_call` INT(1) NOT NULL DEFAULT '0', `disposition` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`cid` INT(11) NULL DEFAULT NULL, `ivr_name` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`Wrapup_duration` BIGINT(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) COLLATE='latin1_swedish_ci' ENGINE=InnoDB ; SET @cdrtempSQL=CONCAT('INSERT INTO cdrtemp (cid,`unique_id`,`linked_id`,`trunk_channel`,`exten`,`caller_id`,`call_type`,`did`,`start_time`,`acd_time`,`exten_ring_time`,`exten_time`,`exten_ans_time`,`end_time`,`acd`,`cause`,`agent_disconnect`,`out_call_type`,`dtmf`,`feedback`,`process_id`,`campaign_id`,`map_id`,`crm_id`,`master_id`,`userfield`,`hold_duration`,`agent`,`call_hangup_reason`,`duration`,`billsec`,`recording_file`,`end_call`,`connected`,`disposition`,`ivr_name`) VALUES(',Case when IfNULL(@client_id_var,"0")="0" then "0" ELSE @client_id_var END ,',',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmtcdrtempSQL FROM @cdrtempSQL; EXECUTE stmtcdrtempSQL; DEALLOCATE PREPARE stmtcdrtempSQL; if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,'')!='' AND IFNULL(feedback,'')!='' AND IFNULL(linked_id,'')!='' then SET @updatefeedback = CONCAT('update process_table_log_',@process_id_var,' set feedback="',feedback, '" where cdr_id="',linked_id,'"'); PREPARE stmtupdatefeedback FROM @updatefeedback; EXECUTE stmtupdatefeedback; DEALLOCATE PREPARE stmtupdatefeedback; END if; if ifnull(acd,0)>0 AND (exten_ans_time IS NULL) AND end_call=1 then SELECT missed_call_email_template,email_on_missed_call,process.id,campaign.id,process.client_id INTO @missed_call_email_template,@email_on_missed_call,@process_id_new,@campaign_id,@client_id FROM campaign join process ON campaign.process_id=process.id WHERE san_acd_code=acd; CALL addEmailData(@process_id_new,@campaign_id,@client_id,@agent_name_var,@missed_call_email_template,@email_on_missed_call); END if; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `set_callback_on_missedcall`; DELIMITER // CREATE PROCEDURE `set_callback_on_missedcall`( IN `ClientId` INT, IN `DidNo` VARCHAR(20), IN `acdcode` VARCHAR(20), IN `cdrid` INT, IN `caller_id` VARCHAR(16), IN `missed_on` VARCHAR(5) ) BEGIN SET @PhoneNoField=NULL,@masterid=0,@callback=0,@mapid=0,@Phone_no=NULL,@Process_id=NULL,@campaign_id=0,@campaigns_transfer=0,@fileid=NULL,@file_name=NULL; SET @Phone_no = CASE WHEN CHAR_LENGTH(caller_id) > 10 THEN CASE WHEN SUBSTRING(caller_id,1,2) = "91" THEN SUBSTRING(caller_id,3,10) ELSE caller_id END ELSE caller_id END; if (acdcode iS NULL OR acdcode='') then SET @acdcode=''; SELECT san_acd_code INTO @acdcode FROM campaign JOIN did ON did.id=campaign.did_no WHERE did.did=ifnull(DidNo,'') LIMIT 1; SELECT campaign.process_id , client_missedcall_setting.campaign_id,client_missedcall_setting.campaigns_transfer, client_missedcall_setting.callback INTO @Process_id,@campaign_id,@campaigns_transfer,@callback FROM client_missedcall_setting JOIN campaign ON client_missedcall_setting.campaign_id=campaign.id WHERE client_missedcall_setting.client_id=ifNULL(ClientId,0) AND client_missedcall_setting.did_no=ifnull(DidNo,'') AND ifnull(client_missedcall_setting.acd_code,'')=IFNULL(@acdcode,'') AND ((client_missedcall_setting.ivr=if(missed_on='IVR',1,0) AND client_missedcall_setting.queue=if(missed_on='IVR',0,1) AND client_missedcall_setting.ivr=if(missed_on='QUEUE',0,1) AND client_missedcall_setting.queue=if(missed_on='QUEUE',1,0)) OR (client_missedcall_setting.ivr=client_missedcall_setting.queue)); #SELECT @Process_id; #SELECT @campaign_id; #SELECT @campaigns_transfer; ELSE SELECT campaign.process_id , client_missedcall_setting.campaign_id,client_missedcall_setting.campaigns_transfer, client_missedcall_setting.callback INTO @Process_id,@campaign_id,@campaigns_transfer,@callback FROM client_missedcall_setting JOIN campaign ON client_missedcall_setting.campaign_id=campaign.id WHERE client_missedcall_setting.client_id=ifNULL(ClientId,0) AND client_missedcall_setting.did_no=ifnull(DidNo,'') AND ifnull(client_missedcall_setting.acd_code,'')=IFNULL(acdcode,'') AND ((client_missedcall_setting.ivr=if(missed_on='IVR',1,0) AND client_missedcall_setting.queue=if(missed_on='IVR',0,1) AND client_missedcall_setting.ivr=if(missed_on='QUEUE',0,1) AND client_missedcall_setting.queue=if(missed_on='QUEUE',1,0)) OR (client_missedcall_setting.ivr=client_missedcall_setting.queue)); END if; SET @campaign_id_new = if((@campaign_id=IFNULL(@campaigns_transfer,0) OR IFNULL(@campaigns_transfer,0)=0),@campaign_id,@campaigns_transfer); SET @PhoneNoField=(SELECT formbuilder_field.field_name FROM formbuilder_field join process on formbuilder_field.form_id=process.form_id WHERE process.id=@Process_id and ifnull(formbuilder_field.primary_phone_no,0)=1 AND formbuilder_field.data_type='Phone'); If IFNULL(@PhoneNoField,'')!='' and IFNULL(@Phone_no,'')!='' and IFNULL(@Process_id,'0')>'0' and IFNULL(@campaign_id,'0')>'0' then SET @file_name = CONCAT('MissedCall_',@campaign_id_new,'_',CURDATE()); SET @QUERY1=CONCAT('select id into @fileid from importmaster_',@Process_id,' where file_name="',@file_name,'"'); PREPARE stmt1 FROM @QUERY1; execute stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@fileid,'')='' then SET @QUERY1=CONCAT('INSERT INTO importmaster_',@Process_id,'(file_name,process_id,campaign_id,import_type,upload_date,retain_callback,active_file,mark_for_deletion) VALUES("',@file_name,'",',@Process_id,',',@campaigns_transfer,',"CSV",now(),"1","1","0")'); PREPARE stmt1 FROM @QUERY1; execute stmt1; DEALLOCATE PREPARE stmt1; SET @fileid=LAST_INSERT_ID(); END if; SET @QUERY1=CONCAT(' Select id into @masterid from process_table_',@Process_id,' where ',@PhoneNoField,'="',@Phone_no,'" order by id desc limit 1 ; '); PREPARE stmt1 FROM @QUERY1; execute stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@masterid,0)>0 then SET @QUERY2=CONCAT(' Select map_id into @mapid from campaign_mapping_',@Process_id,' where master_id="',@masterid,'" and campaign_id="',@campaigns_transfer,'" and fileid="',@fileid,'" order by map_id desc limit 1 ; '); PREPARE stmt2 FROM @QUERY2; execute stmt2; DEALLOCATE PREPARE stmt2; if IFNULL(@mapid,0)>0 then SET @QUERY3=CONCAT(' Update campaign_mapping_',@Process_id,' set dialed="0", ',if(ifnull(@callback,0)=1,CONCAT(' CallAgainNo="',@Phone_no,'",CallAgainTime=Now(),CallAgainType="MissedCall",'),""),'MapToAgent="0" where map_id="',@mapid,'" and campaign_id="',@campaigns_transfer,'" ; '); PREPARE stmt3 FROM @QUERY3; execute stmt3; DEALLOCATE PREPARE stmt3; ELSE SET @QUERY3=CONCAT(' Insert into campaign_mapping_',@Process_id,' (master_id,campaign_id,dialed,',if(ifnull(@callback,0)=1,CONCAT('CallAgainTime,CallAgainType,'),""),' MapToAgent,Callbackdial_on_Hold,fileid)values("',@masterid,'","',@campaigns_transfer,'","0",',if(ifnull(@callback,0)=1,CONCAT('Now(),"Missed Call",'),""),'"0","0","',@fileid,'") ; '); PREPARE stmt3 FROM @QUERY3; execute stmt3; DEALLOCATE PREPARE stmt3; END if ; ELSE SET @QUERY4=CONCAT(' Insert into process_table_',@Process_id,' (',@PhoneNoField,',san_insert_date)values("',@Phone_no,'",Now()); '); PREPARE stmt4 FROM @QUERY4; execute stmt4; DEALLOCATE PREPARE stmt4; SET @masterid=LAST_INSERT_ID(); if @masterid>0 then SET @QUERY5=CONCAT('Insert into campaign_mapping_',@Process_id,' (master_id,campaign_id,dialed,',if(ifnull(@callback,0)=1,CONCAT('CallAgainTime,CallAgainType,'),""),' MapToAgent,Callbackdial_on_Hold,fileid) values("',@masterid,'","',@campaigns_transfer,'","0",',if(ifnull(@callback,0)=1,CONCAT('Now(),"Missed Call",'),""),' "0","0","',@fileid,'") ; '); PREPARE stmt5 FROM @QUERY5; execute stmt5; DEALLOCATE PREPARE stmt5; END if; END if ; END if; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getCallLog`; DELIMITER // CREATE PROCEDURE `getCallLog`( IN `pid` VARCHAR(10), IN `wherecondition` LONGTEXT, IN `rowlimit` VARCHAR(20), IN `hide_phone_no` VARCHAR(1) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len = 1000000; if IFNULL(rowlimit,'')!='' then SET @MasterColumn=(SELECT GROUP_CONCAT(CONCAT(case when hide_phone_no=1 AND data_type='phone' then CONCAT('CONCAT("******",RIGHT(mast_tbl.',field_name,',4))',field_name) ELSE case when hide_phone_no=1 AND mask=1 then CONCAT('CONCAT("******",RIGHT(mast_tbl.',field_name,',4))',field_name) else CONCAT('mast_tbl.',field_name) end end)) FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=pid AND create_log=0 AND form_type='master'); SET @LogColumn=(SELECT GROUP_CONCAT(case when hide_phone_no=1 AND mask=1 then CONCAT('CONCAT("******",RIGHT(log_tbl.',field_name,',4))',field_name) else CONCAT('log_tbl.',field_name) END ) FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=pid AND create_log=1); SET @AttachmentCol = (SELECT CONCAT('concat(',GROUP_CONCAT(CONCAT('IFNULL(',field_name,',"")') SEPARATOR ',",",'),')') FROM formbuilder_field JOIN formbuilder ON formbuilder_field.form_id=formbuilder.id WHERE process_id=pid AND field_type='attachment'); END if; if IFNULL(rowlimit,'')='' then SET @selectquery='SELECT COUNT(1) no_of_rec '; ELSE SET @selectquery=CONCAT('SELECT log_tbl.id as log_id, log_tbl.campaign as camaign_id , log_tbl.parent_id as master_id,log_tbl.camp_map_id as map_id, San_transfer_to`TransferredTo`,SAN_transfer_no`TransferredFrom`, log_tbl.cdr_id,',if(hide_phone_no=1,'CONCAT("******",RIGHT(log_tbl.log_phone_no,4))','log_tbl.log_phone_no'),' "dialed_phone_no", calltype as CallType,/*call_type `SubCallType`,*/case when ifnull(log_tbl.CallConnected,0)=1 then "C" else "M" end Status, NoOfAttempts,camp.name as campaign_name,log_tbl.extension_no ,log_tbl.DID_No,log_tbl.agent_name ,agent.employee_code,TIMEDIFF(end_time, start_time) as crm_duration,SEC_TO_TIME(log_tbl.wrapup_durn)`Wrapup_Durn`, sub_log.call_duration/*,cobrowse_duration*/, log_tbl.HangupCause,log_tbl.crm_id,log_tbl.start_time,log_tbl.end_time,log_tbl.callback_time as callback_time,cmpMap.CallAgainNo as callback_no,log_tbl.disposition, log_tbl.sub_disposition, log_tbl.SAN_Transfer_To AS Transfer_To,log_tbl.SAN_Transfer_No AS Transfer_No,log_tbl.feedback,log_tbl.Latitude,log_tbl.Longitude',if(IFNULL(@AttachmentCol,'')='','',CONCAT(',',IFNULL(@AttachmentCol,''))),' Doc_Attached ,',IFNULL(@MasterColumn,''), case when IFNULL(@LogColumn,'')!="" then CONCAT(',',IFNULL(@LogColumn,'')) ELSE "" end); END if; SET @fromquery=CONCAT(' FROM process_table_',pid,' mast_tbl join process_table_log_',pid,' log_tbl ON log_tbl.parent_id=mast_tbl.id LEFT JOIN agent ON agent.name=log_tbl.agent_name LEFT JOIN campaign camp ON camp.id=log_tbl.campaign LEFT JOIN campaign_mapping_',pid,' cmpMap ON cmpMap.master_id=mast_tbl.id and cmpMap.campaign_id=log_tbl.campaign and cmpMap.map_id=log_tbl.camp_map_id LEFT JOIN (select SEC_TO_TIME(sum(case when bill_duration IS NULL THEN 0 else bill_duration end))call_duration,crm_id from process_table_sub_log_',pid,' where crm_id!=0 group by crm_id)sub_log on sub_log.crm_id=log_tbl.crm_id /*LEFT JOIN (select TIMEDIFF(end_time, start_time) cobrowse_duration,crm_id from process_table_sub_log_cobrowse_',pid,' where crm_id!=0)cobrowse on cobrowse.crm_id=log_tbl.crm_id*/ '); SET @orderby=CONCAT('where 1=1 ',wherecondition,' /*ORDER BY start_time ASC */',case when ifnull(rowlimit,'')='' then '' ELSE CONCAT(' LIMIT ',rowlimit) END); SET @sql=CONCAT(@selectquery,' ',@fromquery,' ',@orderby); PREPARE stmtsql FROM @sql; execute stmtsql; DEALLOCATE PREPARE stmtsql; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniProcessDetailSave`; DELIMITER // CREATE PROCEDURE `getOmniProcessDetailSave`( IN `process_id` INT, IN `campaign_id` INT, IN `agent_id` INT, IN `cus_name` VARCHAR(150), IN `cus_email` VARCHAR(150), IN `cus_phone_no` VARCHAR(16), IN `cus_dipsosition` VARCHAR(50), IN `cus_sub_disposition` VARCHAR(50), IN `cus_remarks` LONGTEXT, IN `chat_type` VARCHAR(15), IN `cus_session_id` INT, IN `insert_columns` TEXT, IN `insert_values` TEXT, IN `update_columns` TEXT, IN `log_insert_columns` TEXT, IN `log_insert_values` TEXT, IN `callback_datetime` VARCHAR(50), IN `callback_number` VARCHAR(16), IN `master_id` INT ) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @ERRNO = MYSQL_ERRNO, @MESSAGE_TEXT = MESSAGE_TEXT; SELECT 'failure' status_msg, CONCAT('MySQL ERROR: ', @ERRNO, ': ', @MESSAGE_TEXT) AS Error_Message, '' process_log_id; ROLLBACK; END; START TRANSACTION; SET @phone_no_field = ''; SET @agent_name = ''; SET @query1 = ''; SET @master_id = ''; SET @map_id = ''; SET @file_id = ''; SET @file_name = ''; if callback_datetime = '0000-00-00 00:00:00' then SET callback_datetime = NULL; END if; SET @phone_no_field = (SELECT group_concat(CONCAT('(',field_name,'="',right(cus_phone_no,10),'" or ',field_name,'="',cus_phone_no,'")') SEPARATOR ' or ') FROM formbuilder fb JOIN formbuilder_field fbf ON fb.id=fbf.form_id WHERE fb.process_id=process_id AND data_type='phone'); SET @agent_name = (SELECT name FROM agent WHERE id = agent_id); if master_id>0 then SET @master_id = master_id; ELSE SET @query1 = CONCAT('select id into @master_id from process_table_',process_id,' where ',@phone_no_field,' order by id desc limit 1'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END if; if ifnull(@master_id,'') != '' then if(ifnull(update_columns,'')!='') then SET @query1 = CONCAT('update process_table_',process_id,' set ',update_columns,' where id=',@master_id); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END if; SET @query1 = CONCAT('select map_id into @map_id from campaign_mapping_',process_id,' where master_id=',@master_id,' and campaign_id=',campaign_id,' order by map_id desc limit 1'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@map_id,'') = '' then set @file_name = CONCAT("OMNI",replace(CURDATE(),'-','')); SET @query1 = CONCAT('select id into @file_id from importmaster_',process_id,' where file_name="',@file_name,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@file_id,'') = '' then SET @query1 = CONCAT('insert into importmaster_',process_id,'(file_name,upload_date,process_id,campaign_id,import_type,active_file,mark_for_deletion) values("',@file_name,'",now(),',process_id,',',campaign_id,',"OMNI",0,0)'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @file_id = LAST_INSERT_ID(); END if; SET @query1 = CONCAT('insert into campaign_mapping_',process_id,'(campaign_id,master_id,dialed,agent_id,lastcalltime,disposition,sub_disposition,noofattempts,fileid,callagaintime,callagainno,callagaintype) values(',campaign_id,',',@master_id,',1,',agent_id,',now(),',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',"',ifnull(cus_sub_disposition,""),'",1,',@file_id,',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'","Telecaller Chat Callback")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @map_id = LAST_INSERT_ID(); ELSE if callback_datetime IS NOT NULL then SET @query1 = CONCAT('update campaign_mapping_',process_id,' set dialed=0,callagaintime="',callback_datetime,'",callagainno="',callback_number,'",callagaintype="Telecaller Chat Callback" where map_id=',@map_id); END if; END if; ELSE SET @query1 = CONCAT('insert into process_table_',process_id,'(san_insert_date,san_caller_name,san_email_id,',insert_columns,') values(now(),"',cus_name,'","',cus_email,'",',insert_values,')'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @master_id=LAST_INSERT_ID(); set @file_name = CONCAT("OMNI",replace(CURDATE(),'-','')); SET @query1 = CONCAT('select id into @file_id from importmaster_',process_id,' where file_name="',@file_name,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@file_id,'') = '' then SET @query1 = CONCAT('insert into importmaster_',process_id,'(file_name,upload_date,process_id,campaign_id,import_type,active_file,mark_for_deletion) values("',@file_name,'",now(),',process_id,',',campaign_id,',"OMNI",0,0)'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @file_id = LAST_INSERT_ID(); END if; SET @query1 = CONCAT('insert into campaign_mapping_',process_id,'(campaign_id,master_id,dialed,agent_id,lastcalltime,disposition,sub_disposition,noofattempts,fileid,callagaintime,callagainno,callagaintype) values(',campaign_id,',',@master_id,',1,',agent_id,',now(),',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',"',ifnull(cus_sub_disposition,""),'",1,',@file_id,',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'","Telecaller Chat Callback")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @map_id = LAST_INSERT_ID(); END if; SET @chat_start_time = (SELECT ifnull(start_time,NOW()) FROM agent_current_omni_chat WHERE session_id=cus_session_id AND agent_id=agent_id); SET @query1 = CONCAT('insert into process_table_log_',process_id,'(agent_id,agent_name,log_phone_no,start_time,end_time,parent_id,camp_map_id,disposition,sub_disposition,campaign,extension_no,CallType,SAN_Remark',if(ifnull(log_insert_columns,'')!='',CONCAT(',',log_insert_columns),''),',callback_time,callback_no) values(',agent_id,',"',@agent_name,'","',cus_phone_no,'","',IFNULL(@chat_start_time,NOW()),'",now(),',@master_id,',',@map_id,',',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',"',ifnull(cus_sub_disposition,""),'",',campaign_id,',"chat","',chat_type,'",',if(ifnull(cus_remarks,"")!="",CONCAT('"',cus_remarks,'"'),CONCAT('"Auto Dispose"')),'',if(ifnull(log_insert_values,'')!='',CONCAT(',',log_insert_values),''),',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @log_id = LAST_INSERT_ID(); DELETE FROM agent_current_omni_chat WHERE session_id=cus_session_id; DELETE FROM omni_connections WHERE session_id=cus_session_id; SET @query1 = CONCAT('update omni_chat_session_',process_id,' set disposition=',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',sub_disposition="',ifnull(cus_sub_disposition,""),'",remarks=',if(ifnull(cus_remarks,"")!="",CONCAT('"',cus_remarks,'"'),CONCAT('"Auto Dispose"')),',end_time=now(), email_id="',cus_email,'",phone_no="',cus_phone_no,'",customer_name="',cus_name,'",process_master_id=',@master_id,',process_log_id=',@log_id,' where session_id="',cus_session_id,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SELECT 'success' status_msg, '' AS Error_Message, @log_id process_log_id; COMMIT; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `getOmniProcessDetailAutoSave`; DELIMITER // CREATE PROCEDURE `getOmniProcessDetailAutoSave`( IN `process_id` INT, IN `campaign_id` INT, IN `agent_id` INT, IN `cus_name` VARCHAR(150), IN `cus_email` VARCHAR(150), IN `cus_phone_no` VARCHAR(16), IN `cus_dipsosition` VARCHAR(50), IN `cus_sub_disposition` VARCHAR(50), IN `cus_remarks` LONGTEXT, IN `chat_type` VARCHAR(15), IN `cus_session_id` INT, IN `insert_columns` TEXT, IN `insert_values` TEXT, IN `update_columns` TEXT, IN `log_insert_columns` TEXT, IN `log_insert_values` TEXT, IN `callback_datetime` VARCHAR(20), IN `callback_number` VARCHAR(16), IN `master_id` INT ) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @ERRNO = MYSQL_ERRNO, @MESSAGE_TEXT = MESSAGE_TEXT; SELECT 'failure' status_msg, CONCAT('MySQL ERROR: ', @ERRNO, ': ', @MESSAGE_TEXT) AS Error_Message, '' process_log_id; ROLLBACK; END; START TRANSACTION; if IFNULL(chat_type,"")="whatsapp" then SET @phone_no_field = ''; SET @agent_name = ''; SET @query1 = ''; SET @master_id = ''; SET @map_id = ''; SET @file_id = ''; SET @file_name = ''; if callback_datetime = '0000-00-00 00:00:00' then SET callback_datetime = NULL; END if; SET @curdatetime = replace(replace(replace(replace(current_timestamp(6),'-',''),':',''),' ','_'),'.','_'); SET @agent_name = (SELECT name FROM agent WHERE id = agent_id); if master_id>0 then SET @master_id = master_id; ELSE SET @totalcount=NULL; SELECT COUNT(field_name) INTO @totalcount FROM formbuilder fb JOIN formbuilder_field fbf ON fb.id=fbf.form_id WHERE fb.process_id=process_id AND (primary_phone_no=1 or primary_field=1); if IFNULL(@totalcount,"")<=1 then SET @phone_no_field = (SELECT group_concat(field_name) FROM formbuilder fb JOIN formbuilder_field fbf ON fb.id=fbf.form_id WHERE fb.process_id=process_id AND (primary_phone_no=1 or primary_field=1)); SET @insert_values=cus_phone_no; END if; if IFNULL(@totalcount,"")>1 then SET @phone_no_field = (SELECT group_concat(case when data_type="Phone" then field_name ELSE field_name end) FROM formbuilder fb JOIN formbuilder_field fbf ON fb.id=fbf.form_id WHERE fb.process_id=process_id AND (primary_phone_no=1 or primary_field=1) ); SET @insert_values=concat(right(cus_phone_no,10),',''',@curdatetime,''''); END if; END if; if ifnull(@master_id,'') != '' then if(ifnull(update_columns,'')!='') then SET @query1 = CONCAT('update process_table_',process_id,' set ',update_columns,' where id=',@master_id); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END if; SET @query1 = CONCAT('select map_id into @map_id from campaign_mapping_',process_id,' where master_id=',@master_id,' and campaign_id=',campaign_id,' order by map_id desc limit 1'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@map_id,'') = '' then set @file_name = CONCAT("OMNI",replace(CURDATE(),'-','')); SET @query1 = CONCAT('select id into @file_id from importmaster_',process_id,' where file_name="',@file_name,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@file_id,'') = '' then SET @query1 = CONCAT('insert into importmaster_',process_id,'(file_name,upload_date,process_id,campaign_id,import_type,active_file,mark_for_deletion) values("',@file_name,'",now(),',process_id,',',campaign_id,',"OMNI",0,0)'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @file_id = LAST_INSERT_ID(); END if; SET @query1 = CONCAT('insert into campaign_mapping_',process_id,'(campaign_id,master_id,dialed,agent_id,lastcalltime,disposition,sub_disposition,noofattempts,fileid,callagaintime,callagainno,callagaintype) values(',campaign_id,',',@master_id,',1,',agent_id,',now(),',if(ifnull(cus_dipsosition,"")!="",CONCAT('"',cus_dipsosition,'"'),CONCAT('"Auto Dispose"')),',"',ifnull(cus_sub_disposition,""),'",1,',@file_id,',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'","Telecaller Chat Callback")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @map_id = LAST_INSERT_ID(); ELSE if callback_datetime IS NOT NULL then SET @query1 = CONCAT('update campaign_mapping_',process_id,' set dialed=0,callagaintime="',callback_datetime,'",callagainno="',callback_number,'",callagaintype="Telecaller Chat Callback" where map_id=',@map_id); END if; END if; ELSE SET @query1 = CONCAT('insert into process_table_',process_id,'(san_insert_date,san_caller_name,san_email_id,',@phone_no_field,') values(now(),"',cus_name,'","',cus_email,'",',@insert_values,')'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @master_id=LAST_INSERT_ID(); set @file_name = CONCAT("OMNI",replace(CURDATE(),'-','')); SET @query1 = CONCAT('select id into @file_id from importmaster_',process_id,' where file_name="',@file_name,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; if IFNULL(@file_id,'') = '' then SET @query1 = CONCAT('insert into importmaster_',process_id,'(file_name,upload_date,process_id,campaign_id,import_type,active_file,mark_for_deletion) values("',@file_name,'",now(),',process_id,',',campaign_id,',"OMNI",0,0)'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @file_id = LAST_INSERT_ID(); END if; SET @query1 = CONCAT('insert into campaign_mapping_',process_id,'(campaign_id,master_id,dialed,agent_id,lastcalltime,disposition,sub_disposition,noofattempts,fileid,callagaintime,callagainno,callagaintype) values(',campaign_id,',',@master_id,',1,',agent_id,',now(),"',cus_dipsosition,'","',cus_sub_disposition,'",1,',@file_id,',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'","Telecaller Chat Callback")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @map_id = LAST_INSERT_ID(); END if; SET @chatstart_time = CONCAT('SELECT ifnull(start_time,NOW()) INTO @chat_start_time FROM agent_current_omni_chat WHERE session_id="',cus_session_id,'" AND agent_id="',agent_id,'"'); PREPARE stmt FROM @chatstart_time; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @query1 = CONCAT('insert into process_table_log_',process_id,'(agent_id,agent_name,log_phone_no,start_time,end_time,parent_id,camp_map_id,disposition,sub_disposition,campaign,extension_no,CallType,SAN_Remark',if(ifnull(log_insert_columns,'')!='',CONCAT(',',log_insert_columns),''),',callback_time,callback_no) values(',agent_id,',"',@agent_name,'","',cus_phone_no,'","',IFNULL(@chat_start_time,NOW()),'",now(),',@master_id,',',@map_id,',"',cus_dipsosition,'","',cus_sub_disposition,'",',campaign_id,',"chat","',chat_type,'","',cus_remarks,'"',if(ifnull(log_insert_values,'')!='',CONCAT(',',log_insert_values),''),',',if(callback_datetime IS NULL,'NULL',CONCAT('"',callback_datetime,'"')),',"',callback_number,'")'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @log_id = LAST_INSERT_ID(); DELETE FROM agent_current_omni_chat WHERE session_id=cus_session_id; DELETE FROM omni_connections WHERE session_id=cus_session_id; SET @query1 = CONCAT('update omni_chat_session_',process_id,' set disposition="',cus_dipsosition,'",sub_disposition="',cus_sub_disposition,'",remarks="',cus_remarks,'",end_time=now(), email_id="',cus_email,'",phone_no="',cus_phone_no,'",customer_name="',cus_name,'",process_master_id=',@master_id,',process_log_id=',@log_id,' where session_id="',cus_session_id,'"'); PREPARE stmt1 FROM @query1; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SELECT 'success' status_msg, '' AS Error_Message, @log_id process_log_id; COMMIT; ELSE SELECT 'failure' status_msg, '' AS Error_Message, "" process_log_id; END if; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `addCdrData_New`; DELIMITER // CREATE PROCEDURE `addCdrData_New`( IN `unique_id` VARCHAR(100), IN `linked_id` VARCHAR(100), IN `trunk_channel` VARCHAR(25), IN `exten` VARCHAR(20), IN `caller_id` VARCHAR(20), IN `call_type` VARCHAR(15), IN `did` VARCHAR(20), IN `start_time` VARCHAR(50), IN `acd_time` VARCHAR(50), IN `exten_ring_time` VARCHAR(50), IN `exten_time` VARCHAR(50), IN `exten_ans_time` VARCHAR(50), IN `end_time` VARCHAR(50), IN `acd` VARCHAR(15), IN `cause` CHAR(50), IN `agent_disconnect` INT(1), IN `out_call_type` VARCHAR(15), IN `dtmf` TINYTEXT, IN `feedback` TINYTEXT, IN `process_id` INT, IN `campaign_id` INT, IN `mapid` INT, IN `userfield` VARCHAR(15), IN `hold_duration` INT, IN `call_hangup_reason` VARCHAR(150), IN `duration` INT, IN `billsec` INT, IN `recording_file` VARCHAR(250), IN `end_call` INT(1), IN `disposition` VARCHAR(100), IN `ivr_name` VARCHAR(200), IN `crmid` VARCHAR(100) ) NO SQL DETERMINISTIC BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; INSERT into addCdrData_log (unique_id,linked_id,trunk_channel,exten,caller_id,call_type,did,start_time,acd_time, exten_ring_time,exten_time,exten_ans_time,end_time,acd,cause,agent_disconnect,out_call_type,dtmf, feedback,process_id,campaign_id,mapid,userfield,hold_duration,call_hangup_reason,duration,billsec, recording_file,end_call,disposition,ivr_name,crmid,inserted_on) VALUES (unique_id,linked_id,trunk_channel,exten,caller_id,call_type,did,start_time,acd_time, exten_ring_time,exten_time,exten_ans_time,end_time,acd,cause,agent_disconnect,out_call_type,dtmf, feedback,process_id,campaign_id,mapid,userfield,hold_duration,call_hangup_reason,duration,billsec, recording_file,end_call,disposition,ivr_name,crmid,NOW()); SET @agent_name_var=NULL; SET @client_id_var=NULL; SET @process_id_var=NULL; SET @login_process_var=NULL; SET @crm_id_var=NULL; SET @crmid=NULL; SET @map_id_var=NULL; SET @current_campaign_var=NULL; SET @campaign_id_var=NULL; SET @connected=0; SET @campaign_type=NULL; IF exten_ans_time is not NULL and exten_ans_time!='' THEN SET @connected=1; ELSEIF call_type='Outgoing' AND disposition='ANSWER' THEN SET @connected=1; END IF; IF exten!='' and exten IS NOT NULL THEN select agent_name,login_process,current_crm_id,current_map_id,current_campaign into @agent_name_var,@login_process_var,@crmid,@map_id_var,@current_campaign_var from agent_current_states WHERE login_extension_no=exten; END IF; if (crmid IS NULL OR crmid='' OR crmid='null') then SET @crm_id_var=@crmid; ELSE SET @crm_id_var=crmid; END if; IF campaign_id!='' AND campaign_id>0 AND campaign_id IS NOT NULL THEN SELECT process.client_id,campaign.process_id,campaign.type into @client_id_var,@process_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=campaign_id; SET @campaign_id_var=campaign_id; ELSE IF (did IS NULL OR did='') AND (acd iS NULL OR acd='') THEN SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE if (@current_campaign_var IS NOT NULL AND @current_campaign_var!='' AND @current_campaign_var>0) then SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE SET @client_id_var=NULL; SET @process_id_var=NULL; SET @campaign_id_var=NULL; SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id WHERE (( IFNULL(did,'')!='' AND did_no=did AND ifnull(did_no,'')!='' ) and (IFNULL(acd,'')!='' AND san_acd_code=acd )) OR ((ifnull(did_no,'')='' OR IFNULL(did,'')='' )and IFNULL(acd,'')!='' and (san_acd_code=acd )) OR (IFNULL(acd,'')='' AND IFNULL(did,'')!='' and did_no=did) LIMIT 0,1; END IF; END IF; END IF; SET @dynSQL=CONCAT('INSERT INTO ',Case when IfNULL(@client_id_var,"0")="0" then 'cdr' ELSE CONCAT('cdr_',IfNULL(@client_id_var,"0"))END ,'( `unique_id`, `linked_id`, `trunk_channel`, `exten`, `caller_id`, `call_type`, `did`, `start_time`, `acd_time`, `exten_ring_time`, `exten_time`, `exten_ans_time`, `end_time`, `acd`, `cause`, `agent_disconnect`, `out_call_type`, `dtmf`, `feedback`, `process_id`, `campaign_id`, `map_id`, `crm_id`, `master_id`, `userfield`, `hold_duration`, `agent`, `call_hangup_reason`, `duration`, `billsec`, `recording_file`,`end_call` , `connected`,`disposition`,`ivr_name` )VALUES(',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmt1 FROM @dynSQL; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @cdrid=LAST_INSERT_ID(); if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,"")!="" AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(recording_file,"")!="" then CALL `addProcessSublog`(@process_id_var , case when IFNULL(@crm_id_var,"")="" then "0" ELSE @crm_id_var END, recording_file, call_type ,IFNULL(linked_id,"") , duration,billsec); END if; if IFNULL(out_call_type,"")="PD" AND IFNULL(@process_id_var,"")!="" AND exten_ans_time IS null AND ifnull(mapid,0)>0 AND ifnull(end_call,0)=1 then CALL `addSystemDisposeLog`(IFNULL(@process_id_var,"0") ,ifnull(mapid,0),linked_id,unique_id,ifnull(caller_id,""),ifnull(cause,0),IFNULL(call_hangup_reason,""),IFNULL(dtmf,""),IFNULL(duration,0)); END if; IF end_call=1 AND call_type='Incoming' AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(@connected,0)=0 THEN CALL `set_callback_on_missedcall`(@client_id_var, did,acd, @cdrid,caller_id,if(acd_time IS NULL,'IVR','QUEUE')); END IF; END if; CREATE TABLE if NOT EXISTS `cdrtemp` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`unique_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`linked_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`trunk_channel` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`exten` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`caller_id` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`call_type` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`did` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `start_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ring_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ans_time` DATETIME NULL DEFAULT NULL, `end_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `cause` VARCHAR(20) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `agent_disconnect` INT(1) NULL DEFAULT NULL, `out_call_type` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `dtmf` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `feedback` VARCHAR(5) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `process_id` INT(11) NULL DEFAULT NULL, `campaign_id` INT(11) NULL DEFAULT NULL, `map_id` INT(11) NULL DEFAULT NULL, `crm_id` BIGINT(20) NULL DEFAULT NULL, `master_id` INT(11) NULL DEFAULT NULL, `userfield` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `hold_duration` INT(3) NULL DEFAULT NULL, `agent` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `call_hangup_reason` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `duration` INT(11) NULL DEFAULT NULL, `billsec` INT(11) NULL DEFAULT NULL, `recording_file` VARCHAR(250) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `log` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `connected` INT(1) NULL DEFAULT '0', `end_call` INT(1) NOT NULL DEFAULT '0', `disposition` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`cid` INT(11) NULL DEFAULT NULL, `ivr_name` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`Wrapup_duration` BIGINT(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) COLLATE='latin1_swedish_ci' ENGINE=InnoDB ; SET @cdrtempSQL=CONCAT('INSERT INTO cdrtemp (cid,`unique_id`,`linked_id`,`trunk_channel`,`exten`,`caller_id`,`call_type`,`did`,`start_time`,`acd_time`,`exten_ring_time`,`exten_time`,`exten_ans_time`,`end_time`,`acd`,`cause`,`agent_disconnect`,`out_call_type`,`dtmf`,`feedback`,`process_id`,`campaign_id`,`map_id`,`crm_id`,`master_id`,`userfield`,`hold_duration`,`agent`,`call_hangup_reason`,`duration`,`billsec`,`recording_file`,`end_call`,`connected`,`disposition`,`ivr_name`) VALUES(',Case when IfNULL(@client_id_var,"0")="0" then "0" ELSE @client_id_var END ,',',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmtcdrtempSQL FROM @cdrtempSQL; EXECUTE stmtcdrtempSQL; DEALLOCATE PREPARE stmtcdrtempSQL; if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,'')!='' AND IFNULL(feedback,'')!='' AND IFNULL(linked_id,'')!='' then SET @updatefeedback = CONCAT('update process_table_log_',@process_id_var,' set feedback="',feedback, '" where cdr_id="',linked_id,'"'); PREPARE stmtupdatefeedback FROM @updatefeedback; EXECUTE stmtupdatefeedback; DEALLOCATE PREPARE stmtupdatefeedback; END if; if ifnull(acd,0)>0 AND (exten_ans_time IS NULL) AND end_call=1 then SELECT missed_call_email_template,email_on_missed_call,process.id,campaign.id,process.client_id INTO @missed_call_email_template,@email_on_missed_call,@process_id_new,@campaign_id,@client_id FROM campaign join process ON campaign.process_id=process.id WHERE san_acd_code=acd; CALL addEmailData(@process_id_new,@campaign_id,@client_id,@agent_name_var,@missed_call_email_template,@email_on_missed_call); END if; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `addCdrData`; DELIMITER // CREATE PROCEDURE `addCdrData`( IN `unique_id` VARCHAR(100), IN `linked_id` VARCHAR(100), IN `trunk_channel` VARCHAR(25), IN `exten` VARCHAR(20), IN `caller_id` VARCHAR(20), IN `call_type` VARCHAR(15), IN `did` VARCHAR(20), IN `start_time` VARCHAR(50), IN `acd_time` VARCHAR(50), IN `exten_ring_time` VARCHAR(50), IN `exten_time` VARCHAR(50), IN `exten_ans_time` VARCHAR(50), IN `end_time` VARCHAR(50), IN `acd` VARCHAR(15), IN `cause` CHAR(50), IN `agent_disconnect` INT(1), IN `out_call_type` VARCHAR(15), IN `dtmf` TINYTEXT, IN `feedback` TINYTEXT, IN `process_id` INT, IN `campaign_id` INT, IN `mapid` INT, IN `userfield` VARCHAR(15), IN `hold_duration` INT, IN `call_hangup_reason` VARCHAR(150), IN `duration` INT, IN `billsec` INT, IN `recording_file` VARCHAR(250), IN `end_call` INT(1), IN `disposition` VARCHAR(100), IN `ivr_name` VARCHAR(200) ) NO SQL DETERMINISTIC BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET @agent_name_var=NULL; SET @client_id_var=NULL; SET @process_id_var=NULL; SET @login_process_var=NULL; SET @crm_id_var=NULL; SET @crmid=NULL; SET @map_id_var=NULL; SET @current_campaign_var=NULL; SET @campaign_id_var=NULL; SET @connected=0; SET @campaign_type=NULL; IF exten_ans_time is not NULL and exten_ans_time!='' THEN SET @connected=1; ELSEIF call_type='Outgoing' AND disposition='ANSWER' THEN SET @connected=1; END IF; IF exten!='' and exten IS NOT NULL THEN select agent_name,login_process,current_crm_id,current_map_id,current_campaign into @agent_name_var,@login_process_var,@crm_id_var,@map_id_var,@current_campaign_var from agent_current_states WHERE login_extension_no=exten; END IF; IF campaign_id!='' AND campaign_id>0 AND campaign_id IS NOT NULL THEN SELECT process.client_id,campaign.process_id,campaign.type into @client_id_var,@process_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=campaign_id; SET @campaign_id_var=campaign_id; ELSE IF (did IS NULL OR did='') AND (acd iS NULL OR acd='') THEN SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id JOIN client_master ON client_master.id=process.client_id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE if (@current_campaign_var IS NOT NULL AND @current_campaign_var!='' AND @current_campaign_var>0) then SELECT process.client_id,campaign.process_id,campaign.id,campaign.type into @client_id_var,@process_id_var,@campaign_id_var,@campaign_type from campaign JOIN process on campaign.process_id=process.id where campaign.id=@current_campaign_var LIMIT 0,1; ELSE SET @client_id_var=NULL; SET @process_id_var=NULL; SET @campaign_id_var=NULL; SELECT process.client_id,campaign.process_id,campaign.id into @client_id_var,@process_id_var,@campaign_id_var from campaign JOIN did ON did.id=campaign.did_no JOIN process on campaign.process_id=process.id WHERE (( IFNULL(did,'')!='' AND did.did=did AND ifnull(did.did,'')!='' ) and (IFNULL(acd,'')!='' AND san_acd_code=acd )) OR ((ifnull(did.did,'')='' OR IFNULL(did,'')='' )and IFNULL(acd,'')!='' and (san_acd_code=acd )) OR (IFNULL(acd,'')='' AND IFNULL(did,'')!='' and did.did=did) LIMIT 0,1; END IF; END IF; END IF; SET @dynSQL=CONCAT('INSERT INTO ',Case when IfNULL(@client_id_var,"0")="0" then 'cdr' ELSE CONCAT('cdr_',IfNULL(@client_id_var,"0"))END ,'( `unique_id`, `linked_id`, `trunk_channel`, `exten`, `caller_id`, `call_type`, `did`, `start_time`, `acd_time`, `exten_ring_time`, `exten_time`, `exten_ans_time`, `end_time`, `acd`, `cause`, `agent_disconnect`, `out_call_type`, `dtmf`, `feedback`, `process_id`, `campaign_id`, `map_id`, `crm_id`, `master_id`, `userfield`, `hold_duration`, `agent`, `call_hangup_reason`, `duration`, `billsec`, `recording_file`,`end_call` , `connected`,`disposition`,`ivr_name` )VALUES(',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmt1 FROM @dynSQL; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; SET @cdrid=LAST_INSERT_ID(); if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,"")!="" AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(recording_file,"")!="" then CALL `addProcessSublog`(@process_id_var , case when IFNULL(@crm_id_var,"")="" then "0" ELSE @crm_id_var END, recording_file, call_type ,IFNULL(linked_id,"") , duration,billsec); END if; if IFNULL(out_call_type,"")="PD" AND IFNULL(@process_id_var,"")!="" AND exten_ans_time IS null AND ifnull(mapid,0)>0 AND ifnull(end_call,0)=1 then CALL `addSystemDisposeLog`(IFNULL(@process_id_var,"0") ,ifnull(mapid,0),linked_id,unique_id,ifnull(caller_id,""),ifnull(cause,0),IFNULL(call_hangup_reason,""),IFNULL(dtmf,""),IFNULL(duration,0)); END if; IF end_call=1 AND call_type='Incoming' AND IFNULL(@client_id_var,0)>0 AND IFNULL(@cdrid,0)>0 AND IFNULL(@connected,0)=0 THEN CALL `set_callback_on_missedcall`(@client_id_var, did,acd, @cdrid,caller_id,if(acd_time IS NULL,'IVR','QUEUE')); END IF; END if; CREATE TABLE if NOT EXISTS `cdrtemp` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT,`unique_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`linked_id` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`trunk_channel` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`exten` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`caller_id` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`call_type` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`did` VARCHAR(16) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `start_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ring_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `exten_ans_time` DATETIME NULL DEFAULT NULL, `end_time` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `acd` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `cause` VARCHAR(20) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `agent_disconnect` INT(1) NULL DEFAULT NULL, `out_call_type` VARCHAR(10) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `dtmf` VARCHAR(100) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `feedback` VARCHAR(5) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `process_id` INT(11) NULL DEFAULT NULL, `campaign_id` INT(11) NULL DEFAULT NULL, `map_id` INT(11) NULL DEFAULT NULL, `crm_id` BIGINT(20) NULL DEFAULT NULL, `master_id` INT(11) NULL DEFAULT NULL, `userfield` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `hold_duration` INT(3) NULL DEFAULT NULL, `agent` VARCHAR(150) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `call_hangup_reason` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `duration` INT(11) NULL DEFAULT NULL, `billsec` INT(11) NULL DEFAULT NULL, `recording_file` VARCHAR(250) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `log` TEXT NULL DEFAULT NULL COLLATE 'latin1_swedish_ci', `connected` INT(1) NULL DEFAULT '0', `end_call` INT(1) NOT NULL DEFAULT '0', `disposition` VARCHAR(50) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`cid` INT(11) NULL DEFAULT NULL, `ivr_name` VARCHAR(200) NULL DEFAULT NULL COLLATE 'latin1_swedish_ci',`Wrapup_duration` BIGINT(20) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) COLLATE='latin1_swedish_ci' ENGINE=InnoDB ; SET @cdrtempSQL=CONCAT('INSERT INTO cdrtemp (cid,`unique_id`,`linked_id`,`trunk_channel`,`exten`,`caller_id`,`call_type`,`did`,`start_time`,`acd_time`,`exten_ring_time`,`exten_time`,`exten_ans_time`,`end_time`,`acd`,`cause`,`agent_disconnect`,`out_call_type`,`dtmf`,`feedback`,`process_id`,`campaign_id`,`map_id`,`crm_id`,`master_id`,`userfield`,`hold_duration`,`agent`,`call_hangup_reason`,`duration`,`billsec`,`recording_file`,`end_call`,`connected`,`disposition`,`ivr_name`) VALUES(',Case when IfNULL(@client_id_var,"0")="0" then "0" ELSE @client_id_var END ,',',case when unique_id IS NULL OR unique_id='' THEN "NULL" ELSE CONCAT("'",unique_id,"'") END ,',', case when linked_id IS NULL OR linked_id='' THEN "NULL" ELSE CONCAT("'",linked_id,"'") END ,',', case when trunk_channel IS NULL OR trunk_channel='' THEN "NULL" ELSE CONCAT("'",trunk_channel,"'") END ,',', case when exten IS NULL OR exten='' THEN "NULL" ELSE CONCAT("'",exten,"'") END ,',', case when caller_id IS NULL OR caller_id='' THEN "NULL" ELSE CONCAT("'",caller_id,"'") END ,',', case when call_type IS NULL OR call_type='' THEN "NULL" ELSE CONCAT("'",call_type,"'") END ,',', case when did IS NULL OR did='' THEN "NULL" ELSE CONCAT("'",did,"'") END ,',', case when start_time IS NULL OR start_time='' THEN "NULL" ELSE CONCAT("'",start_time,"'") END ,',', case when acd_time IS NULL OR acd_time='' THEN "NULL" ELSE CONCAT("'",acd_time,"'") END ,',', case when exten_ring_time IS NULL OR exten_ring_time='' THEN "NULL" ELSE CONCAT("'",exten_ring_time,"'") END ,',', case when exten_time IS NULL OR exten_time='' THEN "NULL" ELSE CONCAT("'",exten_time,"'") END ,',', case when exten_ans_time IS NULL OR exten_ans_time='' THEN "NULL" ELSE CONCAT("'",exten_ans_time,"'") END ,',', case when end_time IS NULL OR end_time='' THEN "NULL" ELSE CONCAT("'",end_time,"'") END ,',', case when acd IS NULL OR acd='' THEN "NULL" ELSE CONCAT("'",acd,"'") END ,',', case when cause IS NULL OR cause='' THEN "NULL" ELSE CONCAT("'",cause,"'") END ,',', case when agent_disconnect IS NULL OR agent_disconnect='' THEN "NULL" ELSE CONCAT("'",agent_disconnect,"'") END ,',', case when out_call_type IS NULL OR out_call_type='' THEN "NULL" ELSE CONCAT("'",out_call_type,"'") END ,',', case when dtmf IS NULL OR dtmf='' THEN "NULL" ELSE CONCAT("'",dtmf,"'") END ,',', case when feedback IS NULL OR feedback='' THEN "NULL" ELSE CONCAT("'",feedback,"'") END ,',', case when @process_id_var IS NULL OR @process_id_var='' THEN "NULL" ELSE CONCAT("'",@process_id_var,"'") END ,',', case when @campaign_id_var IS NULL OR @campaign_id_var='' THEN "NULL" ELSE CONCAT("'",@campaign_id_var,"'") END ,',', case when ifnull(mapid,0)>0 then CONCAT("'",mapid,"'") when @map_id_var IS NULL OR @map_id_var='' THEN "NULL" ELSE CONCAT("'",@map_id_var,"'") END ,',', case when @crm_id_var IS NULL OR @crm_id_var='' THEN "NULL" ELSE CONCAT("'",@crm_id_var,"'") END ,',', case when @master_id_var IS NULL OR @master_id_var='' THEN "NULL" ELSE CONCAT("'",@master_id_var,"'") END ,',', case when userfield IS NULL OR userfield='' THEN "NULL" ELSE CONCAT("'",userfield,"'") END ,',', case when hold_duration IS NULL OR hold_duration='' THEN "NULL" ELSE CONCAT("'",hold_duration,"'") END ,',', case when @agent_name_var IS NULL OR @agent_name_var='' THEN "NULL" ELSE CONCAT("'",@agent_name_var,"'") END ,',', case when call_hangup_reason IS NULL OR call_hangup_reason='' THEN "NULL" ELSE CONCAT("'",call_hangup_reason,"'") END ,',', case when duration IS NULL OR duration='' THEN "NULL" ELSE CONCAT("'",duration,"'") END ,',', case when billsec IS NULL OR billsec='' THEN "NULL" ELSE CONCAT("'",billsec,"'") END ,',', case when recording_file IS NULL OR recording_file='' THEN "NULL" ELSE CONCAT("'",recording_file,"'") END ,',', case when IFNULL(end_call,0)=0 THEN "0" ELSE CONCAT("'",end_call,"'") END ,',', @connected,',',case when disposition IS NULL OR disposition='' THEN "NULL" ELSE CONCAT("'",disposition,"'") END ,',', case when ivr_name IS NULL OR ivr_name='' THEN "NULL" ELSE CONCAT("'",ivr_name,"'") END,')'); PREPARE stmtcdrtempSQL FROM @cdrtempSQL; EXECUTE stmtcdrtempSQL; DEALLOCATE PREPARE stmtcdrtempSQL; if(IFNULL(@campaign_type,"")!="IVR") then if IFNULL(@process_id_var,'')!='' AND IFNULL(feedback,'')!='' AND IFNULL(linked_id,'')!='' then SET @updatefeedback = CONCAT('update process_table_log_',@process_id_var,' set feedback="',feedback, '" where cdr_id="',linked_id,'"'); PREPARE stmtupdatefeedback FROM @updatefeedback; EXECUTE stmtupdatefeedback; DEALLOCATE PREPARE stmtupdatefeedback; END if; if ifnull(acd,0)>0 AND (exten_ans_time IS NULL) AND end_call=1 then SELECT missed_call_email_template,email_on_missed_call,process.id,campaign.id,process.client_id INTO @missed_call_email_template,@email_on_missed_call,@process_id_new,@campaign_id,@client_id FROM campaign join process ON campaign.process_id=process.id WHERE san_acd_code=acd; CALL addEmailData(@process_id_new,@campaign_id,@client_id,@agent_name_var,@missed_call_email_template,@email_on_missed_call); END if; END if; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ; /*---------------------------------------------------------*/ DROP PROCEDURE IF EXISTS `get_CDRData_client`; DELIMITER // CREATE PROCEDURE `get_CDRData_client`( IN `ReportType` VARCHAR(50), IN `PID` VARCHAR(50), IN `team_leader_id` INT, IN `camp_ids` VARCHAR(200) ) BEGIN SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; SET SESSION group_concat_max_len=1000000; SET @Process_Id =0; SET @Offered_Call =0; SET @Ans_Call =0; SET @Abn_Call =0; SET @drop_per =0; SET @drop_in_5_sec =0; SET @drop_in_10_sec =0; SET @drop_in_15_sec =0; SET @SLA =0; SET @Outgoing_Call =0; SET @Con_Outgoing =0; SET @connectivity_per =0; SET @ATT =0; SET @aht =0; SET @Avg_Wrapup_Time =0; SET @CdrData=CONCAT('SELECT group_concat(distinct campaign.Process_id) `Process_Id`, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND acd IS not null AND ifnull(agent,'''')='''' then 1 ELSE 0 END)`Offered_Call`, Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)`Ans_Call`, /*Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)`Abn_Call`,*/ Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND acd IS not null AND ifnull(agent,'''')='''' then 1 ELSE 0 END)`Abn_Call`, Round(ifnull((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)*100)/NULLIF((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' then 1 ELSE 0 END)),0),0),2) `drop_per`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' and TIMESTAMPDIFF(SECOND,acd_time,end_time)<=5 then 1 ELSE 0 END),0) `drop_in_5_sec`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 6 AND 10 then 1 ELSE 0 END),0) `drop_in_10_sec`, ifnull(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND ifnull(agent,'''')!='''' AND TIMESTAMPDIFF(SECOND,acd_time,end_time) BETWEEN 11 AND 15 then 1 ELSE 0 END),0) `drop_in_15_sec`, ROUND(((Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END))*100.0)/(Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="")) AND exten_ans_time IS NOT NULL then 1 ELSE 0 END)+Sum(Case when ((acd_time IS NOT NULL and ifnull(acd,"")!="") OR (ifnull(out_call_type,"")="PD" and acd_time IS NOT NULL and ifnull(acd,"")!="") ) AND exten_ans_time IS NULL AND acd IS not null AND ifnull(agent,'''')='''' then 1 ELSE 0 END)),1)`SLA`, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END)`Outgoing_Call`, Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)`Con_Outgoing`, round(ifnull((Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" AND connected=1 then 1 ELSE 0 END)*100)/nullif(Sum(Case when acd_time IS NULL AND ifnull(out_call_type,"")!="PD" AND IFNULL(call_type,"")="Outgoing" then 1 ELSE 0 END),0),0),2) `connectivity_per`, SEC_TO_TIME(round(IFNULL((SUM(duration)-SUM(Case when call_type="Outgoing" then 0 ELSE TIMESTAMPDIFF(second, start_time, case when acd_time IS NOT NULL and acd_time!="0000-00-00 00:00:00" then acd_time when (acd_time IS NULL or acd_time="0000-00-00 00:00:00") and exten_ring_time IS NOT NULL THEN exten_ring_time else end_time END )END))/nullif(sum(Case when exten_ans_time is not null and cdr.connected>0 then 1 ELSE 0 END),0),0),0))`AHT`, SEC_TO_TIME(round(IFNULL(Sum(Case when exten_ans_time is not null then TIMESTAMPDIFF(second,exten_ans_time,end_time) ELSE 0 END)/nullif(sum(Case when exten_ans_time is not null and cdr.connected>0 then 1 ELSE 0 END),0),0),0))`ATT`, SEC_TO_TIME(round(IFNULL(Sum(Wrapup_duration)/ifnull(Count(Wrapup_duration),0),0),0)) Avg_Wrapup_Time into @Process_Id,@Offered_Call,@Ans_Call,@Abn_Call,@drop_per,@drop_in_5_sec,@drop_in_10_sec,@drop_in_15_sec,@SLA,@Outgoing_Call,@Con_Outgoing,@connectivity_per,@aht,@ATT,@Avg_Wrapup_Time FROM cdrtemp cdr LEFT JOIN campaign ON cdr.campaign_id=campaign.id LEFT JOIN `process` ON `process`.`id`=`cdr`.`process_id` LEFT JOIN `trunk` ON cdr.trunk_channel=`trunk`.name LEFT JOIN agent on cdr.agent=agent.name WHERE 1=1 and end_call=1 and Start_time>=curdate() AND ifnull(cdr.out_call_type,"")!="TR" AND ifnull(campaign.NAME,"")!="" ',Case when IFNULL(PID,"")!="" then CONCAT(' AND campaign.Process_id in (',PID,') ') ELSE ' ' END,case when IFNULL(team_leader_id,0)>0 then CONCAT(' AND ((ifnull(cdr.agent,"")="" AND ifnull(cdr.exten,"")="" ) OR (ifnull(cdr.agent,"")!="" AND agent.team_leader="',team_leader_id,'" ) ) ')ELSE '' END , ' ',case when ifnull(camp_ids,'')!='' then CONCAT(' AND campaign.id in (',camp_ids,')') ELSE '' END,''); PREPARE getcdrdata FROM @CdrData; execute getcdrdata; DEALLOCATE PREPARE getcdrdata; SELECT SUBSTRING_INDEX(PID, ',', 1) INTO @pid; SET @getamsaht = CONCAT( ' SELECT (IFNULL(SUM(case when whatsapp_sent=1 then 1 ELSE 0 END),0)+IFNULL(SUM(case when sms_sent=1 then 1 ELSE 0 END),0)) TotalSMS_Sent, IFNULL(SUM(case when whatsapp_sent=1 then 1 ELSE 0 END),0) Whatsapp_Sent, IFNULL(SUM(case when sms_sent=1 then 1 ELSE 0 END),0) SMS_Sent into @TotalSMS_Sent,@Whatsapp_Sent,@SMS_Sent FROM sms_log_',@pid,' sms where 1=1 and added_on>=CURDATE() ' ); PREPARE stmt FROM @getamsaht; EXECUTE stmt; DEALLOCATE PREPARE stmt; SELECT @Process_Id AS Process_Id,@Offered_Call AS Offered_Call,@Ans_Call AS Ans_Call,@Abn_Call AS Abn_Call,@drop_per AS drop_per,@drop_in_5_sec AS drop_in_5_sec,@drop_in_10_sec AS drop_in_10_sec,@drop_in_15_sec AS drop_in_15_sec,@SLA AS SLA,@Outgoing_Call AS Outgoing_Call,@Con_Outgoing AS Con_Outgoing,@connectivity_per AS connectivity_per,@ATT AS ATT,@aht AS AHT,@Avg_Wrapup_Time AS Avg_Wrapup_Time,@TotalSMS_Sent TotalSMS_Sent,@Whatsapp_Sent Whatsapp_Sent,@SMS_Sent SMS_Sent; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; END// DELIMITER ;