diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE index 3189ec73..185afa00 100644 --- a/agc_2-X/trunk/UPGRADE +++ b/agc_2-X/trunk/UPGRADE @@ -420,6 +420,12 @@ OTHER CHANGES: 96. Added rewritten AJAX/Javascript driven real-time report, able to support webphones. +97. Added the ability to hide fields in the agent interface by entering + ---HIDE--- into the System Settings label option for the field + +98. Added preprocess leads in script to filter leads and generate standard + format lead files before being imported + diff --git a/agc_2-X/trunk/bin/VICIDIAL_IN_preprocess_leads_file.pl b/agc_2-X/trunk/bin/VICIDIAL_IN_preprocess_leads_file.pl new file mode 100644 index 00000000..91d93b38 --- /dev/null +++ b/agc_2-X/trunk/bin/VICIDIAL_IN_preprocess_leads_file.pl @@ -0,0 +1,754 @@ +#!/usr/bin/perl +# +# VICIDIAL_IN_preprocess_leads_file.pl version 2.4 +# +# DESCRIPTION: +# script lets you insert leads into the vicidial_list table from a TAB-delimited +# lead file that is in the proper format. (for format see --help) +# +# It is recommended that you run this program on the local Asterisk machine +# +# NOTE: the machine this is run on must have a servers entry in the database +# +# Copyright (C) 2010 Matt Florell LICENSE: AGPLv2 +# +# +# CHANGES +# 101217-0515 - First build +# + +$version = '101217-0515'; + +$secX = time(); +$MT[0]=''; +$Ealert=''; +$force_quiet=0; +$forcelistfilename=0; + +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$year = ($year + 1900); +$mon++; +if ($hour < 10) {$hour = "0$hour";} +if ($min < 10) {$min = "0$min";} +if ($sec < 10) {$sec = "0$sec";} +if ($mon < 10) {$mon = "0$mon";} +if ($mday < 10) {$mday = "0$mday";} +$pulldate0 = "$year-$mon-$mday $hour:$min:$sec"; +$insert_date = "$year-$mon-$mday $hour:$min:$sec"; +$listdate = "$year$mon$mday"; +$inSD = $pulldate0; +$dsec = ( ( ($hour * 3600) + ($min * 60) ) + $sec ); +$MT[0]=''; + + +# default path to astguiclient configuration file: +$PATHconf = '/etc/astguiclient.conf'; + +open(conf, "$PATHconf") || die "can't open $PATHconf: $!\n"; +@conf = ; +close(conf); +$i=0; +foreach(@conf) + { + $line = $conf[$i]; + $line =~ s/ |>|\n|\r|\t|\#.*|;.*//gi; + if ( ($line =~ /^PATHhome/) && ($CLIhome < 1) ) + {$PATHhome = $line; $PATHhome =~ s/.*=//gi;} + if ( ($line =~ /^PATHlogs/) && ($CLIlogs < 1) ) + {$PATHlogs = $line; $PATHlogs =~ s/.*=//gi;} + if ( ($line =~ /^PATHagi/) && ($CLIagi < 1) ) + {$PATHagi = $line; $PATHagi =~ s/.*=//gi;} + if ( ($line =~ /^PATHweb/) && ($CLIweb < 1) ) + {$PATHweb = $line; $PATHweb =~ s/.*=//gi;} + if ( ($line =~ /^PATHsounds/) && ($CLIsounds < 1) ) + {$PATHsounds = $line; $PATHsounds =~ s/.*=//gi;} + if ( ($line =~ /^PATHmonitor/) && ($CLImonitor < 1) ) + {$PATHmonitor = $line; $PATHmonitor =~ s/.*=//gi;} + if ( ($line =~ /^VARserver_ip/) && ($CLIserver_ip < 1) ) + {$VARserver_ip = $line; $VARserver_ip =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_server/) && ($CLIDB_server < 1) ) + {$VARDB_server = $line; $VARDB_server =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_database/) && ($CLIDB_database < 1) ) + {$VARDB_database = $line; $VARDB_database =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_user/) && ($CLIDB_user < 1) ) + {$VARDB_user = $line; $VARDB_user =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_pass/) && ($CLIDB_pass < 1) ) + {$VARDB_pass = $line; $VARDB_pass =~ s/.*=//gi;} + if ( ($line =~ /^VARDB_port/) && ($CLIDB_port < 1) ) + {$VARDB_port = $line; $VARDB_port =~ s/.*=//gi;} + if ( ($line =~ /^VARREPORT_host/) && ($CLIREPORT_host < 1) ) + {$VARREPORT_host = $line; $VARREPORT_host =~ s/.*=//gi;} + if ( ($line =~ /^VARREPORT_user/) && ($CLIREPORT_user < 1) ) + {$VARREPORT_user = $line; $VARREPORT_user =~ s/.*=//gi;} + if ( ($line =~ /^VARREPORT_pass/) && ($CLIREPORT_pass < 1) ) + {$VARREPORT_pass = $line; $VARREPORT_pass =~ s/.*=//gi;} + if ( ($line =~ /^VARREPORT_port/) && ($CLIREPORT_port < 1) ) + {$VARREPORT_port = $line; $VARREPORT_port =~ s/.*=//gi;} + $i++; + } + +# Customized Variables +$server_ip = $VARserver_ip; # Asterisk server IP + + +if (!$VDHLOGfile) {$VDHLOGfile = "$PATHlogs/preprocessleads.$year-$mon-$mday";} + +### begin parsing run-time options ### +if (length($ARGV[0])>1) + { + $i=0; + while ($#ARGV >= $i) + { + $args = "$args $ARGV[$i]"; + $i++; + } + + if ($args =~ /--version/i) + { + print "$version\n"; + exit; + } + if ($args =~ /--help|-h/i) + { + print "allowed run time options:\n"; + print " [-q] = quiet\n"; + print " [-t] = test\n"; + print " [--version] = version\n"; + print " [--debug] = debug output\n"; + print " [--format=standard] = ability to define a format, standard is default, formats allowed shown in examples\n"; + print " [--file-prefix-filter=WXYZ] = will only process lead files that begin with the characters you define\n"; + print " [--ftp-pull] = grabs lead files from a remote FTP server, uses REPORTS FTP login information\n"; + print " [--ftp-dir=leads_in] = remote FTP server directory to grab files from, should have a DONE sub-directory\n"; + print " [--email-list=test@test.com:test2@test.com] = send email results for each file to these addresses\n"; + print " [--email-sender=vicidial@localhost] = sender for the email results\n"; + print " [-h] = this help screen\n\n"; + print "\n"; + print "This script takes in lead files in the following order when they are placed in the $PATHhome/LEADS_IN directory to be imported into the vicidial_list table (examples):\n\n"; + print "standard:\n"; + print "vendor_lead_code|source_id|list_id|phone_code|phone_number|title|first_name|middle|last_name|address1|address2|address3|city|state|province|postal_code|country|gender|date_of_birth|alt_phone|email|security_phrase|COMMENTS|called_count|status|entry_date|multi-alt-entries\n"; + print "3857822|31022|105|01144|1625551212|MRS|B||BURTON|249 MUNDON ROAD|MALDON|ESSEX||||CM9 6PW|UK||||||COMMENTS|2|B|2007-08-09 00:00:00|7275551212_1_work!7275551213_61_sister house!7275551214_44_neighbor\n\n"; + print "stdrankowner:\n"; + print "vendor_lead_code|source_id|list_id|phone_code|phone_number|title|first_name|middle|last_name|address1|address2|address3|city|state|province|postal_code|country|gender|date_of_birth|alt_phone|email|security_phrase|COMMENTS|called_count|status|entry_date|rank|owner|multi-alt-entries\n"; + print "3857822|31022|105|01144|1625551212|MRS|B||BURTON|249 MUNDON ROAD|MALDON|ESSEX||||CM9 6PW|UK||||||COMMENTS|2|B|2007-08-09 00:00:00|99|6666|7275551212_1_work!7275551213_61_sister house!7275551214_44_neighbor\n\n"; + print "minicsv:\n"; + print "address1,city,name,phone_number,state,postal_code\n"; + print "\"105 Fifth St\",\"Steinhatchee\",\"Frank Smith\",\"3525556601\",\"FL\",\"32359\"\n\n"; + print "minicsv02:\n"; + print "name,address1,city,state,postal_code,phone_number\n"; + print "\"Adam Smith\",\"123 Fourth St\",\"Englishtown\",\"NS\",\"B0C1H0\",\"902-555-1212\"\n\n"; + print "fixed254:\n"; + print "fixed width(without the quotes)\n"; + print "\"9185551212ROSE SMITHS 155 TIGER MOUNTAIN RD. RR 1 BOX 107 HENRYETTA OK74437-941DEMG 226555 0 \"\n\n"; + print "sctab08:\n"; + print "STATE\tNAME\tPHONE\tFAX\tADDRESS\tADDRESS2\tCITY\tZIP\n"; + print "AL\tTom Wilson\t205 5551212\t\t 1689 15th Ave\t\tBESSEMER\t35020\n\n"; + print "sccsv11:\n"; + print "STATE,ID,NAME,ADDRESS,ADDRESS2,CITY,COUNTY,PHONE,FAX,ZIP,COMMENTS\n"; + print "AL,16700,Fairfax Retirement Center (Crowder House),1324 25th St,,FAIRFAX,JEFFERSON,(205) 555-0508,,35733,Comments\n\n"; + print "dccsv10:\n"; + print "VENDOR_ID,FIRST_NAME,LAST_NAME,PHONE_1,PHONE_2,PHONE_3,PHONE_4,PHONE_5,PHONE_6,PHONE_7\n"; + print "\"100998\",\"ANGELA \",\"SMITH \",\"3145551212\",\"3145551213\",\"3145551214\",\"0\",\"3145551215\",\"3145551216\",\"0\",\n\n"; + print "dccsv43, dccsvref51, dccsv52, dccsvref52 and ncacsv39:\n"; + print "---format too confusing to list in the help screen---\n\n"; + + exit; + } + else + { + if ($args =~ /-q/i) + { + $q=1; + $DB=0; + $DBX=0; + $force_quiet=1; + } + if ( ($args =~ /-debug/i) && ($force_quiet < 1) ) + { + $DB=1; + print "\n----- DEBUGGING -----\n\n"; + } + if ( ($args =~ /-debugX/i) && ($force_quiet < 1) ) + { + $DBX=1; + print "\n----- SUPER-DUPER DEBUGGING -----\n\n"; + } + else {$DBX=0;} + + if ($args =~ /-t/i) + { + $T=1; + $TEST=1; + if ($q < 1) {print "\n----- TESTING -----\n\n";} + } + + if ($args =~ /-format=/i) + { + @data_in = split(/-format=/,$args); + $format = $data_in[1]; + $format =~ s/ .*//gi; + if ($q < 1) {print "\n----- FORMAT OVERRIDE: $format -----\n\n";} + } + else + {$format = 'standard';} + + if ($args =~ /--forcephonecode=/i) + { + @data_in = split(/--forcephonecode=/,$args); + $forcephonecode = $data_in[1]; + $forcephonecode =~ s/ .*//gi; + if ($q < 1) {print "\n----- FORCE PHONECODE OVERRIDE: $forcephonecode -----\n\n";} + } + else + {$forcephonecode = '';} + + if ($args =~ /--file-prefix-filter=/i) + { + @data_in = split(/--file-prefix-filter=/,$args); + $file_prefix_filter = $data_in[1]; + $file_prefix_filter =~ s/ .*//gi; + if ($q < 1) {print "\n----- FILE PREFIX FILTER: $file_prefix_filter -----\n\n";} + } + else + {$file_prefix_filter = '';} + + if ($args =~ /-ftp-pull/i) + { + $ftp_pull=1; + if ($q < 1) {print "\n----- FTP LEAD FILE PULL -----\n\n";} + } + if ($args =~ /--ftp-dir=/i) + { + @data_in = split(/--ftp-dir=/,$args); + $ftp_dir = $data_in[1]; + $ftp_dir =~ s/ .*//gi; + if ($q < 1) {print "\n----- REMOTE FTP DIRECTORY: $ftp_dir -----\n\n";} + } + else + {$ftp_dir = '';} + + if ($args =~ /--email-list=/i) + { + @data_in = split(/--email-list=/,$args); + $email_list = $data_in[1]; + $email_list =~ s/ .*//gi; + $email_list =~ s/:/,/gi; + if ($q < 1) {print "\n----- EMAIL NOTIFICATION: $email_list -----\n\n";} + } + else + {$email_list = '';} + + if ($args =~ /--email-sender=/i) + { + @data_in = split(/--email-sender=/,$args); + $email_sender = $data_in[1]; + $email_sender =~ s/ .*//gi; + $email_sender =~ s/:/,/gi; + if ($q < 1) {print "\n----- EMAIL NOTIFICATION SENDER: $email_sender -----\n\n";} + } + else + {$email_sender = 'vicidial@localhost';} + + } + } +else + { + print "no command line options set\n"; + $args = ""; + $i=0; + $forcelistid = ''; + $format='standard'; + } +### end parsing run-time options ### + +if ($q < 1) + { + print "\n\n\n\n\n\n\n\n\n\n\n\n-- VICIDIAL_IN_preprocess_leads_file.pl --\n\n"; + print "This program is designed to take a file and clean it up before it is imported into the VICIDIAL system. \n\n"; + } + +$i=0; +$US = '_'; +$phone_list = '|'; + +if (!$VARDB_port) {$VARDB_port='3306';} + +use DBI; + +$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass") + or die "Couldn't connect to database: " . DBI->errstr; + +############################################# +##### START SYSTEM_SETTINGS LOOKUP ##### +$stmtA = "SELECT use_non_latin FROM system_settings;"; +$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; +$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; +$sthArows=$sthA->rows; +if ($sthArows > 0) + { + @aryA = $sthA->fetchrow_array; + $non_latin = "$aryA[0]"; + } +$sthA->finish(); +##### END SETTINGS LOOKUP ##### +########################################### + +if ($non_latin > 0) {$affected_rows = $dbhA->do("SET NAMES 'UTF8'");} + +$suf = '.txt'; +$people_packages_id_update=''; +$dir1 = "$PATHhome/PREPROCESS"; +$dir2 = "$PATHhome/PREPROCESS/DONE"; +$dir3 = "$PATHhome/LEADS_IN"; + + if($DBX){print STDERR "\nLEADS_IN directory: |$dir1|\n";} + + +$files_copied_count=0; +$fcc=0; +@FTPfiles=@MT; + +if ($ftp_pull > 0) + { + $i=0; + use Net::FTP; + + $ftp = Net::FTP->new("$VARREPORT_host", Port => "$VARREPORT_port", Debug => "$DBX", Passive => 1) + or die "Can't connect: $@\n"; + $ftp->login("$VARREPORT_user","$VARREPORT_pass") or die "Cannot log in /: $!"; + @FILES = $ftp->dir("$ftp_dir") + or die "Can't get a list of files in $ftp_dir: $!"; + + foreach(@FILES) + { + if ($DBX > 0) {print "$FILES[$i]\n";} + if ($FILES[$i] !~ /^d/i) + { + chomp($FILES[$i]); + @FILEDETAILS = split(/ \d\d:\d\d /, $FILES[$i]); + $FILES[$i] = "$FILEDETAILS[1]"; + $FILES[$i] =~ s/ *$//gi; + + $passed_file_filter=1; + if (length($file_prefix_filter)>0) + { + if ($FILES[$i] !~ /^$file_prefix_filter/) + { + if ($DB > 0) {print "SKIPPING FILE, NO FILTER MATCH: $FILES[$i]\n";} + $passed_file_filter=0; + } + } + if ( (length($FILES[$i]) > 4) && ($passed_file_filter > 0) ) + { + $GOODfname = $FILES[$i]; + $FILES[$i] =~ s/ /_/gi; + $FILES[$i] =~ s/\(|\)|\||\\|\/|\'|\"|//gi; + $ftp->rename("$ftp_dir/$GOODfname","$ftp_dir/$FILES[$i]"); + $FILEname = $FILES[$i]; + $ftp->get("$ftp_dir/$FILES[$i]", "$dir1/$FILES[$i]"); + + if (!$TEST) {$ftp->rename("$ftp_dir/$FILES[$i]", "$ftp_dir/DONE/$FILES[$i]");} + if ($DB > 0) {print "FTP FILE COPIED: $FILES[$i]\n";} + $FTPfiles[$fcc] = $FILES[$i]; + $fcc++; + $files_copied_count++; + } + } + $i++; + } + if (!$q) {print "$ftp_dir - $VARREPORT_host - $#FILES - $files_copied_count\n";} + + @FILES = @FTPfiles; + } +else + { + @FILES=@MT; + opendir(FILE, "$dir1/"); + @FILES = readdir(FILE); + } + + +$i=0; + +foreach(@FILES) + { + $size1 = 0; + $size2 = 0; + $person_id_delete = ''; + $transaction_id_delete = ''; + $forcelistfilename_name = ''; + $pipe='.pipe'; + + if (length($FILES[$i]) > 4) + { + $size1 = (-s "$dir1/$FILES[$i]"); + if (!$q) {print "$FILES[$i] $size1\n";} + sleep(2); + $size2 = (-s "$dir1/$FILES[$i]"); + if (!$q) {print "$FILES[$i] $size2\n\n";} + + if ( ($FILES[$i] !~ /^TRANSFERRED/i) && ($size1 eq $size2) && (length($FILES[$i]) > 4)) + { + $GOODfname = $FILES[$i]; + $FILES[$i] =~ s/ /_/gi; + $FILES[$i] =~ s/\(|\)|\||\\|\/|\'|\"|//gi; + rename("$dir1/$GOODfname","$dir1/$FILES[$i]"); + $FILEname = $FILES[$i]; + + `cp -f $dir1/$FILES[$i] $dir2/$source$FILES[$i]`; + + ### open the in file for reading ### + open(infile, "$dir2/$source$FILES[$i]") + || die "Can't open $source$FILES[$i]: $!\n"; + + ### open the new out file for writing ### + open(Pout, ">$dir2/$FILEname$pipe") + || die "Can't open $dir2/$FILEname$pipe: $!\n"; + + $a=0; ### each line of input file counter ### + $b=0; ### new records counter ### + $c=0; ### no-phone counter ### + $d=0; ### + $e=0; ### + $f=0; ### + $g=0; ### + + $rank=''; + $owner=''; + + #if ($DB) + while () + { + @m=@MT; + # print "$a| $number\n"; + $number = $_; + $raw_number = $number; + chomp($number); + # $number =~ s/,/\|/gi; + $number =~ s/\t/\|/gi; + $number =~ s/\'|\t|\r|\n|\l//gi; + $number =~ s/\'|\t|\r|\n|\l//gi; + $number =~ s/\",,,,,,,\"/\|\|\|\|\|\|\|/gi; + $number =~ s/\",,,,,,\"/\|\|\|\|\|\|/gi; + $number =~ s/\",,,,,\"/\|\|\|\|\|/gi; + $number =~ s/\",,,,\"/\|\|\|\|/gi; + $number =~ s/\",,,\"/\|\|\|/gi; + $number =~ s/\",,\"/\|\|/gi; + $number =~ s/\",\"/\|/gi; + $number =~ s/\"//gi; + @m = split(/\|/, $number); + + $format_set=0; + + + # This is the format for the ncacsv39 lead files + #5200556,"00052555570016383767","SERVERS JR,JIM M","2915551802",1121.31,"627555120","77380","HSBC","SCRIPT4","6205554433","No Message","2915551802","16383767","","","","","","","","","","","","","","","6001","DLR3","549","","","","","","","","","" + + if ( ($format =~ /ncacsv39/) && ($format_set < 1) ) + { + $number = $raw_number; + chomp($number); + $number =~ s/\t/\|/gi; + $number =~ s/\'|\t|\r|\n|\l//gi; + $number =~ s/\'|\t|\r|\n|\l//gi; + $number =~ s/\",,,,,,,\"/\|\|\|\|\|\|\|/gi; + $number =~ s/\",,,,,,\"/\|\|\|\|\|\|/gi; + $number =~ s/\",,,,,\"/\|\|\|\|\|/gi; + $number =~ s/\",,,,\"/\|\|\|\|/gi; + $number =~ s/\",,,\"/\|\|\|/gi; + $number =~ s/\",,\"/\|\|/gi; + $number =~ s/\",\"/\|/gi; + $number =~ s/,\"/\|/gi; + $number =~ s/\",/\|/gi; + $number =~ s/\"//gi; + @m = split(/\|/, $number); + + if ($DBX) {print "$a - $number\n";} + + $vendor_lead_code = $m[0]; chomp($vendor_lead_code); # acctid + $source_id = $m[1]; chomp($source_id); # uniqueid + $list_id = '939'; + $phone_code = '1'; + $full_name = $m[2]; @name = split(/,/, $full_name); + $first_name = $name[1]; chomp($first_name); + $middle_initial = ''; + $last_name = $name[0]; chomp($last_name); + $province = $m[3]; # acct main phone + $address2 = $m[4]; # balance + $alt_phone = $m[5]; chomp($alt_phone); $alt_phone =~ s/\D//gi; # ssn + $postal_code = $m[6]; chomp($postal_code); $postal_code =~ s/\D//gi; # zip + $address1 = $m[7]; # descrip + $address3 = $m[8]; # script + $security_phrase = $m[9]; chomp($security_phrase); $security_phrase =~ s/\D//gi; # cid + $email = $m[36]; # collectorid + $title = $m[28]; # folderid + + $phone_number = $m[3]; + $USarea = substr($phone_number, 0, 3); + $state = ''; + $country = ''; + $gender = ''; + $date_of_birth = ''; + $comments = ''; + $called_count = '0'; + $status = 'NEW'; + $insert_date = $pulldate0; + $rank = ''; + $owner = ''; + $entry_date = ''; + $multi_alt_phones = ''; + $phone_found=0; + + if (length($m[11]) > 9) + { + $phone_number = $m[11]; + $city = $m[12]; # phoneid + $rank = '1'; + $owner = 'home'; + + print Pout "$vendor_lead_code|$source_id|$list_id|$phone_code|$phone_number|$title|$first_name|$middle|$last_name|$address1|$address2|$address3|$city|$state|$province|$postal_code|$country|$gender|$date_of_birth|$alt_phone|$email|$security_phrase|$comments|$called_count|$status|$entry_date|$rank|$owner|\n"; + $b++; $phone_found++; + if ($DBX) {print " $b|$phone_found - $a|$phone_number|$city|$rank|$owner|$vendor_lead_code|$source_id\n";} + } + if (length($m[13]) > 9) + { + $phone_number = $m[13]; + $city = $m[14]; # phoneid + $rank = '2'; + $owner = 'work'; + + print Pout "$vendor_lead_code|$source_id|$list_id|$phone_code|$phone_number|$title|$first_name|$middle|$last_name|$address1|$address2|$address3|$city|$state|$province|$postal_code|$country|$gender|$date_of_birth|$alt_phone|$email|$security_phrase|$comments|$called_count|$status|$entry_date|$rank|$owner|\n"; + $b++; $phone_found++; + if ($DBX) {print " $b|$phone_found - $a|$phone_number|$city|$rank|$owner|$vendor_lead_code|$source_id\n";} + } + if (length($m[15]) > 9) + { + $phone_number = $m[15]; + $city = $m[16]; # phoneid + $rank = '3'; + $owner = 'cell'; + + print Pout "$vendor_lead_code|$source_id|$list_id|$phone_code|$phone_number|$title|$first_name|$middle|$last_name|$address1|$address2|$address3|$city|$state|$province|$postal_code|$country|$gender|$date_of_birth|$alt_phone|$email|$security_phrase|$comments|$called_count|$status|$entry_date|$rank|$owner|\n"; + $b++; $phone_found++; + if ($DBX) {print " $b|$phone_found - $a|$phone_number|$city|$rank|$owner|$vendor_lead_code|$source_id\n";} + } + if (length($m[17]) > 9) + { + $phone_number = $m[17]; + $city = $m[18]; # phoneid + $rank = '4'; + $owner = 'alt1'; + + print Pout "$vendor_lead_code|$source_id|$list_id|$phone_code|$phone_number|$title|$first_name|$middle|$last_name|$address1|$address2|$address3|$city|$state|$province|$postal_code|$country|$gender|$date_of_birth|$alt_phone|$email|$security_phrase|$comments|$called_count|$status|$entry_date|$rank|$owner|\n"; + $b++; $phone_found++; + if ($DBX) {print " $b|$phone_found - $a|$phone_number|$city|$rank|$owner|$vendor_lead_code|$source_id\n";} + } + if (length($m[19]) > 9) + { + $phone_number = $m[19]; + $city = $m[20]; # phoneid + $rank = '5'; + $owner = 'alt2'; + + print Pout "$vendor_lead_code|$source_id|$list_id|$phone_code|$phone_number|$title|$first_name|$middle|$last_name|$address1|$address2|$address3|$city|$state|$province|$postal_code|$country|$gender|$date_of_birth|$alt_phone|$email|$security_phrase|$comments|$called_count|$status|$entry_date|$rank|$owner|\n"; + $b++; $phone_found++; + if ($DBX) {print " $b|$phone_found - $a|$phone_number|$city|$rank|$owner|$vendor_lead_code|$source_id\n";} + } + if (length($m[21]) > 9) + { + $phone_number = $m[21]; + $city = $m[22]; # phoneid + $rank = '6'; + $owner = 'alt3'; + + print Pout "$vendor_lead_code|$source_id|$list_id|$phone_code|$phone_number|$title|$first_name|$middle|$last_name|$address1|$address2|$address3|$city|$state|$province|$postal_code|$country|$gender|$date_of_birth|$alt_phone|$email|$security_phrase|$comments|$called_count|$status|$entry_date|$rank|$owner|\n"; + $b++; $phone_found++; + if ($DBX) {print " $b|$phone_found - $a|$phone_number|$city|$rank|$owner|$vendor_lead_code|$source_id\n";} + } + if (length($m[23]) > 9) + { + $phone_number = $m[23]; + $city = $m[24]; # phoneid + $rank = '7'; + $owner = 'trigger1'; + + print Pout "$vendor_lead_code|$source_id|$list_id|$phone_code|$phone_number|$title|$first_name|$middle|$last_name|$address1|$address2|$address3|$city|$state|$province|$postal_code|$country|$gender|$date_of_birth|$alt_phone|$email|$security_phrase|$comments|$called_count|$status|$entry_date|$rank|$owner|\n"; + $b++; $phone_found++; + if ($DBX) {print " $b|$phone_found - $a|$phone_number|$city|$rank|$owner|$vendor_lead_code|$source_id\n";} + } + if (length($m[24]) > 9) + { + $phone_number = $m[24]; + $city = $m[25]; # phoneid + $rank = '8'; + $owner = 'trigger2'; + + print Pout "$vendor_lead_code|$source_id|$list_id|$phone_code|$phone_number|$title|$first_name|$middle|$last_name|$address1|$address2|$address3|$city|$state|$province|$postal_code|$country|$gender|$date_of_birth|$alt_phone|$email|$security_phrase|$comments|$called_count|$status|$entry_date|$rank|$owner|\n"; + $b++; $phone_found++; + if ($DBX) {print " $b|$phone_found - $a|$phone_number|$city|$rank|$owner|$vendor_lead_code|$source_id\n";} + } + + if ($phone_found < 1) + { + if ($DB) {print "No-Phone entry: $a|$vendor_lead_code|$source_id\n";} + $c++; + } + $format_set++; + } + + + # This is the format for the standard lead files + #3857822|31022|105|01144|1625551212|MRS|B||BURTON|249 MUNDON ROAD|MALDON|ESSEX||||CM9 6PW|UK||||||COMMENTS + if ($format_set < 1) + { + $vendor_lead_code = $m[0]; chomp($vendor_lead_code); + $source_id = $m[1]; chomp($source_id); + $list_id = $m[2]; chomp($list_id); + $phone_code = $m[3]; chomp($phone_code); $phone_code =~ s/\D//gi; + $phone_number = $m[4]; chomp($phone_number); $phone_number =~ s/\D//gi; + $USarea = substr($phone_number, 0, 3); + $title = $m[5]; chomp($title); + $first_name = $m[6]; chomp($first_name); + $middle_initial = $m[7]; chomp($middle_initial); + $last_name = $m[8]; chomp($last_name); + $address1 = $m[9]; chomp($address1); + $address2 = $m[10]; chomp($address2); + $address3 = $m[11]; chomp($address3); + $city = $m[12]; chomp($city); + $state = $m[13]; chomp($state); + $province = $m[14]; chomp($province); + $postal_code = $m[15]; chomp($postal_code); + $country = $m[16]; chomp($country); + $gender = $m[17]; + $date_of_birth = $m[18]; + $alt_phone = $m[19]; chomp($alt_phone); $alt_phone =~ s/\D//gi; + $email = $m[20]; + $security_phrase = $m[21]; + $comments = $m[22]; + $called_count = $m[23]; $called_count =~ s/\D|\r|\n|\t//gi; if (length($called_count)<1) {$called_count=0;} + $status = $m[24]; $status =~ s/ |\r|\n|\t//gi; if (length($status)<1) {$status='NEW';} + $insert_date = $m[25]; $insert_date =~ s/\r|\n|\t|[a-zA-Z]//gi; if (length($insert_date)<6) {$insert_date=$pulldate0;} + if ($insert_date =~ /\//) + { + @iD = split(/\//, $insert_date); + $iD[0] = sprintf("%02d", $iD[0]); + $iD[1] = sprintf("%02d", $iD[1]); + $insert_date = "$iD[2]-$iD[0]-$iD[1]"; + } + $multi_alt_phones = $m[26]; + + $map_count=0; + if (length($multi_alt_phones)>4) + { + @map=@MT; @ALTm_phone_code=@MT; @ALTm_phone_number=@MT; @ALTm_phone_note=@MT; + @map = split(/\!/, $multi_alt_phones); + $map_count = ($#map +1); + if ($DBX) {print "multi-alt-entry: $a|$map_count|$multi_alt_phones\n";} + $g++; + $r=0; + while ($r < $map_count) + { + @ncn=@MT; + @ncn = split(/\_/, $map[$r]); + print "$ncn[0]|$ncn[1]|$ncn[2]"; + + if (length($forcephonecode) > 0) + {$ALTm_phone_code[$r] = $forcephonecode;} + else + {$ALTm_phone_code[$r] = $ncn[1];} + if (length($ALTm_phone_code[$r]) < 1) + {$ALTm_phone_code[$r]='1';} + $ALTm_phone_number[$r] = $ncn[0]; + $ALTm_phone_note[$r] = $ncn[2]; + $r++; + } + } + } + + if (length($rank)<1) {$rank='0';} + + + if ($DBX) {print "$a|$phone_number\n";} + + $a++; + + if ($q < 1) + { + if ($a =~ /100$/i) {print STDERR "0 $a\r";} + if ($a =~ /200$/i) {print STDERR "+ $a\r";} + if ($a =~ /300$/i) {print STDERR "| $a\r";} + if ($a =~ /400$/i) {print STDERR "\\ $a\r";} + if ($a =~ /500$/i) {print STDERR "- $a\r";} + if ($a =~ /600$/i) {print STDERR "/ $a\r";} + if ($a =~ /700$/i) {print STDERR "| $a\r";} + if ($a =~ /800$/i) {print STDERR "+ $a\r";} + if ($a =~ /900$/i) {print STDERR "0 $a\r";} + if ($a =~ /000$/i) {print "$a|$b|$c|$d|$e|$f|$g|$phone_number|\n";} + } + + } + + + ### open the stats out file for writing ### + open(Sout, ">>$VDHLOGfile") + || die "Can't open $VDHLOGfile: $!\n"; + + + ### close file handler and DB connections ### + $Falert = "\n\nTOTALS FOR $FILEname:\n"; + $Falert .= "Lines in lead file: $a\n"; + $Falert .= "Lines in new file: $b\n"; + $Falert .= "No-Phone records: $c\n"; + + if ($q < 1) {print "$Falert";} + print Sout "$Falert"; + $Ealert .= "$Falert"; + + close(infile); + close(Pout); + close(Sout); + chmod 0777, "$VDHLOGfile"; + + ### Move file to the DONE directory locally + if (!$T) {`mv -f $dir1/$FILEname $dir2/$FILEname`;} + if (!$T) {`mv -f $dir2/$FILEname$pipe $dir3/$FILEname$pipe`;} + + } + } + $i++; + } + + +$dbhA->disconnect(); + +### calculate time to run script ### +$secY = time(); +$secZ = ($secY - $secX); +$secZm = ($secZ /60); + +if ($q < 1) + { + print "script execution time in seconds: $secZ minutes: $secZm\n"; + } + +###### EMAIL SECTION + +if ( (length($Ealert)>5) && (length($email_list) > 3) ) + { + if ($q < 1) {print "Sending email: $email_list\n";} + + use MIME::QuotedPrint; + use MIME::Base64; + use Mail::Sendmail; + + $mailsubject = "VICIDIAL LEAD FILE LOAD $pulldate0"; + + %mail = ( To => "$email_list", + From => "$email_sender", + Subject => "$mailsubject", + Message => "VICIDIAL LEAD FILE LOAD $pulldate0\n\n$Ealert\n" + ); + sendmail(%mail) or die $mail::Sendmail::error; + if ($q < 1) {print "ok. log says:\n", $mail::sendmail::log;} ### print mail log for status + } + +exit; diff --git a/agc_2-X/trunk/install.pl b/agc_2-X/trunk/install.pl index 0acff221..34dbf25a 100644 --- a/agc_2-X/trunk/install.pl +++ b/agc_2-X/trunk/install.pl @@ -22,6 +22,7 @@ # 91105-1359 - Added MIX directory to /var/spool/asterisk/monitor # 91123-0001 - Added FTP2 directory to /var/spool/asterisk/monitorDONE # 100428-0936 - Added DB custom user/pass fields +# 101217-0520 - Added PREPROCESS directory # ############################################ @@ -2239,11 +2240,16 @@ if ($WEBONLY < 1) { print "Creating $PATHhome/LEADS_IN directories...\n"; if (!-e "$PATHhome/libs/Asterisk") {`mkdir -p $PATHhome/libs/Asterisk`;} - if (!-e "$PATHhome/LEADS_IN/DONE") + if (!-e "$PATHhome/LEADS_IN/DONE") { `mkdir -p $PATHhome/LEADS_IN/DONE`; `chmod -R 0766 $PATHhome/LEADS_IN`; } + if (!-e "$PATHhome/PREPROCESS/DONE") + { + `mkdir -p $PATHhome/PREPROCESS/DONE`; + `chmod -R 0766 $PATHhome/PREPROCESS`; + } if (!-e "$PATHhome/VTIGER_IN/DONE") { `mkdir -p $PATHhome/VTIGER_IN/DONE`; diff --git a/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt b/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt index c9638753..6531fe41 100644 --- a/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt +++ b/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt @@ -494,6 +494,7 @@ STATUSES WITHIN THE ACTIVE LISTS FOR THIS CAMPAIGN|| SHOW LEAD STATUSES IN THIS CAMPAIGN|| RELOAD NOW|| refresh|| +You can also set a label to ---HIDE--- to hide both the label and the field|| AST_LISTS_campaign_stats.php diff --git a/agc_2-X/trunk/www/agc/vicidial.php b/agc_2-X/trunk/www/agc/vicidial.php index 7b906e8e..fefc1397 100644 --- a/agc_2-X/trunk/www/agc/vicidial.php +++ b/agc_2-X/trunk/www/agc/vicidial.php @@ -326,10 +326,11 @@ # 101128-0102 - Added list webform override options # 101207-1621 - Added scroll to the top after in-group, pause code, etc... selections, and added focus blur to several functions # 101208-1210 - Fixed focus/blur coding to work after Dispo +# 101216-1758 - Added the ability to hide fields if the label is set to ---HIDE--- in System Settings # -$version = '2.4-303'; -$build = '101208-1210'; +$version = '2.4-304'; +$build = '101216-1758'; $mel=1; # Mysql Error Log enabled = 1 $mysql_log_count=69; $one_mysql_log=0; @@ -11540,34 +11541,90 @@ $zi=2; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/agc_2-X/trunk/www/vicidial/admin.php b/agc_2-X/trunk/www/vicidial/admin.php index b6b2f884..511976ee 100644 --- a/agc_2-X/trunk/www/vicidial/admin.php +++ b/agc_2-X/trunk/www/vicidial/admin.php @@ -2620,13 +2620,14 @@ else # 101123-2214 - Added api_manual_dial and manual_dial_call_time_check campaign options # 101127-2232 - Added webform override options to lists # 101208-0341 - Changed some descriptions and field names in Phones -# 101209-2027 - Added display_leads_count option for campaign codificatino screens +# 101209-2027 - Added display_leads_count option for campaign modification screens +# 101216-1838 - Changed Realtime report links to go to new realtime_report # # 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-292'; -$build = '101209-2027'; +$admin_version = '2.4-293'; +$build = '101216-1838'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -7179,7 +7180,7 @@ if ($ADD==99999)

- Default Field Labels - These 19 fields allow you to set the name as it will appear in the ViciDial agent interface as well as the administrative modify lead page. Default is empty which will use the hard-coded defaults in the agent interface. + Default Field Labels - These 19 fields allow you to set the name as it will appear in the ViciDial agent interface as well as the administrative modify lead page. Default is empty which will use the hard-coded defaults in the agent interface. You can also set a label to ---HIDE--- to hide both the label and the field.
@@ -18572,7 +18573,7 @@ if ($ADD==31) { echo "\n"; } - echo "\n"; + echo "\n"; echo "
:   :   :   :
:
: :
: : :
: : :
: - + ";} + else + {echo "$label_title: ";} + if ($label_first_name == '---HIDE---') + {echo "  ";} + else + {echo "  $label_first_name: ";} + if ($label_middle_initial == '---HIDE---') + {echo "  ";} + else + {echo "  $label_middle_initial: ";} + if ($label_last_name == '---HIDE---') + {echo "  ";} + else + {echo "  $label_last_name: ";} + + echo "
"; + + if ($label_address1 == '---HIDE---') + {echo " ";} + else + {echo "$label_address1: ";} + + echo "
"; + + if ($label_address2 == '---HIDE---') + {echo " ";} + else + {echo "$label_address2: ";} + + echo ""; + + if ($label_address3 == '---HIDE---') + {echo " ";} + else + {echo "$label_address3: ";} + + echo "
"; + + if ($label_city == '---HIDE---') + {echo " ";} + else + {echo "$label_city: ";} + + echo ""; + + if ($label_state == '---HIDE---') + {echo " ";} + else + {echo "$label_state: ";} + + echo ""; + + if ($label_postal_code == '---HIDE---') + {echo " ";} + else + {echo "$label_postal_code: ";} + + echo "
"; + + if ($label_province == '---HIDE---') + {echo " ";} + else + {echo "$label_province: ";} + + echo ""; + + if ($label_vendor_lead_code == '---HIDE---') + {echo " ";} + else + {echo "$label_vendor_lead_code: ";} + + echo ""; + + echo "$label_gender: "; + + echo "
"; + + echo "$label_phone_number: "; + if ( (ereg('Y',$disable_alter_custphone)) or (ereg('HIDE',$disable_alter_custphone)) ) { echo "                     "; @@ -11577,27 +11634,50 @@ $zi=2; { echo ""; } - ?> - : :
: :
: - - \n";} + echo ""; + + if ($label_phone_code == '---HIDE---') + {echo " ";} else - {echo "\n";} + {echo "$label_phone_code: ";} + + echo ""; + + if ($label_alt_phone == '---HIDE---') + {echo " ";} + else + {echo "$label_alt_phone: ";} + + echo "
"; + + if ($label_security_phrase == '---HIDE---') + {echo " ";} + else + {echo "$label_security_phrase: ";} + + echo ""; + + if ($label_email == '---HIDE---') + {echo " ";} + else + {echo "$label_email: ";} + + echo "
"; + + if ($label_comments == '---HIDE---') + { + echo " \n"; + } + else + { + echo "$label_comments: "; + if ( ($multi_line_comments) ) + {echo "\n";} + else + {echo "\n";} + } + ?> Real-Time Real-Time
\n"; echo ""; } - echo "\n"; + echo "\n"; echo "\n"; if ($SSoutbound_autodial_active < 1) { @@ -28349,7 +28350,7 @@ if ($ADD==999999) echo "Real-Time Reports
\n"; echo "
    \n"; if ( (preg_match("/Real-Time Main Report/",$LOGallowed_reports)) or (preg_match("/ALL REPORTS/",$LOGallowed_reports)) ) - {echo "
  • Real-Time Main Report\n";} + {echo "
  • Real-Time Main Report\n";} # echo "
      Real-Time SIP: Listen - Barge\n"; # echo "
      Real-Time IAX: Listen - Barge

    \n"; if ( (preg_match("/Real-Time Campaign Summary/",$LOGallowed_reports)) or (preg_match("/ALL REPORTS/",$LOGallowed_reports)) )
\n"; @@ -20167,7 +20168,7 @@ if ($ADD==34) { echo " List Mix Real-Time Screen Real-Time Screen