Added several new options to rebuild list statuses script
git-svn-id: svn://192.168.202.10@2426 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -1,15 +1,18 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# VICIDIAL_rebuild_lead_statuses.pl version 2.6
|
||||
# VICIDIAL_rebuild_lead_statuses.pl version 2.12
|
||||
#
|
||||
# DESCRIPTION:
|
||||
# resets the status in vicidial_list for leads marked in status NOUSE
|
||||
# Very useful if you manually mess up the list statuses with a SQL query
|
||||
#
|
||||
# Copyright (C) 2013 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2015 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# CHANGES
|
||||
# 130422-0905 - first build
|
||||
# 151209-1620 - Added user field update from logs,
|
||||
# Added --no-cc-and-llct-update option to not update called_count, last_local_call_time
|
||||
# Added --use-lead-id option to search logs by lead_id instead of phone number
|
||||
#
|
||||
|
||||
$secX = time();
|
||||
@@ -69,7 +72,7 @@ foreach(@conf)
|
||||
if (!$VDHLOGfile) {$VDHLOGfile = "$PATHlogs/dupleads.$year-$mon-$mday";}
|
||||
|
||||
print "\n\n\n\n\n\n\n\n\n\n\n\n-- VICIDIAL_rebuild_list_statuses.pl --\n\n";
|
||||
print "This program is designed to scan all leads marked NOUSE and set them to their proper status, called_count and last_local_call_time according to the logs. \n\n";
|
||||
print "This program is designed to scan all leads marked NOUSE and set them to their proper status, called_count, last_local_call_time and user according to the logs. \n\n";
|
||||
|
||||
|
||||
$oldlistidSQL='';
|
||||
@@ -94,6 +97,8 @@ if (length($ARGV[0])>1)
|
||||
print " [--debugX] = extra debugging enabled\n";
|
||||
print " [--oldlistid=1234] = restrict log search to this list_id\n";
|
||||
print " [--newlistid=1234] = restrict updates to this list_id\n";
|
||||
print " [--no-cc-and-llct-update] = do not update called_count, last_local_call_time\n";
|
||||
print " [--use-lead-id] = search the logs by the lead_id instead of phone number\n";
|
||||
print " [--help] = this help screen\n\n";
|
||||
print "\n";
|
||||
|
||||
@@ -121,6 +126,16 @@ if (length($ARGV[0])>1)
|
||||
$TEST=1;
|
||||
print "\n----- TESTING -----\n\n";
|
||||
}
|
||||
if ($args =~ /--no-cc-and-llct-update/i)
|
||||
{
|
||||
$no_cc_and_llct_update=1;
|
||||
if ($q < 1) {print "\n----- NO called_count AND last_local_call_time UPDATES -----\n\n";}
|
||||
}
|
||||
if ($args =~ /--use-lead-id/i)
|
||||
{
|
||||
$use_lead_id=1;
|
||||
if ($q < 1) {print "\n----- SEARCH LOGS BY LEAD ID -----\n\n";}
|
||||
}
|
||||
if ($args =~ /-oldlistid=/i)
|
||||
{
|
||||
@data_in = split(/-oldlistid=/,$args);
|
||||
@@ -201,15 +216,24 @@ foreach(@lead_id)
|
||||
$Nepoch=0;
|
||||
$Nlead_id='';
|
||||
$Ncall_date='';
|
||||
$Nuser='';
|
||||
$Cstatus='';
|
||||
$Cepoch=0;
|
||||
$Clead_id='';
|
||||
$Ccall_date='';
|
||||
$Cuser='';
|
||||
$NEWstatus='';
|
||||
$OLDlead_id='';
|
||||
$NEWcall_date='';
|
||||
$NEWuser='';
|
||||
$LEADfound=0;
|
||||
$stmtA = "SELECT status,start_epoch,lead_id,call_date from vicidial_log where phone_number='$phone_number[$b]' $oldlistidSQL order by call_date desc LIMIT 1;";
|
||||
|
||||
if ($use_lead_id > 0)
|
||||
{$searchSQL = "lead_id='$lead_id[$b]'";}
|
||||
else
|
||||
{$searchSQL = "phone_number='$phone_number[$b]'";}
|
||||
|
||||
$stmtA = "SELECT status,start_epoch,lead_id,call_date,user from vicidial_log where $searchSQL $oldlistidSQL order by call_date desc LIMIT 1;";
|
||||
if($DBX){print STDERR "\n|$stmtA|\n";}
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
@@ -221,11 +245,12 @@ foreach(@lead_id)
|
||||
$Nepoch = $aryA[1];
|
||||
$Nlead_id = $aryA[2];
|
||||
$Ncall_date = $aryA[3];
|
||||
$Nuser = $aryA[4];
|
||||
$LEADfound++;
|
||||
}
|
||||
$sthA->finish();
|
||||
|
||||
$stmtA = "SELECT status,start_epoch,lead_id,call_date from vicidial_closer_log where phone_number='$phone_number[$b]' $oldlistidSQL order by closecallid desc LIMIT 1;";
|
||||
$stmtA = "SELECT status,start_epoch,lead_id,call_date,user from vicidial_closer_log where $searchSQL $oldlistidSQL order by closecallid desc LIMIT 1;";
|
||||
if($DBX){print STDERR "\n|$stmtA|\n";}
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
@@ -237,13 +262,14 @@ foreach(@lead_id)
|
||||
$Cepoch = $aryA[1];
|
||||
$Clead_id = $aryA[2];
|
||||
$Ccall_date = $aryA[3];
|
||||
$Cuser = $aryA[4];
|
||||
$LEADfound++;
|
||||
}
|
||||
$sthA->finish();
|
||||
|
||||
if ($LEADfound < 1)
|
||||
{
|
||||
$stmtA = "SELECT status,start_epoch,lead_id,call_date from vicidial_log where phone_number='$alt_phone[$b]' $oldlistidSQL order by call_date desc LIMIT 1;";
|
||||
$stmtA = "SELECT status,start_epoch,lead_id,call_date,user from vicidial_log where $searchSQL $oldlistidSQL order by call_date desc LIMIT 1;";
|
||||
if($DBX){print STDERR "\n|$stmtA|\n";}
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
|
||||
@@ -255,6 +281,7 @@ foreach(@lead_id)
|
||||
$Nepoch = $aryA[1];
|
||||
$Nlead_id = $aryA[2];
|
||||
$Ncall_date = $aryA[3];
|
||||
$Nuser = $aryA[4];
|
||||
$LEADfound++;
|
||||
}
|
||||
$sthA->finish();
|
||||
@@ -267,12 +294,14 @@ foreach(@lead_id)
|
||||
$NEWstatus = $Cstatus;
|
||||
$OLDlead_id = $Clead_id;
|
||||
$NEWcall_date = $Ccall_date;
|
||||
$NEWuser = $Cuser;
|
||||
}
|
||||
else
|
||||
{
|
||||
$NEWstatus = $Nstatus;
|
||||
$OLDlead_id = $Nlead_id;
|
||||
$NEWcall_date = $Ncall_date;
|
||||
$NEWuser = $Nuser;
|
||||
}
|
||||
|
||||
$stmtA = "SELECT count(*) from vicidial_log where lead_id='$OLDlead_id' $oldlistidSQL;";
|
||||
@@ -287,8 +316,12 @@ foreach(@lead_id)
|
||||
}
|
||||
$sthA->finish();
|
||||
|
||||
if ($no_cc_and_llct_update > 0)
|
||||
{$cc_and_llct_updateSQL = '';}
|
||||
else
|
||||
{$cc_and_llct_updateSQL = ",called_count='$NEWcount',last_local_call_time='$NEWcall_date'";}
|
||||
|
||||
$stmtA = "UPDATE vicidial_list set status='$NEWstatus',called_count='$NEWcount',last_local_call_time='$NEWcall_date' where lead_id='$lead_id[$b]';";
|
||||
$stmtA = "UPDATE vicidial_list set status='$NEWstatus',user='$NEWuser' $cc_and_llct_updateSQL where lead_id='$lead_id[$b]';";
|
||||
if ($TEST < 1)
|
||||
{$affected_rows = $dbhA->do($stmtA);} # or die "Couldn't execute query:|$stmtA|\n";
|
||||
if($DB){print STDERR "|$b|$lead_id[$b]|$Nstatus|$Cstatus|$phone_number[$b]| |$affected_rows|$stmtA|\n";}
|
||||
|
||||
Reference in New Issue
Block a user