diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index f66aae9c..ab99fd1f 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -4437,9 +4437,11 @@ list_id BIGINT(14) UNSIGNED DEFAULT NULL, qc_scorecard_id VARCHAR(20) DEFAULT NULL, checkpoint_row_id INT(10) UNSIGNED DEFAULT NULL, checkpoint_text TEXT, +checkpoint_text_presets TEXT, checkpoint_rank TINYINT(3) UNSIGNED DEFAULT NULL, checkpoint_points TINYINT(3) UNSIGNED DEFAULT NULL, instant_fail ENUM('Y','N') DEFAULT 'N', +instant_fail_value ENUM('Y', 'N') default 'N', checkpoint_points_earned TINYINT(5) UNSIGNED DEFAULT NULL, qc_agent VARCHAR(20) DEFAULT NULL, checkpoint_comment_agent TEXT, @@ -4450,6 +4452,7 @@ CREATE TABLE quality_control_checkpoints ( checkpoint_row_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, qc_scorecard_id VARCHAR(20) DEFAULT NULL, checkpoint_text TEXT, +checkpoint_text_presets TEXT, checkpoint_rank INT(3) UNSIGNED DEFAULT NULL, checkpoint_points TINYINT(3) UNSIGNED DEFAULT NULL, instant_fail ENUM('Y','N') DEFAULT 'N', @@ -4866,4 +4869,4 @@ INSERT INTO vicidial_settings_containers(container_id,container_notes,container_ UPDATE system_settings set vdc_agent_api_active='1'; -UPDATE system_settings SET db_schema_version='1623',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1624',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/extras/upgrade_2.14.sql b/extras/upgrade_2.14.sql index 31154cec..af037f4d 100644 --- a/extras/upgrade_2.14.sql +++ b/extras/upgrade_2.14.sql @@ -1587,3 +1587,10 @@ ALTER TABLE system_settings ADD agent_hidden_sound_volume TINYINT(3) UNSIGNED de ALTER TABLE system_settings ADD agent_hidden_sound_seconds TINYINT(3) UNSIGNED default '0'; UPDATE system_settings SET db_schema_version='1623',db_schema_update_date=NOW() where db_schema_version < 1623; + +ALTER TABLE quality_control_checkpoint_log ADD instant_fail_value ENUM('Y', 'N') default 'N' AFTER instant_fail; +ALTER TABLE quality_control_checkpoint_log ADD checkpoint_text_presets TEXT AFTER checkpoint_text; + +ALTER TABLE quality_control_checkpoints ADD checkpoint_text_presets TEXT AFTER checkpoint_text; + +UPDATE system_settings SET db_schema_version='1624',db_schema_update_date=NOW() where db_schema_version < 1624; diff --git a/www/vicidial/AST_quality_control_report.php b/www/vicidial/AST_quality_control_report.php index 93de5140..0bea4e9b 100644 --- a/www/vicidial/AST_quality_control_report.php +++ b/www/vicidial/AST_quality_control_report.php @@ -818,19 +818,19 @@ if ($SUBMIT && ($QCuser_ct>0 || $user_ct>0 || $group_ct>0 || $QCstatus_ct>0 || ( if(mysqli_num_rows($qc_rslt)>0) { - $HTML_text.=""; + $HTML_text.="
"; $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; - $HTML_text.=""; + $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; - $HTML_text.=""; - $HTML_text.=""; - $HTML_text.=""; - $HTML_text.=""; + $HTML_text.=""; + $HTML_text.=""; + $HTML_text.=""; + $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; @@ -846,15 +846,15 @@ if ($SUBMIT && ($QCuser_ct>0 || $user_ct>0 || $group_ct>0 || $QCstatus_ct>0 || ( if ($x%2==0) {$bgcolor=$SSstd_row2_background;} else {$bgcolor=$SSstd_row1_background;} $HTML_text.=""; $HTML_text.=""; - $HTML_text.=""; + $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; - $HTML_text.=""; - $HTML_text.=""; - $HTML_text.=""; - $HTML_text.=""; + $HTML_text.=""; + $HTML_text.=""; + $HTML_text.=""; + $HTML_text.=""; $instant_fail=GetFail($qc_row["qc_log_id"]); $HTML_text.=""; $HTML_text.=""; @@ -873,11 +873,11 @@ if ($SUBMIT && ($QCuser_ct>0 || $user_ct>0 || $group_ct>0 || $QCstatus_ct>0 || ( $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; - $HTML_text.=""; - $HTML_text.=""; + $HTML_text.=""; + $HTML_text.=""; $HTML_text.=""; $HTML_text.=""; - $CSV_text.=",\"".$crow["checkpoint_rank"].") ".$crow["checkpoint_text"]."\",\"".$crow["checkpoint_comment_agent"]."\",\"".GetScore($qc_row["qc_log_id"], $crow["qc_checkpoint_log_id"])."\",\"".$crow["instant_fail"]."\""; + $CSV_text.=",\"".$crow["checkpoint_rank"].") ".$crow["checkpoint_text"]."\",\"".$crow["checkpoint_comment_agent"]."\",\"".GetScore($qc_row["qc_log_id"], $crow["qc_checkpoint_log_id"])."\",\"".$crow["instant_fail_value"]."\""; } $CSV_text.="\n"; @@ -976,7 +976,7 @@ function GetFullName($full_name) function GetFail($QCID) { global $link, $DB; - $fail_stmt="select count(*) From quality_control_checkpoint_log where qc_log_id='$QCID' and instant_fail='Y'"; + $fail_stmt="select count(*) From quality_control_checkpoint_log where qc_log_id='$QCID' and instant_fail_value='Y'"; $fail_rslt=mysql_to_mysqli($fail_stmt, $link); while ($fail_row=mysqli_fetch_row($fail_rslt)) { diff --git a/www/vicidial/qc_modify_lead.php b/www/vicidial/qc_modify_lead.php index f5edc8d5..a61b2883 100644 --- a/www/vicidial/qc_modify_lead.php +++ b/www/vicidial/qc_modify_lead.php @@ -449,7 +449,7 @@ if ($claim_QC && $auth==1) $checkpoint_log_rslt=mysql_to_mysqli($checkpoint_log_stmt, $link); while ($checkpoint_row=mysqli_fetch_array($checkpoint_log_rslt)) { - $checkpoint_ins_stmt="insert into quality_control_checkpoint_log(qc_log_id, campaign_id, group_id, list_id, qc_scorecard_id, checkpoint_row_id, checkpoint_text, checkpoint_rank, checkpoint_points, checkpoint_points_earned) VALUES ('$qc_log_id', '$campaign_id', '$group_id', '$list_id', '$qc_scorecard_id', '$checkpoint_row[checkpoint_row_id]', '$checkpoint_row[checkpoint_text]', '$checkpoint_row[checkpoint_rank]', '$checkpoint_row[checkpoint_points]', '$checkpoint_row[checkpoint_points]')"; + $checkpoint_ins_stmt="insert into quality_control_checkpoint_log(qc_log_id, campaign_id, group_id, list_id, qc_scorecard_id, checkpoint_row_id, checkpoint_text, checkpoint_text_presets, checkpoint_rank, checkpoint_points, checkpoint_points_earned, instant_fail) VALUES ('$qc_log_id', '$campaign_id', '$group_id', '$list_id', '$qc_scorecard_id', '$checkpoint_row[checkpoint_row_id]', '$checkpoint_row[checkpoint_text]', '$checkpoint_row[checkpoint_text_presets]', '$checkpoint_row[checkpoint_rank]', '$checkpoint_row[checkpoint_points]', '$checkpoint_row[checkpoint_points]', '$checkpoint_row[instant_fail]')"; $checkpoint_ins_rslt=mysql_to_mysqli($checkpoint_ins_stmt, $link); # echo $checkpoint_ins_stmt."
"; } @@ -854,13 +854,61 @@ function FinishQCRecord(qc_row_id, qc_process_status, active_form) { active_form.submit(); } +function AddToComments(qc_log_row_id, level) + { + var checkpoint_comment_field_ID="checkpoint_comment_agent"+qc_log_row_id; + if (document.getElementById(checkpoint_comment_field_ID).value.length>0) + { + document.getElementById(checkpoint_comment_field_ID).value+="\n"; + } + if (level>0) + { + var RecordingPos=document.getElementById("main_QC_recording").currentTime; + var strPos=11; + var strLen=8; + if (RecordingPos<600) + { + strPos=15; strLen=4; + } + else if (RecordingPos<3600) + { + strPos=14; strLen=5; + } + else if (RecordingPos<36000) + { + strPos=12; strLen=7; + } + + var currentTimestamp=new Date(RecordingPos * 1000).toISOString().substr(strPos, strLen); + if (document.getElementById(checkpoint_comment_field_ID)) + { + document.getElementById(checkpoint_comment_field_ID).value+=currentTimestamp+" - "; + } + } + if (level%2==0) + { + var checkpoint_comment_preset_ID="checkpoint_text_presets"+qc_log_row_id; + if (document.getElementById(checkpoint_comment_field_ID)) + { + var preset_field = document.getElementById(checkpoint_comment_preset_ID); + var preset_field_value = preset_field.options[preset_field.selectedIndex].value; + document.getElementById(checkpoint_comment_field_ID).value+=preset_field_value; + } + } + LogQCData(qc_log_row_id); + + } + function LogQCData(qc_log_row_id) { var xmlhttp=false; - if (eval("document.qc_form.checkpoint_comment_agent"+qc_log_row_id)) + var checkpoint_comment_field_ID="checkpoint_comment_agent"+qc_log_row_id; + var instant_fail_field_ID="instant_fail_value"+qc_log_row_id; + var checkpoint_points_field_ID="checkpoint_points_earned"+qc_log_row_id; + + if (document.getElementById(checkpoint_comment_field_ID)) { - var qc_agent_comments_field=eval("document.qc_form.checkpoint_comment_agent"+qc_log_row_id); - var qc_ac=qc_agent_comments_field.value; + var qc_ac=document.getElementById(checkpoint_comment_field_ID).value; var qc_agent_comments=qc_ac.replace("&", "and"); } else @@ -869,20 +917,25 @@ function LogQCData(qc_log_row_id) } var encoded_qc_agent_comments=encodeURIComponent(qc_agent_comments); - if (eval("document.qc_form.instant_fail"+qc_log_row_id)) + if (document.getElementById(instant_fail_field_ID)) { - var instant_fail_field=eval("document.qc_form.instant_fail"+qc_log_row_id); - var instant_fail=instant_fail_field.value; + if (document.getElementById(instant_fail_field_ID).checked) + { + var instant_fail_value=document.getElementById(instant_fail_field_ID).value; + } + else + { + var instant_fail_value="N"; + } } else { - var instant_fail="N"; + var instant_fail_value="N"; } - if (eval("document.qc_form.checkpoint_points_earned"+qc_log_row_id)) + if (document.getElementById(checkpoint_points_field_ID)) { - var checkpoint_points_earned_field=eval("document.qc_form.checkpoint_points_earned"+qc_log_row_id); - var checkpoint_points_earned=checkpoint_points_earned_field.value; + var checkpoint_points_earned=document.getElementById(checkpoint_points_field_ID).value; } else { @@ -902,7 +955,7 @@ function LogQCData(qc_log_row_id) if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); - var update_query = "&view_epoch="+timestamp+"&qc_log_id="+qc_log_id+"&qc_checkpoint_log_id="+qc_log_row_id+"&checkpoint_comment_agent="+encoded_qc_agent_comments+"&instant_fail="+instant_fail+"&checkpoint_points_earned="+checkpoint_points_earned+"&qc_action=upd_customer"; + var update_query = "&view_epoch="+timestamp+"&qc_log_id="+qc_log_id+"&qc_checkpoint_log_id="+qc_log_row_id+"&checkpoint_comment_agent="+encoded_qc_agent_comments+"&instant_fail_value="+instant_fail_value+"&checkpoint_points_earned="+checkpoint_points_earned+"&qc_action=upd_customer"; xmlhttp.open('POST', 'qc_module_actions.php'); xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8'); xmlhttp.send(update_query); @@ -2079,7 +2132,7 @@ else { if ($log_recording_access<1) { - $play_audio = "     \n"; + $play_audio = "     \n"; $location = "$locat"; } else @@ -2093,21 +2146,23 @@ else echo "
[DOWNLOAD]
Call dateCall agentCall agentLead IDCampaign IDStatusScorecardQC agentClaim dateFinish dateScoreQC agentClaim dateFinish dateScoreInstant failResultQC status
".$qc_row["call_date"]."".GetFullName($qc_row["user"])."".GetFullName($qc_row["user"])."".$qc_row["lead_id"]."".$qc_row["campaign_id"]."".$qc_row["status"]."".$qc_row["qc_scorecard_id"]."".GetFullName($qc_row["qc_agent"])."".$qc_row["date_claimed"]."".$qc_row["date_completed"]."".GetScore($qc_row["qc_log_id"], "")."".GetFullName($qc_row["qc_agent"])."".$qc_row["date_claimed"]."".$qc_row["date_completed"]."".GetScore($qc_row["qc_log_id"], "")."".$instant_fail."".($instant_fail=="Y" ? "FAILED" : GetResult($qc_row["qc_log_id"]))."
    ".$crow["checkpoint_rank"].") ".$crow["checkpoint_text"]."".$crow["checkpoint_comment_agent"]."".GetScore($qc_row["qc_log_id"], $crow["qc_checkpoint_log_id"])."".$crow["instant_fail"]."".GetScore($qc_row["qc_log_id"], $crow["qc_checkpoint_log_id"])."".$crow["instant_fail_value"]." 
\n"; echo ""; echo ""; - echo ""; + echo ""; echo "\n"; echo ""; echo ""; - echo ""; + echo ""; echo ""; - echo ""; + echo ""; + echo ""; echo "\n"; $i=1; while ($checkpoint_row=mysqli_fetch_array($checkpoint_rslt)) { $qccl_id=$checkpoint_row["qc_checkpoint_log_id"]; - $instant_fail=$checkpoint_row["instant_fail"]; + $instant_fail_active=$checkpoint_row["instant_fail"]; + $instant_fail_value=$checkpoint_row["instant_fail_value"]; if (preg_match("/1$|3$|5$|7$|9$/i", $i)) {$bgcolor="bgcolor='#".$SSstd_row3_background."'";} else @@ -2115,29 +2170,56 @@ else echo ""; echo ""; - echo ""; - if ($checkpoint_row["instant_fail"]=="Y") + echo ""; + if ($instant_fail_active=="Y") { - echo ""; + echo ""; } else { echo ""; } - echo ""; - echo ""; + echo ""; + echo ""; + + echo ""; + echo ""; $i++; } echo ""; echo ""; - echo ""; + echo ""; echo "\n"; echo ""; echo ""; # echo ""; - echo ""; - echo ""; + echo ""; echo ""; echo ""; - echo ""; + echo ""; echo ""; $i++; if ($i%2==0) {$bgcolor=$SSstd_row1_background;} else {$bgcolor=$SSstd_row2_background;} echo "\n"; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; # echo ""; echo ""; echo ""; @@ -534,7 +539,14 @@ if ($scorecard_id && $qc_action=="load_checkpoints") { echo ""; - echo "\n"; + + echo "\n"; + echo "\n"; + echo "\n"; echo ""; echo ""; } - echo ""; + echo ""; } else { - echo "\n"; + echo "\n"; echo ""; - echo ""; + echo ""; echo ""; } - echo "\n"; + echo "\n"; echo ""; - echo ""; + echo ""; echo ""; echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; - echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; #echo ""; echo ""; echo ""; @@ -580,7 +593,12 @@ if ($scorecard_id && $qc_action=="load_checkpoints") { echo ""; - echo "\n"; + echo "\n"; + echo "\n"; echo ""; diff --git a/www/vicidial/qc_scorecards.php b/www/vicidial/qc_scorecards.php index 9b9eba5c..9dc5951a 100644 --- a/www/vicidial/qc_scorecards.php +++ b/www/vicidial/qc_scorecards.php @@ -546,13 +546,16 @@ function AddCheckpoint(scorecard_id) { var qtext = document.getElementById("new_checkpoint_text"); var checkpoint_text=encodeURIComponent(qtext.value); + var qtext_presets = document.getElementById("new_checkpoint_text_presets"); + var checkpoint_text_presets=encodeURIComponent(qtext_presets.value); + var qpts = document.getElementById("new_checkpoint_points"); var checkpoint_points=encodeURIComponent(qpts.value); var qadmin = document.getElementById("new_admin_notes"); var admin_notes=encodeURIComponent(qadmin.value); - var add_query = "&qc_action=add_checkpoint&scorecard_id="+scorecard_id+"&new_checkpoint_rank="+checkpoint_rank+"&new_active="+active+"&new_checkpoint_text="+checkpoint_text+"&new_admin_notes="+admin_notes+"&new_checkpoint_points="+checkpoint_points+"&new_instant_fail="+instant_fail+"&new_commission_loss="+comm_loss; + var add_query = "&qc_action=add_checkpoint&scorecard_id="+scorecard_id+"&new_checkpoint_rank="+checkpoint_rank+"&new_active="+active+"&new_checkpoint_text="+checkpoint_text+"&new_checkpoint_text_presets="+checkpoint_text_presets+"&new_admin_notes="+admin_notes+"&new_checkpoint_points="+checkpoint_points+"&new_instant_fail="+instant_fail+"&new_commission_loss="+comm_loss; var xmlhttp=false; try { @@ -614,7 +617,7 @@ function ChangeCheckpoint(checkpoint_row_id, scorecard_id, q_action, parameter, { if (e.checked) {parameter_value="Y";} else {parameter_value="N";} } - else if (parameter=="checkpoint_text" || parameter=="checkpoint_points" || parameter=="admin_notes") + else if (parameter=="checkpoint_text" || parameter=="checkpoint_text_presets" || parameter=="checkpoint_points" || parameter=="admin_notes") { parameter_value=encodeURIComponent(e.value); }
"._QXZ("SCORECARD ID").": $qc_scorecard_id"._QXZ("RECORDING ID").": "._QXZ("RECORDING ID").":
 "._QXZ("Checkpoint").""._QXZ("Checkpoint").""._QXZ("Fail")."?"._QXZ("Points")."/td>"; - echo ""._QXZ("Comments").""._QXZ("Points")."/th>"; + echo ""._QXZ("Comments")." 
$i$checkpoint_row[checkpoint_text]$checkpoint_row[checkpoint_text]  / $checkpoint_row[checkpoint_points] / $checkpoint_row[checkpoint_points]"; + echo ""; + echo "
"; + echo "
"; + + if (strlen($checkpoint_row["checkpoint_text_presets"])>0) + { + echo "Presets:
\n"; + echo "
"; + echo ""; + } + else + { + echo " "; + } + echo "
$play_audio  $location$location
"._QXZ("FINISH QC").":
"._QXZ("QC Result").":
"._QXZ("MODIFY QC SCORECARD")." $scorecard_id $NWB#qc_scorecards-modify$NWE"._QXZ("MODIFY QC SCORECARD")." $scorecard_id $NWB#qc_scorecards-modify$NWE
"._QXZ("NAME").": "._QXZ("NAME").":
"._QXZ("Order")."$NWB#qc_scorecards-order$NWE"._QXZ("Active")."$NWB#qc_scorecards-active_checkpoint$NWE"._QXZ("Checkpoint Text")."$NWB#qc_scorecards-checkpoint_text$NWE"._QXZ("Points")."$NWB#qc_scorecards-points$NWE"._QXZ("Instant Fail")."$NWB#qc_scorecards-instant_kill$NWE"._QXZ("Admin Notes")."$NWB#qc_scorecards-admin_notes$NWE"._QXZ("Order")."$NWB#qc_scorecards-order$NWE"._QXZ("Active")."$NWB#qc_scorecards-active_checkpoint$NWE"._QXZ("Checkpoint Text")."$NWB#qc_scorecards-checkpoint_text$NWE"._QXZ("Preset comments")."$NWB#qc_scorecards-preset_comments$NWE"._QXZ("Points")."$NWB#qc_scorecards-points$NWE"._QXZ("Instant Fail")."$NWB#qc_scorecards-instant_fail$NWE"._QXZ("Admin Notes")."$NWB#qc_scorecards-admin_notes$NWECommission Loss 
"; echo ""; echo ""; + echo ""; + echo ""; + echo ""; + echo ""; echo ""; @@ -546,26 +558,27 @@ if ($scorecard_id && $qc_action=="load_checkpoints") { echo "
"._QXZ("PASSING SCORE").":/ $max_score 
"._QXZ("PASSING SCORE").":/ $max_score 
** "._QXZ("CURRENTLY NO CHECKPOINTS FOR SCORECARD")." $scorecard_id **
** "._QXZ("CURRENTLY NO CHECKPOINTS FOR SCORECARD")." $scorecard_id **
"._QXZ("NAME").": "._QXZ("NAME").":
 
 
"._QXZ("ADD NEW CHECKPOINT FOR SCORECARD")." $scorecard_id"._QXZ("ADD NEW CHECKPOINT FOR SCORECARD")." $scorecard_id
"._QXZ("Order")."$NWB#qc_scorecards-order$NWE"._QXZ("Active")."$NWB#qc_scorecards-active_checkpoint$NWE"._QXZ("Checkpoint Text")."$NWB#qc_scorecards-checkpoint_text$NWE"._QXZ("Points")."$NWB#qc_scorecards-points$NWE"._QXZ("Instant Kill")."$NWB#qc_scorecards-instant_kill$NWE"._QXZ("Admin Notes")."$NWB#qc_scorecards-admin_notes$NWE"._QXZ("Order")."$NWB#qc_scorecards-order$NWE"._QXZ("Active")."$NWB#qc_scorecards-active_checkpoint$NWE"._QXZ("Checkpoint Text")."$NWB#qc_scorecards-checkpoint_text$NWE"._QXZ("Preset comments")."$NWB#qc_scorecards-preset_comments$NWE"._QXZ("Points")."$NWB#qc_scorecards-points$NWE"._QXZ("Instant Fail")."$NWB#qc_scorecards-instant_fail$NWE"._QXZ("Admin Notes")."$NWB#qc_scorecards-admin_notes$NWECommission loss 
"; echo ""; echo ""; + echo ""; + echo ""; + echo ""; + echo ""; echo ""; echo "