Added the ability to use custom statuses for scheduled callbacks. These are configurable with the Scheduled Callbacks flag in the System Statuses and Campaign Statuses administrative screens.

Rearranged the statuses admin screens

git-svn-id: svn://192.168.202.10@1599 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2011-02-13 07:31:59 +00:00
parent d0e7817760
commit 309b8e9f84
11 changed files with 466 additions and 138 deletions
+4
View File
@@ -448,6 +448,10 @@ OTHER CHANGES:
You use this script in an IFRAME for the campaign. It must be
customized for your specific business rules.
105. Added the ability to use custom statuses for scheduled callbacks. These
are configurable with the Scheduled Callbacks flag in the System
Statuses and Campaign Statuses administrative screens.
+30 -1
View File
@@ -79,6 +79,7 @@
# 100727-1653 - Fixes for queue priority feature
# 100903-0041 - Changed lead_id max length to 10 digits
# 101207-0713 - Added fix for rare VDAC-entry-missing issue
# 110213-0008 - Added scheduled callbacks custom statuses compatibility
#
$script = 'agi-VDAD_ALL_outbound.agi';
@@ -414,8 +415,36 @@ if ($VDACaffected_rows < 1)
}
if ($VDACaffected_rows > 0)
{
### find list of callback statuses
$SCstatuses="'CBHOLD'";
$stmtA = "select status from vicidial_statuses where scheduled_callback='Y' limit 10000000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArowsSCS=$sthA->rows;
$rec_count=0;
while ($sthArowsSCS > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$SCstatuses .= ",'$aryA[0]'";
$rec_count++;
}
$sthA->finish();
$stmtA = "select status from vicidial_campaign_statuses where scheduled_callback='Y' limit 10000000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArowsSCS=$sthA->rows;
$rec_count=0;
while ($sthArowsSCS > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$SCstatuses .= ",'$aryA[0]'";
$rec_count++;
}
$sthA->finish();
# flag the lead as being Answered or Picked up
$stmtA = "UPDATE vicidial_list set status='PU' where lead_id='$CIDlead_id' and status NOT IN('CALLBK');";
$stmtA = "UPDATE vicidial_list set status='PU' where lead_id='$CIDlead_id' and status NOT IN($SCstatuses);";
if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;}
$affected_rows = $dbhA->do($stmtA);
$dbhP=$dbhA; $mysql_count='01005'; $MEL_aff_rows=$affected_rows; &mysql_error_logging;
+34 -3
View File
@@ -9,10 +9,11 @@
#
# It is recommended that you run this program on the local Asterisk machine
#
# Copyright (C) 2010 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2011 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
# CHANGES
# 101128-0149 - first build
# 110212-2343 - added scheduled callback custom statuses capacity
#
### begin parsing run-time options ###
@@ -121,6 +122,36 @@ $dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VA
$deleted=0;
### find list of callback statuses
$SCstatuses=' CBHOLD';
$stmtA = "select status from vicidial_statuses where scheduled_callback='Y' limit 10000000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArowsSCS=$sthA->rows;
$rec_count=0;
while ($sthArowsSCS > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$SCstatuses .= " $aryA[0]";
$rec_count++;
}
$sthA->finish();
$stmtA = "select status from vicidial_campaign_statuses where scheduled_callback='Y' limit 10000000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArowsSCS=$sthA->rows;
$rec_count=0;
while ($sthArowsSCS > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$SCstatuses .= " $aryA[0]";
$rec_count++;
}
$sthA->finish();
$SCstatuses .= " ";
if($DB){print STDERR "\nScheduled Callback statuses: |$SCstatuses|\n";}
$stmtA = "select lead_id,status,callback_id from vicidial_callbacks limit 10000000;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
@@ -157,8 +188,8 @@ while ($sthArowsCT > $rec_count)
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$callback_statuses[$rec_count] = $aryA[0];
if ( ($purge_non_cb > 0) && ($aryA[0] !~ /CBHOLD|CALLBK/) )
$callback_statuses[$rec_count] = " $aryA[0] ";
if ( ($purge_non_cb > 0) && ($SCstatuses !~ /$callback_statuses[$rec_count]/) )
{$delete_lead++;}
}
else
+4 -2
View File
@@ -65,6 +65,7 @@
# 100706-2332 - Added ability to purge only one campaign's leads in the hopper
# 101108-1451 - Added ability for the hopper level to be set automatically and remove excess leads from the hopper (MikeC)
# 110103-1118 - Added lead_order_randomize option
# 110212-2255 - Added scheduled callback custom statuses capability
#
# constants
@@ -374,7 +375,7 @@ if ($CBHOLD_count > 0)
$update_leads='';
$cbc=0;
$cba=0;
$stmtA = "SELECT vicidial_callbacks.lead_id,recipient,campaign_id,vicidial_callbacks.list_id,gmt_offset_now,state FROM vicidial_callbacks,vicidial_list where callback_time <= '$now_date' and vicidial_callbacks.status='ACTIVE' and vicidial_callbacks.lead_id=vicidial_list.lead_id;";
$stmtA = "SELECT vicidial_callbacks.lead_id,recipient,campaign_id,vicidial_callbacks.list_id,gmt_offset_now,state,vicidial_callbacks.lead_status FROM vicidial_callbacks,vicidial_list where callback_time <= '$now_date' and vicidial_callbacks.status='ACTIVE' and vicidial_callbacks.lead_id=vicidial_list.lead_id;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
@@ -391,6 +392,7 @@ if ($CBHOLD_count > 0)
$CA_list_id[$cba] = $aryA[3];
$CA_gmt_offset_now[$cba] = $aryA[4];
$CA_state[$cba] = $aryA[5];
$CA_status[$cba] = $aryA[6];
$cba++;
}
$cbc++;
@@ -415,7 +417,7 @@ if ($CBHOLD_count > 0)
$CAu=0;
foreach(@CA_lead_id)
{
$stmtA = "UPDATE vicidial_list set status='CALLBK', called_since_last_reset='N' where lead_id='$CA_lead_id[$CAu]';";
$stmtA = "UPDATE vicidial_list set status='$CA_status[$CAu]', called_since_last_reset='N' where lead_id='$CA_lead_id[$CAu]';";
$affected_rows = $dbhA->do($stmtA);
if ($DB) {print "Scheduled Callbacks Activated: $affected_rows\n";}
$event_string = "|CALLBACKS LISTACT|$affected_rows|";
@@ -817,7 +817,8 @@ sale ENUM('Y','N') default 'N',
dnc ENUM('Y','N') default 'N',
customer_contact ENUM('Y','N') default 'N',
not_interested ENUM('Y','N') default 'N',
unworkable ENUM('Y','N') default 'N'
unworkable ENUM('Y','N') default 'N',
scheduled_callback ENUM('Y','N') default 'N'
);
CREATE TABLE vicidial_campaign_statuses (
@@ -832,6 +833,7 @@ dnc ENUM('Y','N') default 'N',
customer_contact ENUM('Y','N') default 'N',
not_interested ENUM('Y','N') default 'N',
unworkable ENUM('Y','N') default 'N',
scheduled_callback ENUM('Y','N') default 'N',
index (campaign_id)
);
@@ -1096,6 +1098,7 @@ user VARCHAR(20),
recipient ENUM('USERONLY','ANYONE'),
comments VARCHAR(255),
user_group VARCHAR(20),
lead_status VARCHAR(6) default 'CALLBK',
index (lead_id),
index (status),
index (callback_time)
@@ -2413,7 +2416,10 @@ ALTER TABLE vicidial_agent_log_archive MODIFY agent_log_id INT(9) UNSIGNED NOT N
CREATE TABLE vicidial_carrier_log_archive LIKE vicidial_carrier_log;
UPDATE system_settings SET db_schema_version='1258',db_schema_update_date=NOW();
CREATE TABLE vicidial_call_notes_archive LIKE vicidial_call_notes;
ALTER TABLE vicidial_call_notes_archive MODIFY notesid INT(9) UNSIGNED NOT NULL;
UPDATE system_settings SET db_schema_version='1259',db_schema_update_date=NOW();
GRANT RELOAD ON *.* TO cron@'%';
GRANT RELOAD ON *.* TO cron@localhost;
+38 -38
View File
@@ -317,41 +317,41 @@ INSERT INTO vicidial_list(status,list_id,phone_code,phone_number,first_name,last
INSERT INTO vicidial_list(status,list_id,phone_code,phone_number,first_name,last_name,address1,city,state,postal_code,country_code,gender,email) values('NEW','101','1','7275551212','Matt','lead06','1234 Fake St.','Clearwater','FL','33760','USA','M','test@test.com');
INSERT INTO vicidial_list(status,list_id,phone_code,phone_number,first_name,last_name,address1,city,state,postal_code,country_code,gender,email) values('NEW','101','1','7275551212','Matt','lead07','1234 Fake St.','Clearwater','FL','33760','USA','M','test@test.com');
INSERT INTO vicidial_statuses values('NEW','New Lead','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('QUEUE','Lead To Be Called','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('INCALL','Lead Being Called','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('DROP','Agent Not Available','N','Y','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('XDROP','Agent Not Available IN','N','Y','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('NA','No Answer AutoDial','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('CALLBK','Call Back','Y','Y','UNDEFINED','N','N','Y','N','N');
INSERT INTO vicidial_statuses values('CBHOLD','Call Back Hold','N','Y','UNDEFINED','N','N','Y','N','N');
INSERT INTO vicidial_statuses values('A','Answering Machine','Y','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AA','Answering Machine Auto','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AM','Answering Machine Sent to Mesg','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AL','Answering Machine Msg Played','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AFAX','Fax Machine Auto','N','N','UNDEFINED','N','N','N','N','Y');
INSERT INTO vicidial_statuses values('AB','Busy Auto','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('B','Busy','Y','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('DC','Disconnected Number','Y','N','UNDEFINED','N','N','N','N','Y');
INSERT INTO vicidial_statuses values('ADC','Disconnected Number Auto','N','N','UNDEFINED','N','N','N','N','Y');
INSERT INTO vicidial_statuses values('DEC','Declined Sale','Y','Y','UNDEFINED','N','N','Y','N','N');
INSERT INTO vicidial_statuses values('DNC','DO NOT CALL','Y','Y','UNDEFINED','N','Y','N','N','N');
INSERT INTO vicidial_statuses values('DNCL','DO NOT CALL Hopper Match','N','N','UNDEFINED','N','Y','N','N','N');
INSERT INTO vicidial_statuses values('DNCC','DO NOT CALL Camp Match','N','N','UNDEFINED','N','Y','N','N','N');
INSERT INTO vicidial_statuses values('SALE','Sale Made','Y','Y','UNDEFINED','Y','N','N','N','N');
INSERT INTO vicidial_statuses values('N','No Answer','Y','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('NI','Not Interested','Y','Y','UNDEFINED','N','N','Y','Y','N');
INSERT INTO vicidial_statuses values('NP','No Pitch No Price','Y','Y','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('PU','Call Picked Up','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('PM','Played Message','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('XFER','Call Transferred','Y','Y','UNDEFINED','N','N','Y','N','N');
INSERT INTO vicidial_statuses values('ERI','Agent Error','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('SVYEXT','Survey sent to Extension','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('SVYVM','Survey sent to Voicemail','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('SVYHU','Survey Hungup','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('SVYREC','Survey sent to Record','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('QVMAIL','Queue Abandon Voicemail Left','N','N','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('RQXFER','Re-Queue','N','Y','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('TIMEOT','Inbound Queue Timeout Drop','N','Y','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AFTHRS','Inbound After Hours Drop','N','Y','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('NANQUE','Inbound No Agent No Queue Drop','N','Y','UNDEFINED','N','N','N','N','N');
INSERT INTO vicidial_statuses values('NEW','New Lead','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('QUEUE','Lead To Be Called','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('INCALL','Lead Being Called','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('DROP','Agent Not Available','N','Y','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('XDROP','Agent Not Available IN','N','Y','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('NA','No Answer AutoDial','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('CALLBK','Call Back','Y','Y','UNDEFINED','N','N','Y','N','N','Y');
INSERT INTO vicidial_statuses values('CBHOLD','Call Back Hold','N','Y','UNDEFINED','N','N','Y','N','N','Y');
INSERT INTO vicidial_statuses values('A','Answering Machine','Y','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AA','Answering Machine Auto','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AM','Answering Machine Sent to Mesg','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AL','Answering Machine Msg Played','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AFAX','Fax Machine Auto','N','N','UNDEFINED','N','N','N','N','Y','N');
INSERT INTO vicidial_statuses values('AB','Busy Auto','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('B','Busy','Y','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('DC','Disconnected Number','Y','N','UNDEFINED','N','N','N','N','Y','N');
INSERT INTO vicidial_statuses values('ADC','Disconnected Number Auto','N','N','UNDEFINED','N','N','N','N','Y','N');
INSERT INTO vicidial_statuses values('DEC','Declined Sale','Y','Y','UNDEFINED','N','N','Y','N','N','N');
INSERT INTO vicidial_statuses values('DNC','DO NOT CALL','Y','Y','UNDEFINED','N','Y','N','N','N','N');
INSERT INTO vicidial_statuses values('DNCL','DO NOT CALL Hopper Match','N','N','UNDEFINED','N','Y','N','N','N','N');
INSERT INTO vicidial_statuses values('DNCC','DO NOT CALL Camp Match','N','N','UNDEFINED','N','Y','N','N','N','N');
INSERT INTO vicidial_statuses values('SALE','Sale Made','Y','Y','UNDEFINED','Y','N','N','N','N','N');
INSERT INTO vicidial_statuses values('N','No Answer','Y','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('NI','Not Interested','Y','Y','UNDEFINED','N','N','Y','Y','N','N');
INSERT INTO vicidial_statuses values('NP','No Pitch No Price','Y','Y','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('PU','Call Picked Up','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('PM','Played Message','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('XFER','Call Transferred','Y','Y','UNDEFINED','N','N','Y','N','N','N');
INSERT INTO vicidial_statuses values('ERI','Agent Error','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('SVYEXT','Survey sent to Extension','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('SVYVM','Survey sent to Voicemail','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('SVYHU','Survey Hungup','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('SVYREC','Survey sent to Record','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('QVMAIL','Queue Abandon Voicemail Left','N','N','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('RQXFER','Re-Queue','N','Y','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('TIMEOT','Inbound Queue Timeout Drop','N','Y','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('AFTHRS','Inbound After Hours Drop','N','Y','UNDEFINED','N','N','N','N','N','N');
INSERT INTO vicidial_statuses values('NANQUE','Inbound No Agent No Queue Drop','N','Y','UNDEFINED','N','N','N','N','N','N');
+12
View File
@@ -645,3 +645,15 @@ ALTER TABLE system_settings ADD queuemetrics_dispo_pause VARCHAR(6) default '';
ALTER TABLE vicidial_campaigns ADD lead_order_randomize ENUM('Y','N') default 'N';
UPDATE system_settings SET db_schema_version='1258',db_schema_update_date=NOW();
CREATE TABLE vicidial_call_notes_archive LIKE vicidial_call_notes;
ALTER TABLE vicidial_call_notes_archive MODIFY notesid INT(9) UNSIGNED NOT NULL;
ALTER TABLE vicidial_statuses ADD scheduled_callback ENUM('Y','N') default 'N';
ALTER TABLE vicidial_campaign_statuses ADD scheduled_callback ENUM('Y','N') default 'N';
UPDATE vicidial_statuses SET scheduled_callback='Y' where status='CALLBK';
UPDATE vicidial_campaign_statuses SET scheduled_callback='Y' where status='CALLBK';
ALTER TABLE vicidial_callbacks ADD lead_status VARCHAR(6) default 'CALLBK';
UPDATE system_settings SET db_schema_version='1259',db_schema_update_date=NOW();
+95 -15
View File
@@ -268,10 +268,11 @@
# 110103-1343 - Added queuemetrics_loginout NONE option
# 110124-1134 - Small query fix for large queue_log tables
# 110124-1456 - Fixed AREACODE DNC manual dial bug
# 110212-2103 - Added support for custom scheduled callback statuses
#
$version = '2.4-174';
$build = '110124-1456';
$version = '2.4-175';
$build = '110212-2103';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=365;
$one_mysql_log=0;
@@ -462,6 +463,8 @@ if (isset($_GET["qm_phone"])) {$qm_phone=$_GET["qm_phone"];}
elseif (isset($_POST["qm_phone"])) {$qm_phone=$_POST["qm_phone"];}
if (isset($_GET["manual_dial_call_time_check"])) {$manual_dial_call_time_check=$_GET["manual_dial_call_time_check"];}
elseif (isset($_POST["manual_dial_call_time_check"])) {$manual_dial_call_time_check=$_POST["manual_dial_call_time_check"];}
if (isset($_GET["CallBackLeadStatus"])) {$CallBackLeadStatus=$_GET["CallBackLeadStatus"];}
elseif (isset($_POST["CallBackLeadStatus"])) {$CallBackLeadStatus=$_POST["CallBackLeadStatus"];}
header ("Content-type: text/html; charset=utf-8");
@@ -2013,7 +2016,32 @@ if ($ACTION == 'manDiaLnextCaLL')
$CBcallback_time = '';
$CBuser = '';
$CBcomments = '';
if (ereg("CALLBK",$dispo))
$CBstatus = 0;
$stmt="SELECT count(*) FROM vicidial_statuses where status='$dispo' and scheduled_callback='Y';";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$cb_record_ct = mysql_num_rows($rslt);
if ($cb_record_ct > 0)
{
$row=mysql_fetch_row($rslt);
$CBstatus = $row[0];
}
if ($CBstatus < 1)
{
$stmt="SELECT count(*) FROM vicidial_campaign_statuses where status='$dispo' and scheduled_callback='Y';";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$cb_record_ct = mysql_num_rows($rslt);
if ($cb_record_ct > 0)
{
$row=mysql_fetch_row($rslt);
$CBstatus = $row[0];
}
}
if ( ($CBstatus > 0) or ($dispo == 'CBHOLD') )
{
$stmt="SELECT entry_time,callback_time,user,comments FROM vicidial_callbacks where lead_id='$lead_id' order by callback_id desc LIMIT 1;";
$rslt=mysql_query($stmt, $link);
@@ -4310,7 +4338,32 @@ if ($ACTION == 'VDADcheckINCOMING')
$CBcallback_time = '';
$CBuser = '';
$CBcomments = '';
if (ereg("CALLBK",$dispo))
$CBstatus = 0;
$stmt="SELECT count(*) FROM vicidial_statuses where status='$dispo' and scheduled_callback='Y';";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$cb_record_ct = mysql_num_rows($rslt);
if ($cb_record_ct > 0)
{
$row=mysql_fetch_row($rslt);
$CBstatus = $row[0];
}
if ($CBstatus < 1)
{
$stmt="SELECT count(*) FROM vicidial_campaign_statuses where status='$dispo' and scheduled_callback='Y';";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$cb_record_ct = mysql_num_rows($rslt);
if ($cb_record_ct > 0)
{
$row=mysql_fetch_row($rslt);
$CBstatus = $row[0];
}
}
if ( ($CBstatus > 0) or ($dispo == 'CBHOLD') )
{
$stmt="SELECT entry_time,callback_time,user,comments FROM vicidial_callbacks where lead_id='$lead_id' order by callback_id desc LIMIT 1;";
$rslt=mysql_query($stmt, $link);
@@ -5002,8 +5055,33 @@ if ($ACTION == 'VDADcheckINCOMING')
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00124',$user,$server_ip,$session_name,$one_mysql_log);}
### If CALLBK, change vicidial_callback record to INACTIVE
if (eregi("CALLBK|CBHOLD", $dispo))
### If a scheduled callback, change vicidial_callback record to INACTIVE
$CBstatus = 0;
$stmt="SELECT count(*) FROM vicidial_statuses where status='$dispo' and scheduled_callback='Y';";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$cb_record_ct = mysql_num_rows($rslt);
if ($cb_record_ct > 0)
{
$row=mysql_fetch_row($rslt);
$CBstatus = $row[0];
}
if ($CBstatus < 1)
{
$stmt="SELECT count(*) FROM vicidial_campaign_statuses where status='$dispo' and scheduled_callback='Y';";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
$cb_record_ct = mysql_num_rows($rslt);
if ($cb_record_ct > 0)
{
$row=mysql_fetch_row($rslt);
$CBstatus = $row[0];
}
}
if ( ($CBstatus > 0) or (eregi("CALLBK|CBHOLD", $dispo)) )
{
$stmt="UPDATE vicidial_callbacks set status='INACTIVE' where lead_id='$lead_id' and status NOT IN('INACTIVE','DEAD','ARCHIVE');";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
@@ -5553,6 +5631,8 @@ if ($ACTION == 'updateDISPO')
# $fp = fopen ("./vicidial_debug.txt", "a");
# fwrite ($fp, "$NOW_TIME|DISPO_CALL |$MDnextCID|$stage|$campaign|$lead_id|$dispo_choice|$user|$uniqueid|$auto_dial_level|$agent_log_id|\n");
# fclose($fp);
$log_dispo_choice = $dispo_choice;
if (strlen($CallBackLeadStatus) > 0) {$log_dispo_choice = $CallBackLeadStatus;}
$stmt = "SELECT count(*) from vicidial_inbound_groups where group_id='$stage';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
@@ -5562,7 +5642,7 @@ if ($ACTION == 'updateDISPO')
if ($row[0] > 0)
{
$call_type='IN';
$stmt = "UPDATE vicidial_closer_log set status='$dispo_choice' where lead_id='$lead_id' and user='$user' order by closecallid desc limit 1;";
$stmt = "UPDATE vicidial_closer_log set status='$log_dispo_choice' where lead_id='$lead_id' and user='$user' order by closecallid desc limit 1;";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00144',$user,$server_ip,$session_name,$one_mysql_log);}
@@ -5598,7 +5678,7 @@ if ($ACTION == 'updateDISPO')
$row=mysql_fetch_row($rslt);
if ($row[0] > 0)
{
$stmt="UPDATE vicidial_log set status='$dispo_choice' where lead_id='$lead_id' and user='$user' and call_date > \"$four_hours_ago\" order by uniqueid desc limit 1;";
$stmt="UPDATE vicidial_log set status='$log_dispo_choice' where lead_id='$lead_id' and user='$user' and call_date > \"$four_hours_ago\" order by uniqueid desc limit 1;";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00145',$user,$server_ip,$session_name,$one_mysql_log);}
@@ -5689,7 +5769,7 @@ if ($ACTION == 'updateDISPO')
$PADlead_id = sprintf("%010s", $lead_id);
while (strlen($PADlead_id) > 10) {$PADlead_id = substr("$PADlead_id", 1);}
$FAKEcall_id = "$StarTtime.$PADlead_id";
$stmt = "INSERT INTO vicidial_log set uniqueid='$FAKEcall_id',lead_id='$lead_id',list_id='$VLlist_id',campaign_id='$campaign',call_date='$NOW_TIME',start_epoch='$StarTtime',end_epoch='$StarTtime',length_in_sec='0',status='$dispo_choice',phone_code='$VLphone_code',phone_number='$VLphone_number',user='$user',comments='MANUAL',processed='N',user_group='$user_group',term_reason='AGENT',alt_dial='$VLalt';";
$stmt = "INSERT INTO vicidial_log set uniqueid='$FAKEcall_id',lead_id='$lead_id',list_id='$VLlist_id',campaign_id='$campaign',call_date='$NOW_TIME',start_epoch='$StarTtime',end_epoch='$StarTtime',length_in_sec='0',status='$log_dispo_choice',phone_code='$VLphone_code',phone_number='$VLphone_number',user='$user',comments='MANUAL',processed='N',user_group='$user_group',term_reason='AGENT',alt_dial='$VLalt';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00215',$user,$server_ip,$session_name,$one_mysql_log);}
@@ -5704,7 +5784,7 @@ if ($ACTION == 'updateDISPO')
}
else
{
$stmt="UPDATE vicidial_log set status='$dispo_choice' where lead_id='$lead_id' and user='$user' and call_date > \"$four_hours_ago\" order by uniqueid desc limit 1;";
$stmt="UPDATE vicidial_log set status='$log_dispo_choice' where lead_id='$lead_id' and user='$user' and call_date > \"$four_hours_ago\" order by uniqueid desc limit 1;";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00145',$user,$server_ip,$session_name,$one_mysql_log);}
@@ -5745,7 +5825,7 @@ if ($ACTION == 'updateDISPO')
}
$insert_into_dnc=0;
if ( ($use_internal_dnc=='Y') and (eregi("\|$dispo_choice\|", $DNC_string_check) ) )
if ( ($use_internal_dnc=='Y') and (eregi("\|$log_dispo_choice\|", $DNC_string_check) ) )
{
$stmt = "select phone_number from vicidial_list where lead_id='$lead_id';";
if ($DB) {echo "$stmt\n";}
@@ -5758,7 +5838,7 @@ if ($ACTION == 'updateDISPO')
if ($DB) {echo "$stmt\n";}
$insert_into_dnc++;
}
if ( ($use_campaign_dnc=='Y') and (eregi("\|$dispo_choice\|", $DNC_string_check) ) )
if ( ($use_campaign_dnc=='Y') and (eregi("\|$log_dispo_choice\|", $DNC_string_check) ) )
{
$stmt = "select phone_number from vicidial_list where lead_id='$lead_id';";
if ($DB) {echo "$stmt\n";}
@@ -5810,7 +5890,7 @@ if ($ACTION == 'updateDISPO')
}
}
}
$stmt="UPDATE vicidial_agent_log set dispo_sec='$dispo_sec',status='$dispo_choice',uniqueid='$uniqueid' $dispo_epochSQL $lead_id_commentsSQL where agent_log_id='$agent_log_id';";
$stmt="UPDATE vicidial_agent_log set dispo_sec='$dispo_sec',status='$log_dispo_choice',uniqueid='$uniqueid' $dispo_epochSQL $lead_id_commentsSQL where agent_log_id='$agent_log_id';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00151',$user,$server_ip,$session_name,$one_mysql_log);}
@@ -5859,7 +5939,7 @@ if ($ACTION == 'updateDISPO')
$comments = eregi_replace("'",'',$comments);
$comments = eregi_replace(';','',$comments);
$comments = eregi_replace("\\\\",' ',$comments);
$stmt="INSERT INTO vicidial_callbacks (lead_id,list_id,campaign_id,status,entry_time,callback_time,user,recipient,comments,user_group) values('$lead_id','$list_id','$campaign','ACTIVE','$NOW_TIME','$CallBackDatETimE','$user','$recipient','$comments','$user_group');";
$stmt="INSERT INTO vicidial_callbacks (lead_id,list_id,campaign_id,status,entry_time,callback_time,user,recipient,comments,user_group,lead_status) values('$lead_id','$list_id','$campaign','ACTIVE','$NOW_TIME','$CallBackDatETimE','$user','$recipient','$comments','$user_group','$CallBackLeadStatus');";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00154',$user,$server_ip,$session_name,$one_mysql_log);}
@@ -6391,7 +6471,7 @@ if ($ACTION == 'updateDISPO')
if (strlen($stage) < 2)
{$stage = $campaign;}
$stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtime',call_id='$MDnextCID',queue='$stage',agent='Agent/$user',verb='CALLSTATUS',data1='$dispo_choice',serverid='$queuemetrics_log_id';";
$stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtime',call_id='$MDnextCID',queue='$stage',agent='Agent/$user',verb='CALLSTATUS',data1='$log_dispo_choice',serverid='$queuemetrics_log_id';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_query($stmt, $linkB);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$linkB,$mel,$stmt,'00160',$user,$server_ip,$session_name,$one_mysql_log);}
+42 -19
View File
@@ -332,10 +332,11 @@
# 110112-1254 - Added options.php option for focus/blur/enter functions
# 110129-1050 - Changed to XHTML compliant formatting, issue #444
# 110208-1202 - Made scheduled callbacks notice move when on script/form tabs
# 110212-2206 - Added scheduled callback custom statuses compatibility
#
$version = '2.4-309';
$build = '110208-1202';
$version = '2.4-310';
$build = '110212-2206';
$mel=1; # Mysql Error Log enabled = 1
$mysql_log_count=69;
$one_mysql_log=0;
@@ -1224,8 +1225,10 @@ else
else {$selectableSQL = "selectable='Y' and";}
$VARstatuses='';
$VARstatusnames='';
$VARCBstatuses='';
$VARCBstatusesLIST='';
##### grab the statuses that can be used for dispositioning by an agent
$stmt="SELECT status,status_name FROM vicidial_statuses WHERE $selectableSQL status != 'NEW' order by status limit 300;";
$stmt="SELECT status,status_name,scheduled_callback FROM vicidial_statuses WHERE $selectableSQL status != 'NEW' order by status limit 300;";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01010',$VD_login,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
@@ -1236,13 +1239,17 @@ else
$row=mysql_fetch_row($rslt);
$statuses[$i] =$row[0];
$status_names[$i] =$row[1];
$CBstatuses[$i] =$row[2];
$VARstatuses = "$VARstatuses'$statuses[$i]',";
$VARstatusnames = "$VARstatusnames'$status_names[$i]',";
$VARCBstatuses = "$VARCBstatuses'$CBstatuses[$i]',";
if ($CBstatuses[$i] == 'Y')
{$VARCBstatusesLIST .= " $statuses[$i]";}
$i++;
}
##### grab the campaign-specific statuses that can be used for dispositioning by an agent
$stmt="SELECT status,status_name FROM vicidial_campaign_statuses WHERE $selectableSQL status != 'NEW' and campaign_id='$VD_campaign' order by status limit 300;";
$stmt="SELECT status,status_name,scheduled_callback FROM vicidial_campaign_statuses WHERE $selectableSQL status != 'NEW' and campaign_id='$VD_campaign' order by status limit 300;";
$rslt=mysql_query($stmt, $link);
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01011',$VD_login,$server_ip,$session_name,$one_mysql_log);}
if ($DB) {echo "$stmt\n";}
@@ -1253,14 +1260,20 @@ else
$row=mysql_fetch_row($rslt);
$statuses[$i] =$row[0];
$status_names[$i] =$row[1];
$CBstatuses[$i] =$row[2];
$VARstatuses = "$VARstatuses'$statuses[$i]',";
$VARstatusnames = "$VARstatusnames'$status_names[$i]',";
$VARCBstatuses = "$VARCBstatuses'$CBstatuses[$i]',";
if ($CBstatuses[$i] == 'Y')
{$VARCBstatusesLIST .= " $statuses[$i]";}
$i++;
$j++;
}
$VD_statuses_ct = ($VD_statuses_ct+$VD_statuses_camp);
$VARstatuses = substr("$VARstatuses", 0, -1);
$VARstatusnames = substr("$VARstatusnames", 0, -1);
$VARstatuses = substr("$VARstatuses", 0, -1);
$VARstatusnames = substr("$VARstatusnames", 0, -1);
$VARCBstatuses = substr("$VARCBstatuses", 0, -1);
$VARCBstatusesLIST .= " ";
##### grab the campaign-specific HotKey statuses that can be used for dispositioning by an agent
$stmt="SELECT hotkey,status,status_name FROM vicidial_campaign_hotkeys WHERE selectable='Y' and status != 'NEW' and campaign_id='$VD_campaign' order by hotkey limit 9;";
@@ -2787,6 +2800,7 @@ $CCAL_OUT .= "</table>";
var CallBackDatETimE = '';
var CallBackrecipient = '';
var CallBackCommenTs = '';
var CallBackLeadStatus = '';
var scheduled_callbacks = '<?php echo $scheduled_callbacks ?>';
var dispo_check_all_pause = '<?php echo $dispo_check_all_pause ?>';
var api_check_all_pause = '<?php echo $api_check_all_pause ?>';
@@ -2809,6 +2823,8 @@ $CCAL_OUT .= "</table>";
var VD_preset_names_ct = '<?php echo $VD_preset_names_ct ?>';
VARstatuses = new Array(<?php echo $VARstatuses ?>);
VARstatusnames = new Array(<?php echo $VARstatusnames ?>);
VARCBstatuses = new Array(<?php echo $VARCBstatuses ?>);
var VARCBstatusesLIST = '<?php echo $VARCBstatusesLIST ?>';
var VD_statuses_ct = '<?php echo $VD_statuses_ct ?>';
VARingroups = new Array(<?php echo $VARingroups ?>);
var INgroupCOUNT = '<?php echo $INgrpCT ?>';
@@ -6032,7 +6048,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
document.getElementById("WebFormSpanTwo").innerHTML = "<a href=\"" + TEMP_VDIC_web_form_address_two + "\" target=\"" + web_form_target + "\" onMouseOver=\"WebFormTwoRefresH();\"><img src=\"./images/vdc_LB_webform_two.gif\" border=\"0\" alt=\"Web Form 2\" /></a>\n";
}
if (LeaDPreVDispO == 'CALLBK')
if (CBentry_time.length > 2)
{
document.getElementById("CusTInfOSpaN").innerHTML = " <b> PREVIOUS CALLBACK </b>";
document.getElementById("CusTInfOSpaN").style.background = CusTCB_bgcolor;
@@ -6912,7 +6928,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
document.getElementById("MainStatuSSpan").innerHTML = " Incoming: " + dial_display_number + " " + custom_call_id + " UID: " + CIDcheck + " &nbsp; " + VDIC_fronter;
if (LeaDPreVDispO == 'CALLBK')
if (CBentry_time.length > 2)
{
document.getElementById("CusTInfOSpaN").innerHTML = " <b> PREVIOUS CALLBACK </b>";
document.getElementById("CusTInfOSpaN").style.background = CusTCB_bgcolor;
@@ -7794,18 +7810,23 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
}
HidEGenDerPulldown();
AgentDispoing = 1;
var CBflag = '';
var VD_statuses_ct_half = parseInt(VD_statuses_ct / 2);
var dispo_HTML = "<table cellpadding=\"5\" cellspacing=\"5\" width=\"500px\"><tr><td colspan=\"2\"><b> CALL DISPOSITION</b></td></tr><tr><td bgcolor=\"#99FF99\" height=\"300px\" width=\"240px\" valign=\"top\"><font class=\"log_text\"><span id=\"DispoSelectA\">";
var loop_ct = 0;
while (loop_ct < VD_statuses_ct)
{
if (VARCBstatuses[loop_ct] == 'Y')
{CBflag = '*';}
else
{CBflag = '';}
if (taskDSgrp == VARstatuses[loop_ct])
{
dispo_HTML = dispo_HTML + "<font size=\"3\" style=\"BACKGROUND-COLOR: #FFFFCC\"><b><a href=\"#\" onclick=\"DispoSelect_submit();return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a></b></font><br /><br />";
dispo_HTML = dispo_HTML + "<font size=\"3\" style=\"BACKGROUND-COLOR: #FFFFCC\"><b><a href=\"#\" onclick=\"DispoSelect_submit();return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a> " + CBflag + "</b></font><br /><br />";
}
else
{
dispo_HTML = dispo_HTML + "<a href=\"#\" onclick=\"DispoSelectContent_create('" + VARstatuses[loop_ct] + "','ADD');return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a><br /><br />";
dispo_HTML = dispo_HTML + "<a href=\"#\" onclick=\"DispoSelectContent_create('" + VARstatuses[loop_ct] + "','ADD');return false;\">" + VARstatuses[loop_ct] + " - " + VARstatusnames[loop_ct] + "</a> " + CBflag + "<br /><br />";
}
if (loop_ct == VD_statuses_ct_half)
{dispo_HTML = dispo_HTML + "</span></font></td><td bgcolor=\"#99FF99\" height=\"300px\" width=\"240px\" valign=\"top\"><font class=\"log_text\"><span id=\"DispoSelectB\">";}
@@ -8055,8 +8076,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
{
document.getElementById("CusTInfOSpaN").innerHTML = "";
document.getElementById("CusTInfOSpaN").style.background = panel_bgcolor;
if ( (DispoChoice == 'CALLBK') && (scheduled_callbacks > 0) ) {showDiv('CallBackSelectBox');}
var regCBstatus = new RegExp(' ' + DispoChoice + ' ',"ig");
if ( (VARCBstatusesLIST.match(regCBstatus)) && (DispoChoice.length > 0) && (scheduled_callbacks > 0) && (DispoChoice != 'CBHOLD') ) {showDiv('CallBackSelectBox');}
else
{
var xmlhttp=false;
@@ -8080,7 +8101,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
}
if (xmlhttp)
{
DSupdate_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=updateDISPO&format=text&user=" + user + "&pass=" + pass + "&dispo_choice=" + DispoChoice + "&lead_id=" + document.vicidial_form.lead_id.value + "&campaign=" + campaign + "&auto_dial_level=" + auto_dial_level + "&agent_log_id=" + agent_log_id + "&CallBackDatETimE=" + CallBackDatETimE + "&list_id=" + document.vicidial_form.list_id.value + "&recipient=" + CallBackrecipient + "&use_internal_dnc=" + use_internal_dnc + "&use_campaign_dnc=" + use_campaign_dnc + "&MDnextCID=" + LasTCID + "&stage=" + group + "&vtiger_callback_id=" + vtiger_callback_id + "&phone_number=" + document.vicidial_form.phone_number.value + "&phone_code=" + document.vicidial_form.phone_code.value + "&dial_method" + dial_method + "&uniqueid=" + document.vicidial_form.uniqueid.value + "&comments=" + CallBackCommenTs + "&custom_field_names=" + custom_field_names;
DSupdate_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=updateDISPO&format=text&user=" + user + "&pass=" + pass + "&dispo_choice=" + DispoChoice + "&lead_id=" + document.vicidial_form.lead_id.value + "&campaign=" + campaign + "&auto_dial_level=" + auto_dial_level + "&agent_log_id=" + agent_log_id + "&CallBackDatETimE=" + CallBackDatETimE + "&list_id=" + document.vicidial_form.list_id.value + "&recipient=" + CallBackrecipient + "&use_internal_dnc=" + use_internal_dnc + "&use_campaign_dnc=" + use_campaign_dnc + "&MDnextCID=" + LasTCID + "&stage=" + group + "&vtiger_callback_id=" + vtiger_callback_id + "&phone_number=" + document.vicidial_form.phone_number.value + "&phone_code=" + document.vicidial_form.phone_code.value + "&dial_method" + dial_method + "&uniqueid=" + document.vicidial_form.uniqueid.value + "&CallBackLeadStatus=" + CallBackLeadStatus + "&comments=" + CallBackCommenTs + "&custom_field_names=" + custom_field_names;
xmlhttp.open('POST', 'vdc_db_query.php');
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
xmlhttp.send(DSupdate_query);
@@ -8187,6 +8208,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
document.getElementById("ManualQueueNotice").innerHTML = '';
APIManualDialQueue_last=0;
document.vicidial_form.FORM_LOADED.value = '0';
CallBackLeadStatus = '';
if (manual_dial_in_progress==1)
{
@@ -8249,13 +8271,13 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
{
LogouT('SHIFT');
}
if (focus_blur_enabled==1)
{
document.inert_form.inert_button.focus();
document.inert_form.inert_button.blur();
}
}
// scroll back to the top of the page
if (focus_blur_enabled==1)
{
document.inert_form.inert_button.focus();
document.inert_form.inert_button.blur();
}
scroll(0,0);
}
}
@@ -10358,6 +10380,7 @@ else
CallBackTimEHouR = document.vicidial_form.CBT_hour.value;
CallBackTimEMinuteS = document.vicidial_form.CBT_minute.value;
CallBackTimEAmpM = document.vicidial_form.CBT_ampm.value;
CallBackLeadStatus = document.vicidial_form.DispoSelection.value;
document.vicidial_form.CBT_hour.value = '01';
document.vicidial_form.CBT_minute.value = '00';
@@ -10397,7 +10420,7 @@ else
document.vicidial_form.CallBackCommenTsField.value = '';
// alert(CallBackDatETimE + "|" + CallBackCommenTs);
document.vicidial_form.DispoSelection.value = 'CBHOLD';
hideDiv('CallBackSelectBox');
DispoSelect_submit();
+101 -48
View File
@@ -2632,12 +2632,13 @@ else
# 110103-1135 - Added queuemetrics_dispo_pause and lead_order_randomize features
# 110111-1305 - Added sort by list name for list listings in list section and campaign screens
# 110124-1134 - Small query fix for large queue_log tables
# 110212-2048 - Added Scheduled Callback as status flag to allow for custom scheduled callback statuses
#
# make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time
$admin_version = '2.4-297';
$build = '110124-1134';
$admin_version = '2.4-298';
$build = '110212-2048';
$STARTtime = date("U");
$SQLdate = date("Y-m-d H:i:s");
@@ -7329,7 +7330,7 @@ if ($ADD==99999)
<B><FONT SIZE=3>VICIDIAL_STATUSES TABLE</FONT></B><BR><BR>
<A NAME="vicidial_statuses">
<BR>
<B>Through the use of system statuses, you can have statuses that exist for campaign and in-group. The Status must be 1-6 characters in length, the description must be 2-30 characters in length and Selectable defines whether it shows up in VICIDIAL as an agent disposition. The human_answered field is used when calculating the drop percentage, or abandon rate. Setting human_answered to Y will use this status when counting the human-answered calls. The Category option allows you to group several statuses into a catogy that can be used for statistical analysis. There are also 5 additional settings that will define the kind of status: sale, dnc, customer contact, not interested, unworkable.</B>
<B>Through the use of system statuses, you can have statuses that exist for campaign and in-group. The Status must be 1-6 characters in length, the description must be 2-30 characters in length and Selectable defines whether it shows up in VICIDIAL as an agent disposition. The human_answered field is used when calculating the drop percentage, or abandon rate. Setting human_answered to Y will use this status when counting the human-answered calls. The Category option allows you to group several statuses into a catogy that can be used for statistical analysis. There are also 5 additional settings that will define the kind of status: sale, dnc, customer contact, not interested, unworkable, scheduled callback.</B>
@@ -10269,7 +10270,7 @@ if ($ADD==20)
$stmtA="INSERT INTO vicidial_campaign_stats (campaign_id) values('$campaign_id');";
$rslt=mysql_query($stmtA, $link);
$stmtA="INSERT INTO vicidial_campaign_statuses (status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable) SELECT status,status_name,selectable,\"$campaign_id\",human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_campaign_statuses where campaign_id='$source_campaign_id';";
$stmtA="INSERT INTO vicidial_campaign_statuses (status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback) SELECT status,status_name,selectable,\"$campaign_id\",human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_campaign_statuses where campaign_id='$source_campaign_id';";
$rslt=mysql_query($stmtA, $link);
$stmtA="INSERT INTO vicidial_campaign_hotkeys (status,hotkey,status_name,selectable,campaign_id) SELECT status,hotkey,status_name,selectable,\"$campaign_id\" from vicidial_campaign_hotkeys where campaign_id='$source_campaign_id';";
@@ -10331,7 +10332,7 @@ if ($ADD==22)
{
echo "<br><B>CAMPAIGN STATUS ADDED: $campaign_id - $status_id</B>\n";
$stmt="INSERT INTO vicidial_campaign_statuses (status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable) values('$status_id','$status_name','$selectable','$campaign_id','$human_answered','$category','$sale','$dnc','$customer_contact','$not_interested','$unworkable');";
$stmt="INSERT INTO vicidial_campaign_statuses (status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback) values('$status_id','$status_name','$selectable','$campaign_id','$human_answered','$category','$sale','$dnc','$customer_contact','$not_interested','$unworkable','$scheduled_callbacks');";
$rslt=mysql_query($stmt, $link);
### LOG INSERTION Admin Log Table ###
@@ -12138,7 +12139,7 @@ if ($ADD==221111111111111)
{
echo "<br><B>SYSTEM STATUS ADDED: $status_name - $status_id</B>\n";
$stmt="INSERT INTO vicidial_statuses (status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable) values('$status_id','$status_name','$selectable','$human_answered','$category','$sale','$dnc','$customer_contact','$not_interested','$unworkable');";
$stmt="INSERT INTO vicidial_statuses (status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback) values('$status_id','$status_name','$selectable','$human_answered','$category','$sale','$dnc','$customer_contact','$not_interested','$unworkable','$scheduled_callbacks');";
$rslt=mysql_query($stmt, $link);
### LOG INSERTION Admin Log Table ###
@@ -13194,7 +13195,7 @@ if ($ADD==42)
{
echo "<br><B>CUSTOM CAMPAIGN STATUS MODIFIED: $campaign_id - $status</B>\n";
$stmt="UPDATE vicidial_campaign_statuses SET status_name='$status_name',selectable='$selectable',human_answered='$human_answered',category='$category',sale='$sale',dnc='$dnc',customer_contact='$customer_contact',not_interested='$not_interested',unworkable='$unworkable' where campaign_id='$campaign_id' and status='$status';";
$stmt="UPDATE vicidial_campaign_statuses SET status_name='$status_name',selectable='$selectable',human_answered='$human_answered',category='$category',sale='$sale',dnc='$dnc',customer_contact='$customer_contact',not_interested='$not_interested',unworkable='$unworkable',scheduled_callback='$scheduled_callbacks' where campaign_id='$campaign_id' and status='$status';";
$rslt=mysql_query($stmt, $link);
### LOG INSERTION Admin Log Table ###
@@ -15465,7 +15466,7 @@ if ($ADD==421111111111111)
{
echo "<br><B>SYSTEM STATUS MODIFIED: $status</B>\n";
$stmt="UPDATE vicidial_statuses SET status_name='$status_name',selectable='$selectable',human_answered='$human_answered',category='$category',sale='$sale',dnc='$dnc',customer_contact='$customer_contact',not_interested='$not_interested',unworkable='$unworkable' where status='$status';";
$stmt="UPDATE vicidial_statuses SET status_name='$status_name',selectable='$selectable',human_answered='$human_answered',category='$category',sale='$sale',dnc='$dnc',customer_contact='$customer_contact',not_interested='$not_interested',unworkable='$unworkable',scheduled_callback='$scheduled_callbacks' where status='$status';";
$rslt=mysql_query($stmt, $link);
### LOG INSERTION Admin Log Table ###
@@ -18445,7 +18446,7 @@ if ($ADD==31)
$QCL_to_print = (count($QClists) -0);
##### get status listings for dynamic pulldown
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_statuses order by status";
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_statuses order by status";
$rslt=mysql_query($stmt, $link);
$statuses_to_print = mysql_num_rows($rslt);
$statuses_list='';
@@ -18489,7 +18490,7 @@ if ($ADD==31)
$o++;
}
$stmt="SELECT status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_campaign_statuses where campaign_id='$campaign_id' order by status";
$stmt="SELECT status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_campaign_statuses where campaign_id='$campaign_id' order by status";
$rslt=mysql_query($stmt, $link);
$Cstatuses_to_print = mysql_num_rows($rslt);
@@ -19563,17 +19564,53 @@ if ($ADD==31)
echo "<center>\n";
echo "<br><b>CUSTOM STATUSES WITHIN THIS CAMPAIGN: &nbsp; $NWB#vicidial_campaign_statuses$NWE</b><br>\n";
echo "<TABLE width=500 cellspacing=3>\n";
echo "<tr><td>STATUS</td><td>DESCRIPTION</td><td>SELECTABLE</td><td>HUMAN ANSWER</td><td>CATEGORY</td><td>MODIFY-DELETE</td></tr>\n";
$stmt="SELECT status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_campaign_statuses where campaign_id='$campaign_id' order by status";
echo "<TABLE width=700 cellspacing=3>\n";
echo "<tr><td align=center valign=bottom><font size=2><b>S<br>T<br>A<br>T<br>U<br>S</td>\n";
echo "<td align=center valign=bottom><font size=2><b>DESCRIPTION</td>\n";
echo "<td align=center valign=bottom><font size=2><b>CATEGORY</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#ccffff\"><font size=2><b><br>A<br>G<br>E<br>N<br>T<br>&nbsp;<BR>S<br>E<br>L<br>E<br>C<br>T<br>A<br>B<br>L<br>E</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#99ffcc\"><font size=2><b>H<br>U<br>M<br>A<br>N<br>&nbsp;<BR>A<br>N<br>S<br>W<br>E<br>R</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#ccffff\"><font size=2><b>S<br>A<br>L<br>E</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#99ffcc\"><font size=2><b>D<br>N<br>C</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#ccffff\"><font size=2><b>C<br>U<br>S<br>T<br>O<br>M<br>E<br>R<br>&nbsp;<br>C<br>O<br>N<br>T<br>A<br>C<br>T</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#99ffcc\"><font size=2><b>N<br>O<br>T<br>&nbsp;<br>I<br>N<br>T<br>E<br>R<br>E<br>S<br>T<br>E<br>D</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#ccffff\"><font size=2><b>U<br>N<br>W<br>O<br>R<br>K<br>A<br>B<br>L<br>E</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#99ffcc\"><font size=2><b>S<br>C<br>H<br>E<br>D<br>U<br>L<br>E<br>D<br>&nbsp;<br>C<br>A<br>L<br>L<br>B<br>A<br>C<br>K</td>\n";
echo "<td align=center valign=bottom><font size=2><b>MODIFY/DELETE</td></tr>\n";
##### get status category listings for dynamic pulldown
$stmt="SELECT vsc_id,vsc_name from vicidial_status_categories order by vsc_id desc";
$rslt=mysql_query($stmt, $link);
$cats_to_print = mysql_num_rows($rslt);
$cats_list="";
$o=0;
while ($cats_to_print > $o)
{
$rowx=mysql_fetch_row($rslt);
$cats_list .= "<option value=\"$rowx[0]\">$rowx[0] - " . substr($rowx[1],0,20) . "</option>\n";
$catsname_list["$rowx[0]"] = substr($rowx[1],0,20);
$o++;
}
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_campaign_statuses where campaign_id='$campaign_id' order by status;";
$rslt=mysql_query($stmt, $link);
$statuses_to_print = mysql_num_rows($rslt);
$o=0;
while ($statuses_to_print > $o)
{
$rowx=mysql_fetch_row($rslt);
$AScategory = $rowx[5];
$AScategory = $rowx[4];
$o++;
if (eregi("1$|3$|5$|7$|9$", $o))
@@ -19588,30 +19625,37 @@ if ($ADD==31)
echo "<input type=hidden name=campaign_id value=\"$campaign_id\">\n";
echo "<font size=2><B>$rowx[0]</B></td>\n";
echo "<td><input type=text name=status_name size=20 maxlength=30 value=\"$rowx[1]\"></td>\n";
echo "<td><select size=1 name=selectable><option>Y</option><option>N</option><option selected>$rowx[2]</option></select></td>\n";
echo "<td><select size=1 name=human_answered><option>Y</option><option>N</option><option selected>$rowx[4]</option></select></td>\n";
echo "<td>\n";
echo "<select size=1 name=category>\n";
echo "$cats_list";
echo "<option selected value=\"$AScategory\">$AScategory - $catsname_list[$AScategory]</option>\n";
echo "</select>\n";
echo "</td>\n";
echo "<td align=center nowrap><font size=1><input type=submit name=submit value=MODIFY> &nbsp; &nbsp; &nbsp; &nbsp; \n";
echo "\n";
echo "</td><td bgcolor=\"#ccffff\"><select size=1 name=selectable><option>Y</option><option>N</option><option selected>$rowx[2]</option></select>\n";
echo "</td><td bgcolor=\"#99ffcc\"><select size=1 name=human_answered><option>Y</option><option>N</option><option selected>$rowx[3]</option></select>\n";
echo "</td><td bgcolor=\"#ccffff\"><select size=1 name=sale><option>Y</option><option>N</option><option selected>$rowx[5]</option></select>\n";
echo "</td><td bgcolor=\"#99ffcc\"><select size=1 name=dnc><option>Y</option><option>N</option><option selected>$rowx[6]</option></select>\n";
echo "</td><td bgcolor=\"#ccffff\"><select size=1 name=customer_contact><option>Y</option><option>N</option><option selected>$rowx[7]</option></select>\n";
echo "</td><td bgcolor=\"#99ffcc\"><select size=1 name=not_interested><option>Y</option><option>N</option><option selected>$rowx[8]</option></select>\n";
echo "</td><td bgcolor=\"#ccffff\"><select size=1 name=unworkable><option>Y</option><option>N</option><option selected>$rowx[9]</option></select>\n";
echo "</td><td bgcolor=\"#99ffcc\"><select size=1 name=scheduled_callbacks><option>Y</option><option>N</option><option selected>$rowx[10]</option></select>\n";
echo "</td><td align=center nowrap><font size=1><input type=submit name=submit value=MODIFY> &nbsp; &nbsp; &nbsp; &nbsp; \n";
echo " &nbsp; \n";
echo "<a href=\"$PHP_SELF?ADD=42&campaign_id=$campaign_id&status=$rowx[0]&stage=delete\">DELETE</a>\n";
echo "</td></tr><tr $bgcolor><td colspan=6 align=center><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>\n";
echo "&nbsp; Sale: <select size=1 name=sale><option>Y</option><option>N</option><option selected>$rowx[6]</option></select> &nbsp; \n";
echo "&nbsp; DNC: <select size=1 name=dnc><option>Y</option><option>N</option><option selected>$rowx[7]</option></select> &nbsp; \n";
echo "&nbsp; Customer Contact: <select size=1 name=customer_contact><option>Y</option><option>N</option><option selected>$rowx[8]</option></select> &nbsp; \n";
echo "&nbsp; Not Interested: <select size=1 name=not_interested><option>Y</option><option>N</option><option selected>$rowx[9]</option></select> &nbsp; \n";
echo "&nbsp; Unworkable: <select size=1 name=unworkable><option>Y</option><option>N</option><option selected>$rowx[10]</option></select> &nbsp; \n";
if (preg_match("/^B$|^NA$|^DNC$|^NA$|^DROP$|^INCALL$|^QUEUE$|^NEW$/i",$rowx[0]))
{
echo "<DEL>DELETE</DEL>\n";
}
else
{
echo "<a href=\"$PHP_SELF?ADD=42&campaign_id=$campaign_id&status=$rowx[0]&stage=delete\">DELETE</a>\n";
}
echo "</form></td></tr>\n";
}
echo "</table>\n";
echo "<br>ADD NEW CUSTOM CAMPAIGN STATUS<BR><form action=$PHP_SELF method=POST>\n";
echo "<input type=hidden name=ADD value=22>\n";
echo "<input type=hidden name=campaign_id value=\"$campaign_id\">\n";
@@ -19624,6 +19668,7 @@ if ($ADD==31)
echo "Customer Contact: <select size=1 name=customer_contact><option>Y</option><option SELECTED>N</option></select> &nbsp; <BR>\n";
echo "Not Interested: <select size=1 name=not_interested><option>Y</option><option SELECTED>N</option></select> &nbsp; \n";
echo "Unworkable: <select size=1 name=unworkable><option>Y</option><option SELECTED>N</option></select> &nbsp; \n";
echo "Callback: <select size=1 name=scheduled_callbacks><option>Y</option><option SELECTED>N</option></select> &nbsp; \n";
echo "Category: \n";
echo "<select size=1 name=category>\n";
echo "$cats_list";
@@ -20130,7 +20175,7 @@ if ($ADD==34)
else
{$DEFlistDISABLE = 'disabled'; $DEFstatusDISABLED=1;}
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_statuses order by status";
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_statuses order by status";
$rslt=mysql_query($stmt, $link);
$statuses_to_print = mysql_num_rows($rslt);
$statuses_list='';
@@ -20148,7 +20193,7 @@ if ($ADD==34)
$o++;
}
$stmt="SELECT status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_campaign_statuses where campaign_id='$campaign_id' order by status";
$stmt="SELECT status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_campaign_statuses where campaign_id='$campaign_id' order by status";
$rslt=mysql_query($stmt, $link);
$Cstatuses_to_print = mysql_num_rows($rslt);
@@ -21493,7 +21538,7 @@ if ($ADD==311)
$web_form_address_two = $row[18];
# grab names of global statuses and statuses in the selected campaign
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_statuses order by status";
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_statuses order by status";
$rslt=mysql_query($stmt, $link);
$statuses_to_print = mysql_num_rows($rslt);
@@ -21505,7 +21550,7 @@ if ($ADD==311)
$o++;
}
$stmt="SELECT status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_campaign_statuses where campaign_id='$campaign_id' order by status";
$stmt="SELECT status,status_name,selectable,campaign_id,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_campaign_statuses where campaign_id='$campaign_id' order by status";
$rslt=mysql_query($stmt, $link);
$Cstatuses_to_print = mysql_num_rows($rslt);
@@ -22600,7 +22645,7 @@ if ($ADD==3111)
$qc_statuses = preg_replace("/^ | -$/","",$qc_statuses);
$QCstatuses = explode(" ", $qc_statuses);
$QCs_to_print = (count($QCstatuses) -0);
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_statuses where status NOT IN('QUEUE','INCALL') order by status";
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_statuses where status NOT IN('QUEUE','INCALL') order by status";
$rslt=mysql_query($stmt, $link);
$statuses_to_print = mysql_num_rows($rslt);
$qc_statuses_list='';
@@ -26217,7 +26262,18 @@ if ($ADD==321111111111111)
echo "<br><center>\n";
echo "<b>VICIDIAL STATUSES WITHIN THIS SYSTEM: &nbsp; $NWB#vicidial_statuses$NWE</b><br>\n";
echo "<TABLE width=700 cellspacing=3>\n";
echo "<tr><td>STATUS</td><td>DESCRIPTION</td><td>SELECT-<BR>ABLE</td><td>HUMAN<BR>ANSWER</td><td>CATEGORY</td><td>MODIFY/DELETE</td></tr>\n";
echo "<tr><td align=center valign=bottom><font size=2><b>S<br>T<br>A<br>T<br>U<br>S</td>\n";
echo "<td align=center valign=bottom><font size=2><b>DESCRIPTION</td>\n";
echo "<td align=center valign=bottom><font size=2><b>CATEGORY</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#ccffff\"><font size=2><b><br>A<br>G<br>E<br>N<br>T<br>&nbsp;<BR>S<br>E<br>L<br>E<br>C<br>T<br>A<br>B<br>L<br>E</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#99ffcc\"><font size=2><b>H<br>U<br>M<br>A<br>N<br>&nbsp;<BR>A<br>N<br>S<br>W<br>E<br>R</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#ccffff\"><font size=2><b>S<br>A<br>L<br>E</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#99ffcc\"><font size=2><b>D<br>N<br>C</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#ccffff\"><font size=2><b>C<br>U<br>S<br>T<br>O<br>M<br>E<br>R<br>&nbsp;<br>C<br>O<br>N<br>T<br>A<br>C<br>T</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#99ffcc\"><font size=2><b>N<br>O<br>T<br>&nbsp;<br>I<br>N<br>T<br>E<br>R<br>E<br>S<br>T<br>E<br>D</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#ccffff\"><font size=2><b>U<br>N<br>W<br>O<br>R<br>K<br>A<br>B<br>L<br>E</td>\n";
echo "<td align=center valign=bottom bgcolor=\"#99ffcc\"><font size=2><b>S<br>C<br>H<br>E<br>D<br>U<br>L<br>E<br>D<br>&nbsp;<br>C<br>A<br>L<br>L<br>B<br>A<br>C<br>K</td>\n";
echo "<td align=center valign=bottom><font size=2><b>MODIFY/DELETE</td></tr>\n";
##### get status category listings for dynamic pulldown
$stmt="SELECT vsc_id,vsc_name from vicidial_status_categories order by vsc_id desc";
@@ -26234,8 +26290,7 @@ if ($ADD==321111111111111)
$o++;
}
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable from vicidial_statuses order by status;";
$stmt="SELECT status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback from vicidial_statuses order by status;";
$rslt=mysql_query($stmt, $link);
$statuses_to_print = mysql_num_rows($rslt);
$o=0;
@@ -26256,15 +26311,21 @@ if ($ADD==321111111111111)
echo "<input type=hidden name=status value=\"$rowx[0]\">\n";
echo "<font size=2><B>$rowx[0]</B></td>\n";
echo "<td><input type=text name=status_name size=20 maxlength=30 value=\"$rowx[1]\"></td>\n";
echo "<td><select size=1 name=selectable><option>Y</option><option>N</option><option selected>$rowx[2]</option></select></td>\n";
echo "<td><select size=1 name=human_answered><option>Y</option><option>N</option><option selected>$rowx[3]</option></select></td>\n";
echo "<td>\n";
echo "<select size=1 name=category>\n";
echo "$cats_list";
echo "<option selected value=\"$AScategory\">$AScategory - $catsname_list[$AScategory]</option>\n";
echo "</select>\n";
echo "</td>\n";
echo "<td align=center nowrap><font size=1><input type=submit name=submit value=MODIFY> &nbsp; &nbsp; &nbsp; &nbsp; \n";
echo "\n";
echo "</td><td bgcolor=\"#ccffff\"><select size=1 name=selectable><option>Y</option><option>N</option><option selected>$rowx[2]</option></select>\n";
echo "</td><td bgcolor=\"#99ffcc\"><select size=1 name=human_answered><option>Y</option><option>N</option><option selected>$rowx[3]</option></select>\n";
echo "</td><td bgcolor=\"#ccffff\"><select size=1 name=sale><option>Y</option><option>N</option><option selected>$rowx[5]</option></select>\n";
echo "</td><td bgcolor=\"#99ffcc\"><select size=1 name=dnc><option>Y</option><option>N</option><option selected>$rowx[6]</option></select>\n";
echo "</td><td bgcolor=\"#ccffff\"><select size=1 name=customer_contact><option>Y</option><option>N</option><option selected>$rowx[7]</option></select>\n";
echo "</td><td bgcolor=\"#99ffcc\"><select size=1 name=not_interested><option>Y</option><option>N</option><option selected>$rowx[8]</option></select>\n";
echo "</td><td bgcolor=\"#ccffff\"><select size=1 name=unworkable><option>Y</option><option>N</option><option selected>$rowx[9]</option></select>\n";
echo "</td><td bgcolor=\"#99ffcc\"><select size=1 name=scheduled_callbacks><option>Y</option><option>N</option><option selected>$rowx[10]</option></select>\n";
echo "</td><td align=center nowrap><font size=1><input type=submit name=submit value=MODIFY> &nbsp; &nbsp; &nbsp; &nbsp; \n";
echo " &nbsp; \n";
if (preg_match("/^B$|^NA$|^DNC$|^NA$|^DROP$|^INCALL$|^QUEUE$|^NEW$/i",$rowx[0]))
@@ -26275,15 +26336,6 @@ if ($ADD==321111111111111)
{
echo "<a href=\"$PHP_SELF?ADD=421111111111111&status=$rowx[0]&stage=delete\">DELETE</a>\n";
}
echo "</td></tr><tr $bgcolor><td colspan=6 align=center><FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>\n";
echo "&nbsp; Sale: <select size=1 name=sale><option>Y</option><option>N</option><option selected>$rowx[5]</option></select> &nbsp; \n";
echo "&nbsp; DNC: <select size=1 name=dnc><option>Y</option><option>N</option><option selected>$rowx[6]</option></select> &nbsp; \n";
echo "&nbsp; Customer Contact: <select size=1 name=customer_contact><option>Y</option><option>N</option><option selected>$rowx[7]</option></select> &nbsp; \n";
echo "&nbsp; Not Interested: <select size=1 name=not_interested><option>Y</option><option>N</option><option selected>$rowx[8]</option></select> &nbsp; \n";
echo "&nbsp; Unworkable: <select size=1 name=unworkable><option>Y</option><option>N</option><option selected>$rowx[9]</option></select> &nbsp; \n";
echo "</form></td></tr>\n";
}
@@ -26300,6 +26352,7 @@ if ($ADD==321111111111111)
echo "Customer Contact: <select size=1 name=customer_contact><option>Y</option><option SELECTED>N</option></select> &nbsp; <BR>\n";
echo "Not Interested: <select size=1 name=not_interested><option>Y</option><option SELECTED>N</option></select> &nbsp; \n";
echo "Unworkable: <select size=1 name=unworkable><option>Y</option><option SELECTED>N</option></select> &nbsp; \n";
echo "Callback: <select size=1 name=scheduled_callbacks><option>Y</option><option SELECTED>N</option></select> &nbsp; \n";
echo "Category: \n";
echo "<select size=1 name=category>\n";
echo "$cats_list";
@@ -8,7 +8,7 @@
# just needs to enter the leadID and then they can view and modify the
# information in the record for that lead
#
# Copyright (C) 2010 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
# Copyright (C) 2011 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
# CHANGES
#
@@ -40,6 +40,7 @@
# 100712-1416 - Added entry_list_id field to vicidial_list to preserve link to custom fields if any
# 100924-1431 - Added Called Count display
# 101127-1610 - Added ability to set a scheduled callback date and time
# 110212-2041 - Added compatibility with definable scheduled callback statuses
#
require("dbconnect.php");
@@ -147,6 +148,8 @@ if (isset($_POST["appointment_date"])) {$appointment_date=$_POST["appointment_
elseif (isset($_GET["appointment_date"])) {$appointment_date=$_GET["appointment_date"];}
if (isset($_POST["appointment_time"])) {$appointment_time=$_POST["appointment_time"];}
elseif (isset($_GET["appointment_time"])) {$appointment_time=$_GET["appointment_time"];}
if (isset($_GET["CBstatus"])) {$CBstatus=$_GET["CBstatus"];}
elseif (isset($_POST["CBstatus"])) {$CBstatus=$_POST["CBstatus"];}
$PHP_AUTH_USER = ereg_replace("[^-_0-9a-zA-Z]","",$PHP_AUTH_USER);
$PHP_AUTH_PW = ereg_replace("[^-_0-9a-zA-Z]","",$PHP_AUTH_PW);
@@ -279,6 +282,26 @@ if (strlen($row[16])>0) {$label_security_phrase = $row[16];}
if (strlen($row[17])>0) {$label_email = $row[17];}
if (strlen($row[18])>0) {$label_comments = $row[18];}
### find out if status(dispo) is a scheduled callback status
$scheduled_callback='';
$stmt="SELECT scheduled_callback from vicidial_statuses where status='$dispo';";
$rslt=mysql_query($stmt, $link);
$scb_count_to_print = mysql_num_rows($rslt);
if ($scb_count_to_print > 0)
{
$row=mysql_fetch_row($rslt);
if (strlen($row[0])>0) {$scheduled_callback = $row[0];}
}
$stmt="SELECT scheduled_callback from vicidial_campaign_statuses where status='$dispo';";
$rslt=mysql_query($stmt, $link);
$scb_count_to_print = mysql_num_rows($rslt);
if ($scb_count_to_print > 0)
{
$row=mysql_fetch_row($rslt);
if (strlen($row[0])>0) {$scheduled_callback = $row[0];}
}
?>
<html>
<head>
@@ -320,7 +343,7 @@ if ($end_call > 0)
echo "<BR>vicidial_callback record inactivated: $lead_id<BR>\n";
}
if ( ($dispo != $status) and ($dispo == 'CALLBK') )
if ( ($dispo != $status) and ( ($dispo == 'CALLBK') or ($scheduled_callback == 'Y') ) )
{
### inactivate vicidial_callbacks record for this lead
$stmt="UPDATE vicidial_callbacks set status='INACTIVE' where lead_id='" . mysql_real_escape_string($lead_id) . "' and status IN('ACTIVE','LIVE');";
@@ -432,11 +455,11 @@ else
if ($CBchangeDATE == 'YES')
{
### change date/time of vicidial_callbacks record for this lead
$stmt="UPDATE vicidial_callbacks set callback_time='" . mysql_real_escape_string($appointment_date) . " " . mysql_real_escape_string($appointment_time) . "',comments='" . mysql_real_escape_string($comments) . "' where callback_id='" . mysql_real_escape_string($callback_id) . "';";
$stmt="UPDATE vicidial_callbacks set callback_time='" . mysql_real_escape_string($appointment_date) . " " . mysql_real_escape_string($appointment_time) . "',comments='" . mysql_real_escape_string($comments) . "',lead_status='" . mysql_real_escape_string($CBstatus) . "' where callback_id='" . mysql_real_escape_string($callback_id) . "';";
if ($DB) {echo "|$stmt|\n";}
$rslt=mysql_query($stmt, $link);
echo "<BR>vicidial_callback record changed to $appointment_date $appointment_time<BR>\n";
echo "<BR>vicidial_callback record changed to $appointment_date $appointment_time $CBstatus<BR>\n";
}
@@ -666,6 +689,24 @@ else
echo "<tr><td align=right>$label_comments : </td><td align=left><TEXTAREA name=comments ROWS=3 COLS=65>$comments</TEXTAREA></td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right>Disposition: </td><td align=left><select size=1 name=status>\n";
### find out if status(dispo) is a scheduled callback status
$scheduled_callback='';
$stmt="SELECT scheduled_callback from vicidial_statuses where status='$dispo';";
$rslt=mysql_query($stmt, $link);
$scb_count_to_print = mysql_num_rows($rslt);
if ($scb_count_to_print > 0)
{
$row=mysql_fetch_row($rslt);
if (strlen($row[0])>0) {$scheduled_callback = $row[0];}
}
$stmt="SELECT scheduled_callback from vicidial_campaign_statuses where status='$dispo';";
$rslt=mysql_query($stmt, $link);
$scb_count_to_print = mysql_num_rows($rslt);
if ($scb_count_to_print > 0)
{
$row=mysql_fetch_row($rslt);
if (strlen($row[0])>0) {$scheduled_callback = $row[0];}
}
$list_campaign='';
$stmt="SELECT campaign_id from vicidial_lists where list_id='$list_id'";
@@ -734,10 +775,10 @@ else
echo "<TABLE BGCOLOR=#B6D3FC WIDTH=750><TR><TD>\n";
echo "Callback Details:<BR><CENTER>\n";
if ( ($dispo == 'CALLBK') or ($dispo == 'CBHOLD') )
if ( ($dispo == 'CALLBK') or ($dispo == 'CBHOLD') or ($scheduled_callback == 'Y') )
{
### find any vicidial_callback records for this lead
$stmt="select callback_id,lead_id,list_id,campaign_id,status,entry_time,callback_time,modify_date,user,recipient,comments,user_group from vicidial_callbacks where lead_id='" . mysql_real_escape_string($lead_id) . "' and status IN('ACTIVE','LIVE') order by callback_id desc LIMIT 1;";
$stmt="select callback_id,lead_id,list_id,campaign_id,status,entry_time,callback_time,modify_date,user,recipient,comments,user_group,lead_status from vicidial_callbacks where lead_id='" . mysql_real_escape_string($lead_id) . "' and status IN('ACTIVE','LIVE') order by callback_id desc LIMIT 1;";
if ($DB) {echo "|$stmt|\n";}
$rslt=mysql_query($stmt, $link);
$CB_to_print = mysql_num_rows($rslt);
@@ -772,7 +813,9 @@ else
echo "New Callback Owner UserID: <input type=text name=CBuser size=8 maxlength=10 value=\"$rowx[8]\"> \n";
echo "<input type=submit name=submit value=\"CHANGE TO USERONLY CALLBACK\"></form><BR>\n";
}
$callback_id = $rowx[0];
$CBcomments = $rowx[10];
$lead_status = $rowx[12];
$appointment_datetimeARRAY = explode(" ",$rowx[6]);
$appointment_date = $appointment_datetimeARRAY[0];
$appointment_timeARRAY = explode(":",$appointment_datetimeARRAY[1]);
@@ -780,6 +823,43 @@ else
$appointment_min = $appointment_timeARRAY[1];
$stmt="SELECT status,status_name from vicidial_statuses where scheduled_callback='Y' and selectable='Y' and status NOT IN('CBHOLD') order by status";
$rslt=mysql_query($stmt, $link);
$statuses_to_print = mysql_num_rows($rslt);
$statuses_list='';
$o=0;
$DS=0;
while ($statuses_to_print > $o)
{
$rowx=mysql_fetch_row($rslt);
if ( (strlen($lead_status) == strlen($rowx[0])) and (eregi($lead_status,$rowx[0])) )
{$statuses_list .= "<option SELECTED value=\"$rowx[0]\">$rowx[0] - $rowx[1]</option>\n"; $DS++;}
else
{$statuses_list .= "<option value=\"$rowx[0]\">$rowx[0] - $rowx[1]</option>\n";}
$o++;
}
$stmt="SELECT status,status_name from vicidial_campaign_statuses where scheduled_callback='Y' and selectable='Y' and status NOT IN('CBHOLD') and campaign_id='$list_campaign' order by status";
$rslt=mysql_query($stmt, $link);
$CAMPstatuses_to_print = mysql_num_rows($rslt);
$o=0;
$CBhold_set=0;
while ($CAMPstatuses_to_print > $o)
{
$rowx=mysql_fetch_row($rslt);
if ( (strlen($lead_status) == strlen($rowx[0])) and (eregi($lead_status,$rowx[0])) )
{$statuses_list .= "<option SELECTED value=\"$rowx[0]\">$rowx[0] - $rowx[1]</option>\n"; $DS++;}
else
{$statuses_list .= "<option value=\"$rowx[0]\">$rowx[0] - $rowx[1]</option>\n";}
$o++;
}
if ($DS < 1)
{$statuses_list .= "<option SELECTED value=\"$lead_status\">$lead_status</option>\n";}
?>
<FORM METHOD=POST NAME=vsn ID=vsn ACTION="<?php echo $PHP_SELF ?>">
@@ -790,7 +870,7 @@ else
<input type=hidden name=DB id=DB value=<?php echo $DB ?>>
<input type=hidden name=CBchangeDATE value="YES">
<input type=hidden name=lead_id id=lead_id value="<?php echo $lead_id ?>">
<input type=hidden name=callback_id value="<?php echo $rowx[0] ?>">
<input type=hidden name=callback_id value="<?php echo $callback_id ?>">
<TR BGCOLOR="#E6E6E6">
<TD ALIGN=RIGHT><FONT FACE="ARIAL,HELVETICA">CallBack Date/Time: </TD><TD ALIGN=LEFT><input type=text name=appointment_date id=appointment_date size=10 maxlength=10 value="<?php echo $appointment_date ?>">
@@ -854,9 +934,17 @@ else
</TR>
<TR BGCOLOR="#E6E6E6">
<TD align=center colspan=2>
Comments:
<FONT FACE="ARIAL,HELVETICA">Callback Disposition: <select size=1 name=CBstatus>\n";
<?php echo "$statuses_list"; ?>
</select>
</TD>
</TR>
<TEXTAREA name=comments ROWS=3 COLS=65><?php echo $rowx[10] ?></TEXTAREA>
<TR BGCOLOR="#E6E6E6">
<TD align=center colspan=2>
<FONT FACE="ARIAL,HELVETICA">Comments:
<TEXTAREA name=comments ROWS=3 COLS=65><?php echo $CBcomments ?></TEXTAREA>
</TD>
</TR>