diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE index 89265919..9ac2548b 100644 --- a/agc_2-X/trunk/UPGRADE +++ b/agc_2-X/trunk/UPGRADE @@ -59,6 +59,10 @@ NOTE: Upgrading from 1.1.12-3 to 2.0.1 is at the bottom campaign_id incude specific words or characters to be treated as such. There is now a new campaign_allow_inbound field where this is set. +13. Call distribution by agent ranking per in-group and total calls to in-group + +14. Added ability to copy the settings of one campaign to a new campaign + diff --git a/agc_2-X/trunk/bin/AST_DB_optimize.pl b/agc_2-X/trunk/bin/AST_DB_optimize.pl index 9f7f1521..3b965373 100644 --- a/agc_2-X/trunk/bin/AST_DB_optimize.pl +++ b/agc_2-X/trunk/bin/AST_DB_optimize.pl @@ -282,6 +282,28 @@ $dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VA $sthA->finish(); } + $stmtA = "update vicidial_inbound_group_agents SET calls_today=0;;"; + if($DB){print STDERR "\n|$stmtA|\n";} + if (!$T) { + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + @aryA = $sthA->fetchrow_array; + if (!$Q) {print "|",$aryA[0],"|",$aryA[1],"|",$aryA[2],"|",$aryA[3],"|","\n";} + $sthA->finish(); + } + + $stmtA = "update vicidial_campaign_agents SET calls_today=0;;"; + if($DB){print STDERR "\n|$stmtA|\n";} + if (!$T) { + $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; + $sthA->execute or die "executing: $stmtA ", $dbhA->errstr; + $sthArows=$sthA->rows; + @aryA = $sthA->fetchrow_array; + if (!$Q) {print "|",$aryA[0],"|",$aryA[1],"|",$aryA[2],"|",$aryA[3],"|","\n";} + $sthA->finish(); + } + $dbhA->disconnect(); diff --git a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql index 6faae70a..04bae5f7 100644 --- a/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql +++ b/agc_2-X/trunk/extras/MySQL_AST_CREATE_tables.sql @@ -311,6 +311,8 @@ closer_campaigns TEXT, call_server_ip VARCHAR(15), user_level INT(2) default '0', comments VARCHAR(20), +campaign_weight TINYINT(1) default '0', +calls_today SMALLINT(5) UNSIGNED default '0', index (random_id), index (last_call_time), index (last_update_time), @@ -990,6 +992,16 @@ index (group_id), index (group_weight) ); +CREATE TABLE vicidial_campaign_agents ( +user VARCHAR(20), +campaign_id VARCHAR(20), +campaign_rank TINYINT(1) default '0', +campaign_weight TINYINT(1) default '0', +calls_today SMALLINT(5) UNSIGNED default '0', +index (campaign_id), +index (user) +); + INSERT INTO vicidial_lists SET list_id='999',list_name='Default inbound list',campaign_id='TESTCAMP',active='N'; diff --git a/agc_2-X/trunk/extras/upgrade_2.0.4.sql b/agc_2-X/trunk/extras/upgrade_2.0.4.sql index e04804b8..0e5db8fd 100644 --- a/agc_2-X/trunk/extras/upgrade_2.0.4.sql +++ b/agc_2-X/trunk/extras/upgrade_2.0.4.sql @@ -129,6 +129,29 @@ ALTER TABLE vicidial_inbound_groups MODIFY next_agent_call ENUM('random','oldest GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES on asterisk.* TO cron@'%' IDENTIFIED BY '1234'; GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES on asterisk.* TO cron@localhost IDENTIFIED BY '1234'; +CREATE TABLE vicidial_campaign_agents ( +user VARCHAR(20), +campaign_id VARCHAR(20), +campaign_rank TINYINT(1) default '0', +campaign_weight TINYINT(1) default '0', +calls_today SMALLINT(5) UNSIGNED default '0', +index (campaign_id), +index (user) +); + +ALTER TABLE vicidial_live_agents ADD campaign_weight TINYINT(1) default '0'; +ALTER TABLE vicidial_live_agents ADD calls_today SMALLINT(5) UNSIGNED default '0'; + + + + + + + + + + + #!!!!!!! CHANGES BELOW THIS LINE ARE NOT FOR PRODUCTION USE YET, DO NOT APPLY THEM!!!!!!!!!!!!!!!!!!!!! # diff --git a/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.4.txt b/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.4.txt index e489a0d1..25ed7e18 100644 --- a/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.4.txt +++ b/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.0.4.txt @@ -111,6 +111,12 @@ Manual Dial List ID -<\/B> The default list_id to be used when an agent placces Manual Dial List ID: || inbound_group_rank: orders by the rank given to the agent for the specific inbound group. Highest to Lowest|| fewest_calls: orders by the number of calls received by an agent for that specific inbound group. Least calls first|| +Campaign Ranks: || +AGENT RANKS FOR THIS CAMPAIGN:|| +Copy Campaign|| +COPY A CAMPAIGN|| +Source Campaign: || +New Copied Campaign Addition|| ############################################################ CLIENT diff --git a/agc_2-X/trunk/www/vicidial/admin.php b/agc_2-X/trunk/www/vicidial/admin.php index 5c4ba2e3..245d7c0f 100644 --- a/agc_2-X/trunk/www/vicidial/admin.php +++ b/agc_2-X/trunk/www/vicidial/admin.php @@ -657,6 +657,10 @@ if (isset($_GET["campaign_allow_inbound"])) {$campaign_allow_inbound=$_GET["c elseif (isset($_POST["campaign_allow_inbound"])) {$campaign_allow_inbound=$_POST["campaign_allow_inbound"];} if (isset($_GET["manual_dial_list_id"])) {$manual_dial_list_id=$_GET["manual_dial_list_id"];} elseif (isset($_POST["manual_dial_list_id"])) {$manual_dial_list_id=$_POST["manual_dial_list_id"];} +if (isset($_GET["campaign_rank"])) {$campaign_rank=$_GET["campaign_rank"];} + elseif (isset($_POST["campaign_rank"])) {$campaign_rank=$_POST["campaign_rank"];} +if (isset($_GET["source_campaign_id"])) {$source_campaign_id=$_GET["source_campaign_id"];} + elseif (isset($_POST["source_campaign_id"])) {$source_campaign_id=$_POST["source_campaign_id"];} if (isset($script_id)) {$script_id= strtoupper($script_id);} @@ -798,6 +802,7 @@ $manual_dial_list_id = ereg_replace("[^0-9]","",$manual_dial_list_id); ### DIGITS and DASHES $group_rank = ereg_replace("[^-0-9]","",$group_rank); +$campaign_rank = ereg_replace("[^-0-9]","",$campaign_rank); ### Y or N ONLY ### $active = ereg_replace("[^NY]","",$active); @@ -923,6 +928,7 @@ $category = ereg_replace("[^-\_0-9a-zA-Z]","",$category); $vsc_id = ereg_replace("[^-\_0-9a-zA-Z]","",$vsc_id); $moh_context = ereg_replace("[^-\_0-9a-zA-Z]","",$moh_context); $agent_alert_exten = ereg_replace("[^-\_0-9a-zA-Z]","",$agent_alert_exten); +$source_campaign_id = ereg_replace("[^-\_0-9a-zA-Z]","",$source_campaign_id); ### ALPHA-NUMERIC and spaces $lead_order = ereg_replace("[^ 0-9a-zA-Z]","",$lead_order); @@ -1118,12 +1124,14 @@ $list_mix_container = ereg_replace(";","",$list_mix_container); # - Added 5th NEW and 6th NEW to the dial order options # 71030-2010 - Added Manual Dial List ID field to campaigns table # 71103-2207 - Added inbound_group_rank and fewest_calls to the inbound groups call order options +# 71113-1521 - Added campaign_rank to agent options +# - Added ability to Copy a campaign's setting to a new campaign # # # 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.0.4-114'; -$build = '71103-2207'; +$admin_version = '2.0.4-115'; +$build = '71113-1521'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -1243,6 +1251,7 @@ if (!isset($ADD)) {$ADD=0;} if ($ADD==1) {$hh='users'; echo "Add New User";} if ($ADD==11) {$hh='campaigns'; $sh='basic'; echo "Add New Campaign";} +if ($ADD==12) {$hh='campaigns'; $sh='basic'; echo "Copy Campaign";} if ($ADD==111) {$hh='lists'; echo "Add New List";} if ($ADD==121) {$hh='lists'; echo "Add New DNC";} if ($ADD==1111) {$hh='ingroups'; echo "Add New In-Group";} @@ -1257,6 +1266,7 @@ if ($ADD==111111111111) {$hh='admin'; $sh='server'; echo "ADD NEW SERVER";} if ($ADD==1111111111111) {$hh='admin'; $sh='conference'; echo "ADD NEW CONFERENCE";} if ($ADD==11111111111111) {$hh='admin'; $sh='conference'; echo "ADD NEW VICIDIAL CONFERENCE";} if ($ADD==2) {$hh='users'; echo "New User Addition";} +if ($ADD==20) {$hh='campaigns'; $sh='basic'; echo "New Copied Campaign Addition";} if ($ADD==21) {$hh='campaigns'; $sh='basic'; echo "New Campaign Addition";} if ($ADD==22) {$hh='campaigns'; $sh='status'; echo "New Campaign Status Addition";} if ($ADD==23) {$hh='campaigns'; $sh='hotkey'; echo "New Campaign HotKey Addition";} @@ -1471,20 +1481,114 @@ if ( ( (strlen($ADD)>4) && ($ADD < 99998) ) or ($ADD==3) or (($ADD>20) and ($ADD $o++; } - ##### get campaigns listing for dynamic pulldown + ##### BEGIN get campaigns listing for rankings ##### + $stmt="SELECT campaign_id,campaign_name from vicidial_campaigns order by campaign_id"; $rslt=mysql_query($stmt, $link); $campaigns_to_print = mysql_num_rows($rslt); $campaigns_list=''; + $campaigns_value=''; + $RANKcampaigns_list="CAMPAIGN     RANK     CALLS\n"; $o=0; while ($campaigns_to_print > $o) { $rowx=mysql_fetch_row($rslt); $campaigns_list .= "\n"; + $campaign_id_values[$o] = $rowx[0]; + $campaign_name_values[$o] = $rowx[1]; $o++; } + $o=0; + while ($campaigns_to_print > $o) + { + $stmt="SELECT campaign_rank,calls_today from vicidial_campaign_agents where user='$user' and campaign_id='$campaign_id_values[$o]'"; + $rslt=mysql_query($stmt, $link); + $ranks_to_print = mysql_num_rows($rslt); + if ($ranks_to_print > 0) + { + $row=mysql_fetch_row($rslt); + $SELECT_campaign_rank = $row[0]; + $calls_today = $row[1]; + } + else + {$calls_today=0; $SELECT_campaign_rank=0;} + if ( ($ADD=="4A") or ($ADD=="4B") ) + { + if (isset($_GET["RANK_$campaign_id_values[$o]"])) {$campaign_rank=$_GET["RANK_$campaign_id_values[$o]"];} + elseif (isset($_POST["RANK_$campaign_id_values[$o]"])) {$campaign_rank=$_POST["RANK_$campaign_id_values[$o]"];} + + if ($ranks_to_print > 0) + { + $stmt="UPDATE vicidial_campaign_agents set campaign_rank='$campaign_rank', campaign_weight='$campaign_rank' where campaign_id='$campaign_id_values[$o]' and user='$user';"; + $rslt=mysql_query($stmt, $link); + } + else + { + $stmt="INSERT INTO vicidial_campaign_agents set campaign_rank='$campaign_rank', campaign_weight='$campaign_rank', campaign_id='$campaign_id_values[$o]', user='$user';"; + $rslt=mysql_query($stmt, $link); + } + + $stmt="UPDATE vicidial_live_agents set campaign_weight='$campaign_rank' where campaign_id='$campaign_id_values[$o]' and user='$user';"; + $rslt=mysql_query($stmt, $link); + } + else {$campaign_rank = $SELECT_campaign_rank;} + + if (eregi("1$|3$|5$|7$|9$", $o)) + {$bgcolor='bgcolor="#B9CBFD"';} + else + {$bgcolor='bgcolor="#9BB9FB"';} + + # disable non user-group allowable campaign ranks + $stmt="SELECT user_group from vicidial_users where user='$user';"; + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + $user_group = $row[0]; + + $stmt="SELECT allowed_campaigns from vicidial_user_groups where user_group='$user_group';"; + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + $allowed_campaigns = $row[0]; + $allowed_campaigns = preg_replace("/ -$/","",$allowed_campaigns); + $UGcampaigns = explode(" ", $allowed_campaigns); + + $p=0; $RANK_camp_active=0; + if (eregi('-ALL-CAMPAIGNS-',$allowed_campaigns)) + {$RANK_camp_active++;} + else + { + $UGcampaign_ct = count($UGcampaigns); + while ($p < $campaign_ct) + { + if ($campaign_id_values[$o] == $UGcampaigns[$p]) + {$RANK_camp_active++;} + $p++; + } + } + if ($RANK_camp_active < 1) {$CR_disabled = 'DISABLED';} + else {$CR_disabled = '';} + + $RANKcampaigns_list .= ""; + $campaigns_list .= "$campaign_id_values[$o] - $campaign_name_values[$o]
\n"; + $RANKcampaigns_list .= "$campaign_id_values[$o] - $campaign_name_values[$o] "; + $RANKcampaigns_list .= "     \n"; - $h="-9"; - while ($h<=9) + $h="9"; + while ($h>=-9) { $RANKgroups_list .= "