Files
agc_2-X/bin/VICIDIAL_IN_new_leads_file.pl
T
mattf d45ebf46a4 Added additional extended vl fields
Added new vote17csv CLI lead loading format

git-svn-id: svn://192.168.202.10@1856 3d104415-ff17-0410-8863-d5cf3c621b8a
2012-09-07 20:04:36 +00:00

3003 lines
102 KiB
Perl

#!/usr/bin/perl
#
# VICIDIAL_IN_new_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) 2012 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
#
#
# CHANGES
# 60615-1543 - Added gmt_offset_now lookup for each lead
# - Added option to force a gmt value(field after COMMENTS field)
# 60616-0958 - Added listID override feature to force all leads into same list
# 60807-1003 - Changed to DBI
# - Changed to use /etc/astguiclient.conf for configs
# 60906-1055 - Added filter of non-digits in alt_phone field
# 60913-1236 - Fixed MySQL bugs and non-debug bug
# - Added duplicate check flag option within same list
# 61127-1132 - Added new DST methods
# 61128-1037 - Added postal codes GMT lookup option
# 70510-1518 - Added campaign and system duplicate check and phonecode override
# 70801-0912 - Added called count and status to import leads format (fields 24 and 25)
# 70815-2128 - Added entry_date to import leads format (field 26)
# 80128-0105 - Fixed bugs in file loading
# 80428-0320 - UTF8 update
# 80713-0023 - Added last_local_call_time field default of 2008-01-01
# 80730-1607 - Added minicsv format
# 80812-1204 - Added FTP grab options and summary email options
# 80829-2301 - Added multi-alt-phone entry insertion capability
# 90324-1038 - Added minicsv02 format
# 90401-1340 - Fixed quiet flag functionality
# 90721-1315 - Added rank and owner as vicidial_list fields, stdrankowner format
# 90728-1255 - Added fixed254 file format
# 90802-0758 - Added sctab08 file format
# 90810-0956 - Added sccsv11 file format
# 90830-0953 - Added forcelistfilename option
# 91112-0645 - Added title/alt_phone duplicate checks
# 91129-2202 - removed SELECT STAR and formatting fixes
# 100118-0527 - Added new Australian and New Zealand DST schemes (FSO-FSA and LSS-FSA)
# 100204-2333 - Added dccsv10 file format
# 100221-0939 - Added dccsv43 file format with custom cid lookup
# 100427-0434 - Added ability to create new list in system for each new loaded file
# 100610-0756 - Added dccsv52 file format
# 100624-2143 - Added dccsvref52 file format
# 100928-1121 - Added file-prefix-filter option
# 110420-0944 - Fixed file prefix issue with multiple processes running
# 110424-0948 - Added time-zone-code-gmt option to use time zone code from the owner field
# 110705-1913 - Added options for USACAN prefix(no 0 or 1) and valid areacode filtering
# 110929-1423 - Added new format for abbreviated timezone in owner(pipe30tz) and list creation options
# 120713-1009 - Added new --duplicate-tnm-delete option to check for a duplicate phone with different title and delete existing if found in same list
# 120907-1109 - Added vote17csv format
#
$version = '120907-1109';
$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 = <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/newleads.$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 " [--quiet] = quiet\n";
print " [--test] = test\n";
print " [--version] = version\n";
print " [--forcegmt] = forces gmt value of column after comments column\n";
print " [--debug] = debug output\n";
print " [--format=standard] = ability to define a format, standard is default, formats allowed shown in examples\n";
print " [--forcelistid=1234] = overrides the listID given in the file with the 1234\n";
print " [--forcelistfilename] = overrides the listID using last number in filename: (XYZ_1234.txt = list ID 1234)\n";
print " [--forcephonecode=44] = overrides the phone_code given in the lead with the 44\n";
print " [--file-prefix-filter=WXYZ] = will only process lead files that begin with the characters you define\n";
print " [--new-list-for-each-file] = creates a new list for each file loaded, listID = YYYYMMDDX where X is incremented\n";
print " [--new-listid-prefix=X] = prefix for listID when creating new lists, must be only numbers, and 4 or less digits\n";
print " [--new-listname-prefix=X] = prefix for list name when creating new lists, will be followed by filename\n";
print " [--new-list-campaign=X] = campaign that the new list will be assigned to\n";
print " [--new-list-active=X] = Y or N, if list is to be set as active when created, default N\n";
print " [--new-list-reset-times=X] = reset times(4 digits each dash separated) default is blank\n";
print " [--new-list-tz-setting=X] = COUNTRY_AND_AREA_CODE|POSTAL_CODE|NANPA_PREFIX|OWNER_TIME_ZONE_CODE default COUNTRY_AND_AREA_CODE\n";
print " [--USACAN-prefix-check] = check for the 4th digit 2-9, USA and Canada validation\n";
print " [--USACAN-areacode-check] = check for the valid phone code 1 areacodes, USA and Canada validation\n";
print " [--duplicate-check] = checks for the same phone number in the same list id before inserting lead\n";
print " [--duplicate-campaign-check] = checks for the same phone number in the same campaign before inserting lead\n";
print " [--duplicate-system-check] = checks for the same phone number in the entire system before inserting lead\n";
print " [--duplicate-tap-list-check] = checks for the same title/alt-number in the same list ID before inserting lead\n";
print " [--duplicate-tap-system-check] = checks for the same title/alt-number in the entire system before inserting lead\n";
print " [--duplicate-tnm-delete] = checks for same phone and title in same list then deletes original if title is different\n";
print " [--dob-mmddyyy] = checks for slashes in the date of birth field and formats from MM/DD/YYYY to MySQL\n";
print " [--dob-ddmmyyy] = checks for slashes in the date of birth field and formats from DD/MM/YYYY to MySQL\n";
print " [--postal-code-gmt] = checks for the time zone based on the postal code given where available\n";
print " [--time-zone-code-gmt] = checks for the time zone based on the owner field time zone code given where available\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 "pipe30tz:\n";
print "TEST01||09292011|1|5125554727||Mike||Frank|||||||||||||||||C|2145559922|TESTSURVEY|TESTSURVEY|111\n";
print "vote17csv:\n";
print "Voter ID,County Code,Name Last,Gender,Race,Birth Date,Party Affiliation,Precinct,Congressional District,House District,Senate District,County Commission District,School Board District,Age Bracket,_2010_GEN,_2012_PRI_A_Date,Phone_10digit\n";
print "\"110306742\",\"DAD\",\"Da Silva Ramos\",\"F\",\"5\",\"06/12/1950\",\"DEM\",\"100\",\"23\",\"0\",\"0\",\"0\",\"0\",\"4\",\"A\",\"\",\"0033559433\"\n\n";
print "dccsv43, dccsvref51, dccsv52 and dccsvref52:\n";
print "---format too confusing to list in the help screen---\n\n";
exit;
}
else
{
if ($args =~ /--quiet/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 =~ /--test/i)
{
$T=1;
$TEST=1;
if ($q < 1) {print "\n----- TESTING -----\n\n";}
}
if ($args =~ /-forcegmt/i)
{
$forcegmt=1;
if ($q < 1) {print "\n----- FORCE GMT -----\n\n";}
}
if ($args =~ /-forcelistid=/i)
{
@data_in = split(/-forcelistid=/,$args);
$forcelistid = $data_in[1];
$forcelistid =~ s/ .*//gi;
if ($q < 1) {print "\n----- FORCE LISTID OVERRIDE: $forcelistid -----\n\n";}
}
else
{$forcelistid = '';}
if ($args =~ /-forcelistfilename/i)
{
$forcelistfilename=1;
if ($q < 1) {print "\n----- FORCE LISTID FROM FILENAME -----\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 =~ /--USACAN-prefix-check/i)
{
$usacan_prefix_check=1;
if ($q < 1) {print "\n----- USACAN PREFIX CHECK -----\n\n";}
}
if ($args =~ /--USACAN-areacode-check/i)
{
$usacan_areacode_check=1;
if ($q < 1) {print "\n----- USACAN AREACODE CHECK -----\n\n";}
}
if ($args =~ /-duplicate-check/i)
{
$dupcheck=1;
if ($q < 1) {print "\n----- DUPLICATE CHECK -----\n\n";}
}
if ($args =~ /-duplicate-campaign-check/i)
{
$dupcheckcamp=1;
if ($q < 1) {print "\n----- DUPLICATE CAMPAIGN CHECK -----\n\n";}
}
if ($args =~ /-duplicate-system-check/i)
{
$dupchecksys=1;
if ($q < 1) {print "\n----- DUPLICATE SYSTEM CHECK -----\n\n";}
}
if ($args =~ /-duplicate-tap-list-check/i)
{
$duptapchecklist=1;
if ($q < 1) {print "\n----- DUPLICATE TITLE/ALT-PHONE LIST CHECK -----\n\n";}
}
if ($args =~ /-duplicate-tap-system-check/i)
{
$duptapchecksys=1;
if ($q < 1) {print "\n----- DUPLICATE TITLE/ALT-PHONE SYSTEM CHECK -----\n\n";}
}
if ($args =~ /-duplicate-tnm-delete/i)
{
$duptnmdelete=1;
if ($q < 1) {print "\n----- DUPLICATE TITLE DIFF DELETE -----\n\n";}
}
if ($args =~ /--dob-mmddyyy/i)
{
$dob_mmddyyy=1;
if ($q < 1) {print "\n----- DOB FORMAT MMDDYYYY -----\n\n";}
}
if ($args =~ /--dob-ddmmyyy/i)
{
$dob_ddmmyyy=1;
if ($q < 1) {print "\n----- DOB FORMAT DDMMYYYY -----\n\n";}
}
if ($args =~ /-postal-code-gmt/i)
{
$postalgmt=1;
if ($q < 1) {print "\n----- POSTAL CODE TIMEZONE -----\n\n";}
}
if ($args =~ /-time-zone-code-gmt/i)
{
$tzcodegmt=1;
if ($q < 1) {print "\n----- TZ CODE TIMEZONE -----\n\n";}
}
if ($args =~ /-new-list-for-each-file/i)
{
$new_list_for_each_file=1;
if ($q < 1) {print "\n----- NEW LIST FOR EACH FILE -----\n\n";}
}
if ($args =~ /--new-listid-prefix=/i)
{
@data_in = split(/--new-listid-prefix=/,$args);
$list_id_prefix = $data_in[1];
$list_id_prefix =~ s/ .*//gi;
if ($q < 1) {print "\n----- NEW LISTID PREFIX: $list_id_prefix -----\n\n";}
}
else
{$list_id_prefix = '';}
if ($args =~ /--new-listname-prefix=/i)
{
@data_in = split(/--new-listname-prefix=/,$args);
$list_name_prefix = $data_in[1];
$list_name_prefix =~ s/ .*//gi;
if ($q < 1) {print "\n----- NEW LISTNAME PREFIX: $list_name_prefix -----\n\n";}
}
else
{$list_name_prefix = '';}
if ($args =~ /--new-list-campaign=/i)
{
@data_in = split(/--new-list-campaign=/,$args);
$list_campaign = $data_in[1];
$list_campaign =~ s/ .*//gi;
if ($q < 1) {print "\n----- NEW LIST CAMPAIGN: $list_campaign -----\n\n";}
}
else
{$list_campaign = '';}
if ($args =~ /--new-list-active=/i)
{
@data_in = split(/--new-list-active=/,$args);
$active_list = $data_in[1];
$active_list =~ s/ .*//gi;
if ($q < 1) {print "\n----- NEW LIST ACTIVE: $active_list -----\n\n";}
}
else
{$active_list = 'N';}
if ($args =~ /--new-list-reset-times=/i)
{
@data_in = split(/--new-list-reset-times=/,$args);
$reset_time = $data_in[1];
$reset_time =~ s/ .*//gi;
if ($q < 1) {print "\n----- NEW LIST RESET TIMES: $reset_time -----\n\n";}
}
else
{$reset_time = '';}
if ($args =~ /--new-list-tz-setting=/i)
{
@data_in = split(/--new-list-tz-setting=/,$args);
$time_zone_setting = $data_in[1];
$time_zone_setting =~ s/ .*//gi;
if ($q < 1) {print "\n----- NEW LIST TZ SETTING: $time_zone_setting -----\n\n";}
}
else
{$time_zone_setting = 'COUNTRY_AND_AREA_CODE';}
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_new_leads_file.pl --\n\n";
print "This program is designed to take a tab delimited file and import it 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/LEADS_IN";
$dir2 = "$PATHhome/LEADS_IN/DONE";
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)
{
$passed_file_filter=0;
if ($FILES[$i] !~ /^$file_prefix_filter/)
{
if ($DB > 0) {print "SKIPPING FILE, NO FILTER MATCH: $FILES[$i]\n";}
}
else
{$passed_file_filter=1;}
}
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 = '';
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";}
$passed_file_filter=1;
if (length($file_prefix_filter)>0)
{
$passed_file_filter=0;
if ($FILES[$i] !~ /^$file_prefix_filter/)
{
if ($DB > 0) {print "SKIPPING FILE, NO FILTER MATCH: $FILES[$i]\n";}
}
else
{$passed_file_filter=1;}
}
if ( ($FILES[$i] !~ /^TRANSFERRED/i) && ($size1 eq $size2) && (length($FILES[$i]) > 4) && ($passed_file_filter > 0) )
{
$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]`;
if ($forcelistfilename > 0)
{
$forcelistfilename_name = $FILES[$i];
$forcelistfilename_name =~ s/\..*//gi;
@forcelistfilename_nameARY = split(/_/, $forcelistfilename_name);
$forcelistfilename_listid = $forcelistfilename_nameARY[$#forcelistfilename_nameARY];
$forcelistfilename_listid =~ s/\D//gi;
if ($DB > 0) {print "$forcelistfilename_listid|$#forcelistfilename_nameARY|$forcelistfilename_name|$FILES[$i]\n";}
}
if ($new_list_for_each_file > 0)
{
$dup_list_id=1;
$xloop=0;
$x=1;
$new_list_id = "$list_id_prefix$listdate$x";
while ( ($xloop < 10000) && ($dup_list_id > 0) )
{
$stmtA = "SELECT count(*) from vicidial_lists where list_id='$new_list_id';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$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;
$dup_list_id = $aryA[0];
}
$sthA->finish();
if ($dup_list_id > 0)
{
$x++;
$new_list_id = "$list_id_prefix$listdate$x";
}
$xloop++;
}
$forcelistfilename_listid = $new_list_id;
$stmtZ = "INSERT INTO vicidial_lists (list_id,list_name,list_description,campaign_id,active,list_changedate,time_zone_setting,reset_time) values('$new_list_id','$list_name_prefix $FILES[$i]','Created: $insert_date','$list_campaign','$active_list','$insert_date','$time_zone_setting','$reset_time');";
if (!$T) {$affected_rows = $dbhA->do($stmtZ); } # or die "Couldn't execute query: |$stmtZ|\n";
if ($DB > 0) {print "LIST CREATED: $new_list_id|$affected_rows|$stmtZ\n";}
}
### open the in file for reading ###
open(infile, "$dir2/$source$FILES[$i]")
|| die "Can't open $source$FILES[$i]: $!\n";
### Grab Server values from the database
$stmtA = "SELECT local_gmt FROM servers where server_ip = '$server_ip';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
@aryA = $sthA->fetchrow_array;
$DBSERVER_GMT = $aryA[0];
if (length($DBSERVER_GMT)>0) {$SERVER_GMT = $DBSERVER_GMT;}
$sthA->finish();
$LOCAL_GMT_OFF = $SERVER_GMT;
$LOCAL_GMT_OFF_STD = $SERVER_GMT;
if ($isdst) {$LOCAL_GMT_OFF++;}
if ($DB) {print "SEED TIME $secX : $year-$mon-$mday $hour:$min:$sec LOCAL GMT OFFSET NOW: $LOCAL_GMT_OFF\n";}
$a=0; ### each line of input file counter ###
$b=0; ### status of 'APPROVED' counter ###
$c=0; ### status of 'DECLINED' counter ###
$d=0; ### status of 'REFERRED' counter ###
$e=0; ### status of 'ERROR' counter ###
$f=0; ### number of 'DUPLICATE' counter ###
$g=0; ### number of leads with multi-alt-entries
$h=0; ### number of 'INVALID' counter ###
$multi_insert_counter=0;
$multistmt='';
$rank='';
$owner='';
#if ($DB)
while (<infile>)
{
@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 minicsv02 lead files
# name,address1,city,state,postal_code,phone_number
# "Adam Smith","123 Fourth St","Englishtown","NS","B0C1H0","902-555-1212"
if ( ($format =~ /minicsv02/) && ($format_set < 1) )
{
@name=@MT;
$vendor_lead_code = '';
$source_id = '';
$list_id = '995';
$phone_code = '1';
$phone_number = $m[5]; chomp($phone_number); $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$title = '';
$full_name = $m[0]; @name = split(/ /, $full_name);
$first_name = $name[0]; chomp($first_name);
$last_name = "$name[1] $name[2]"; chomp($first_name);
$middle_initial = '';
$address1 = $m[1]; chomp($address1);
$address2 = '';
$address3 = '';
$city = $m[2]; chomp($city);
$state = $m[3]; chomp($state);
$province = '';
$postal_code = $m[4]; chomp($postal_code);
$country = 'USA';
$gender = 'U';
$date_of_birth = '0000-00-00';
$alt_phone = '';
$email = '';
$security_phrase = '';
$comments = '';
$called_count = 0;
$status = 'NEW';
$format_set++;
}
# This is the format for the minicsv lead files
#"105 Fifth St","Steinhatchee","Frank Smith","3525556601","FL","32359"
if ( ($format =~ /minicsv/) && ($format_set < 1) )
{
@name=@MT;
$vendor_lead_code = '';
$source_id = '';
$list_id = '995';
$phone_code = '1';
$phone_number = $m[3]; chomp($phone_number); $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$title = '';
$full_name = $m[2]; @name = split(/ /, $full_name);
$first_name = $name[1]; chomp($first_name);
$last_name = "$name[0] $name[2]"; chomp($first_name);
$middle_initial = '';
$address1 = $m[0]; chomp($address1);
$address2 = '';
$address3 = '';
$city = $m[1]; chomp($city);
$state = $m[4]; chomp($state);
$province = '';
$postal_code = $m[5]; chomp($postal_code);
$country = 'USA';
$gender = 'U';
$date_of_birth = '0000-00-00';
$alt_phone = '';
$email = '';
$security_phrase = '';
$comments = '';
$called_count = 0;
$status = 'NEW';
$format_set++;
}
# This is the format for the vote17csv lead files
# Voter ID,County Code,Name Last,Gender,Race,Birth Date,Party Affiliation,Precinct,Congressional District,House District,Senate District,County Commission District,School Board District,Age Bracket,_2010_GEN,_2012_PRI_A_Date,Phone_10digit
# "110555742","DAD","Bob Smith","F","5","06/14/1970","DEM","100","23","0","0","0","0","4","A","","8135559433"
if ( ($format =~ /vote17csv/) && ($format_set < 1) )
{
@name=@MT;
$vendor_lead_code = '';
$source_id = $m[0]; # voter ID number
$list_id = '995';
$phone_code = '1';
$phone_number = $m[16]; chomp($phone_number); $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$title = $m[6]; # political party
$first_name = '';
$last_name = $m[2]; chomp($first_name);
$middle_initial = '';
$address1 = $m[9]; # state House district
$address2 = $m[10]; # state Senate district
$address3 = $m[1]; # county
$city = '';
$state = $m[4]; # race/ethnicity
$province = $m[7]; # precinct
$postal_code = '';
$country = 'USA';
$gender = $m[3];
$date_of_birth = $m[5];
$alt_phone = $m[12]; # school district
$email = $m[11]; # county commission district
$security_phrase = ''; # first survey question response
$comments = '';
$rank = '0';
$owner = $m[8]; # US Congress district
$called_count = 0;
$status = 'NEW';
$format_set++;
}
# This is the format for the fixed254 lead files
#"9185551212ROSE SMITHS 155 TIGER MOUNTAIN RD. RR 1 BOX 107 HENRYETTA OK74437-941DEMG 226555 0 "
if ( ($format =~ /fixed254/) && ($format_set < 1) )
{
$phone_number = substr($raw_number, 0, 10); $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$phone_code = '1';
$first_name = substr($raw_number, 10, 16); $first_name =~ s/\s+$//gi;
$last_name = substr($raw_number, 26, 24); $last_name =~ s/\s+$//gi;
$address1 = substr($raw_number, 50, 40); $address1 =~ s/\s+$//gi;
$address2 = substr($raw_number, 90, 40); $address2 =~ s/\s+$//gi;
$city = substr($raw_number, 130, 28); $city =~ s/\s+$//gi;
$state = substr($raw_number, 158, 2);
$postal_code = substr($raw_number, 160, 5); $postal_code =~ s/\s+$//gi;
$province = substr($raw_number, 169, 4);
$vendor_lead_code = substr($raw_number, 173, 8); $vendor_lead_code =~ s/^\s+//gi;
$security_phrase = substr($raw_number, 181, 4);
$source_id = '';
$list_id = '995';
$country = 'USA';
$gender = 'U';
$date_of_birth = '0000-00-00';
$alt_phone = '';
$email = '';
$comments = '';
$called_count = 0;
$status = 'NEW';
$format_set++;
}
# This is the format for the sctab08 lead files
# STATE\tNAME\tPHONE\tFAX\tADDRESS\tADDRESS2\tCITY\tZIP\n";
# AL\tTom Wilson\t205 5551212\t\t 1689 15th Ave\t\tBESSEMER\t35020
if ( ($format =~ /sctab08/) && ($format_set < 1) )
{
@name=@MT;
$vendor_lead_code = '';
$source_id = '';
$list_id = '995';
$phone_code = '1';
$phone_number = $m[2]; chomp($phone_number); $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$title = '';
$full_name = $m[1]; @name = split(/ /, $full_name);
$first_name = $name[1]; chomp($first_name);
$last_name = "$name[0] $name[2]"; chomp($first_name);
$middle_initial = '';
$address1 = $m[4]; chomp($address1);
$address2 = $m[5]; chomp($address1);
$address3 = '';
$city = $m[6]; chomp($city);
$state = $m[0]; chomp($state);
$province = '';
$postal_code = $m[7]; chomp($postal_code);
$country = 'USA';
$gender = 'U';
$date_of_birth = '0000-00-00';
$alt_phone = $m[3]; chomp($alt_phone); $alt_phone =~ s/\D//gi;
$email = '';
$security_phrase = '';
$comments = '';
$called_count = 0;
$status = 'NEW';
$format_set++;
}
# This is the format for the sccsv11 lead files
# STATE,ID,NAME,ADDRESS,ADDRESS2,CITY,COUNTY,PHONE,FAX,ZIP,COMMENTS
# AL,16700,Fairfax Retirement Center (Crowder House),1324 25th St,,FAIRFAX,JEFFERSON,(205) 555-0508,,35733,Comments
if ( ($format =~ /sccsv11/) && ($format_set < 1) )
{
$raw_number =~ s/\'|\t|\r|\n|\l//gi;
$raw_number =~ s/,/\|/gi;
@m = split(/\|/, $raw_number);
@name=@MT;
$state = $m[0]; chomp($state);
$vendor_lead_code = $m[1]; $vendor_lead_code =~ s/\D//gi;
$field = 2;
if ($m[$field] =~ /^\"/)
{
$full_name = "$m[$field]"; $field++;
$full_name .= "$m[$field]"; $field++;
}
else
{
$full_name = "$m[$field]"; $field++;
}
$full_name =~ s/\"|\)|\(|;//gi;
@name = split(/ /, $full_name);
$first_name = $name[1]; chomp($first_name);
$last_name = "$name[0] $name[2]"; chomp($first_name);
$middle_initial = '';
if ($m[$field] =~ /^\"/)
{
$address1 = "$m[$field]"; $field++;
$address1 .= "$m[$field]"; $field++;
}
else
{
$address1 = "$m[$field]"; $field++;
}
$address1 =~ s/\"|\)|\(|;//gi;
if ($m[$field] =~ /^\"/)
{
$address2 = "$m[$field]"; $field++;
$address2 .= "$m[$field]"; $field++;
}
else
{
$address2 = "$m[$field]"; $field++;
}
$address2 =~ s/\"|\)|\(|;//gi;
if ($m[$field] =~ /^\"/)
{
$city = "$m[$field]"; $field++;
$city .= "$m[$field]"; $field++;
}
else
{
$city = "$m[$field]"; $field++;
}
$city =~ s/\"|\)|\(|;//gi;
if ($m[$field] =~ /^\"/)
{
$province = "$m[$field]"; $field++;
$province .= "$m[$field]"; $field++;
}
else
{
$province = "$m[$field]"; $field++;
}
$province =~ s/\"|\)|\(|;//gi;
$phone_number = "$m[$field]"; $field++; $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$alt_phone = "$m[$field]"; $field++; $alt_phone =~ s/\D//gi;
$postal_code = "$m[$field]"; $field++;
if ($m[$field] =~ /^\"/)
{
$comments = "$m[$field]"; $field++;
$comments .= "$m[$field]"; $field++;
}
else
{
$comments = "$m[$field]"; $field++;
}
$comments =~ s/\"|\)|\(|;//gi;
$source_id = '';
$list_id = '995';
$phone_code = '1';
$title = '';
$address3 = '';
$country = 'USA';
$gender = 'U';
$date_of_birth = '0000-00-00';
$email = '';
$security_phrase = '';
$called_count = 0;
$status = 'NEW';
$format_set++;
}
# This is the format for the stdrankowner lead files (standard plus rank and owner )
#3857822|31022|105|01144|1625551212|MRS|B||BURTON|249 MUNDON ROAD|MALDON|ESSEX||||CM9 6PW|UK||||||COMMENTS|COUNT|STATUS|INS-DATE|RANK|OWNER
if ( ($format =~ /stdrankowner/) && ($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]";
}
$rank = $m[26];
$owner = $m[27];
$multi_alt_phones = $m[28];
$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-al-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++;
}
}
$format_set++;
}
# This is the format for the dccsv10 lead files
#"100998","ANGELA ","SMITH ","3145551212","3145551213","3145551214","0","3145551215","3145551216","0",
if ( ($format =~ /dccsv10/) && ($format_set < 1) )
{
$raw_number = $number;
chomp($number);
$number =~ s/,"0"//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);
$vendor_lead_code = $m[0]; chomp($vendor_lead_code);
$source_id = '';
$list_id = '929';
$phone_code = '1';
$first_name = $m[1]; chomp($first_name); $first_name =~ s/\s+$//gi;
$middle_initial = '';
$last_name = $m[2]; chomp($last_name); $last_name =~ s/\s+$//gi;
$phone_number = $m[3];
$USarea = substr($phone_number, 0, 3);
$title = '';
$address1 = '';
$address2 = '';
$address3 = $m[5]; chomp($alt_phone); $alt_phone =~ s/\D//gi;
$city = '';
$state = '';
$province = '';
$postal_code = '';
$country = '';
$gender = '';
$date_of_birth = '';
$alt_phone = $m[4]; chomp($alt_phone); $alt_phone =~ s/\D//gi;
$email = '';
$security_phrase = '';
$comments = '';
$called_count = '0';
$status = 'NEW';
$insert_date = $pulldate0;
$rank = '';
$owner = '';
$multi_alt_phones = '';
$r=0;
$map_count=0;
if (length($m[6]) > 9)
{
$ALTm_phone_number[$r] = $m[6];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
$g++;
}
if (length($m[7]) > 9)
{
$ALTm_phone_number[$r] = $m[7];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if (length($m[8]) > 9)
{
$ALTm_phone_number[$r] = $m[8];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if (length($m[9]) > 9)
{
$ALTm_phone_number[$r] = $m[9];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
$format_set++;
}
# This is the format for the dccsv43 lead files
#"BF_ID","RECORD_TYPE","LAST_NAME","FIRST_NAME","4ADDR1","5ADDR2","6CITY","STATE","ZIP","9ZIP4","ADDR_STATUS","DATE_PLACED","DATE_ADDED","DOB","LAST_LETTER","LAST_LETTER_DATE","LAST_WORKED","NEXT_ACTION_DATE","CAPTURE_CODE","CUR_CATEGORY","TIMES_DIALED","LAST_DIALED","TOTAL_PAID","DATE_LAST_PAID","NMBR_CALLS","NMBR_CONTACTS","NMBR_TIMES_WRKD","NMBR_LETTERS","STATUS_CODE","STATUS_DATE","SCORE","TIMES_TO_SERVICER","1ST-PMT-DEFAULT","TIME_ZONE","ORIG_CREDITOR","BALANCE","HOME_PHONE","WORK_PHONE","OTHER_PHONE","ACCT_OTHTEL2","ACCT_OTHTEL3","ACCT_OTHTEL4","ACCT_OTHTEL5"
#"II ACCT/1103566666 ","P","SMITH "," SAMMY","7838 W 109TH ST APT 12 "," ","OVERLAND PARK ","KS","66212","0000","G","20091110","20091110","19661216","NOLTTR","00000000","20091214","20091219","1000","03","000","00000000","000000000.00 ","00000000","0004","0003","0004","000","ACTIVE","20091110","0648","00"," ","C","HSBC ","000000692.09 ","9135551212","0000000000","0000000000","0000000000","0000000000","0000000000","0000000000"
if ( ($format =~ /dccsv43/) && ($format_set < 1) )
{
$raw_number = $number;
chomp($number);
$number =~ s/,\"0\"/,/gi;
$number =~ s/\t/\|/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/\|0000000000//gi;
$number =~ s/ //gi;
@m=@MT;
@m = split(/\|/, $number);
if ($DBX) {print "RAW: $#m-----$number\n";}
$vendor_lead_code = $m[0]; chomp($vendor_lead_code); $vendor_lead_code =~ s/\s+$//gi;
$vendor_lead_code =~s/II ACCT\///gi;
$vendor_lead_code =~s/WDRF //gi;
while (length($vendor_lead_code) > 10) {chop($vendor_lead_code);}
$source_id = $m[0]; chomp($source_id); $source_id =~ s/\s+$//gi;
$list_id = '929';
$phone_code = '1';
$first_name = $m[3]; chomp($first_name); $first_name =~ s/^\s+|\s+$//gi;
$middle_initial = '';
$last_name = $m[2]; chomp($last_name); $last_name =~ s/\s+$//gi;
$phone_number = $m[36]; $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$title = $m[25]; # number of contacts
$address1 = $m[4]; $address1 =~ s/\s+$//gi;
$address2 = $m[5]; $address2 =~ s/\s+$//gi;
$address3 = $m[34]; # orig creditor
$city = $m[6]; $city =~ s/\s+$//gi;
$state = $m[7];
$province = $m[35]; $province =~ s/\s+$//gi; # balance
$postal_code = $m[8];
$country = '';
$gender = '';
$date_of_birth = $m[13];
$dobYYYY = substr($date_of_birth, 0, 4);
$dobMM = substr($date_of_birth, 4, 2);
$dobDD = substr($date_of_birth, 6, 2);
$date_of_birth = "$dobYYYY-$dobMM-$dobDD";
$alt_phone = $m[37]; chomp($alt_phone); $alt_phone =~ s/\D//gi;
$email = $m[11]; # date placed
$security_phrase = ''; # looked-up geographic CID will go here
$comments = "$m[16]|$m[21]"; # last worked/dialed
$called_count = '0';
$status = 'NEW';
$insert_date = $pulldate0;
$rank = $m[26]; # number of times worked
$owner = $m[28]; # old status code
$multi_alt_phones = '';
$r=0;
$map_count=0;
if ( (length($m[38]) > 9) && ($m[38] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[38];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
$g++;
}
if ( (length($m[39]) > 9) && ($m[39] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[39];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[40]) > 9) && ($m[40] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[40];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[41]) > 9) && ($m[41] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[41];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[42]) > 9) && ($m[42] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[42];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
### look up the custom CID to use for this state
$stmtA = "SELECT cid from vicidial_custom_cid where state='$state';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
if($DBX){print STDERR "\n$sthArows|$stmtA|\n";}
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$security_phrase = $aryA[0];
}
$sthA->finish();
$format_set++;
}
# This is the format for the dccsvref51 lead files
#"BF_ID","RECORD_TYPE","LAST_NAME","FIRST_NAME","4ADDR1","5ADDR2","6CITY","STATE","ZIP","9ZIP4","ADDR_STATUS","DATE_PLACED","DATE_ADDED","DOB","LAST_LETTER","LAST_LETTER_DATE","LAST_WORKED","NEXT_ACTION_DATE","CAPTURE_CODE","CUR_CATEGORY","TIMES_DIALED","LAST_DIALED","TOTAL_PAID","DATE_LAST_PAID","NMBR_CALLS","NMBR_CONTACTS","NMBR_TIMES_WRKD","NMBR_LETTERS","STATUS_CODE","STATUS_DATE","SCORE","TIMES_TO_SERVICER","1ST-PMT-DEFAULT","TIME_ZONE","ORIG_CREDITOR","BALANCE","HOME_PHONE","WORK_PHONE","OTHER_PHONE","ACCT_OTHTEL2","ACCT_OTHTEL3","ACCT_OTHTEL4","ACCT_OTHTEL5"
#"II ACCT/1103566666 ","P","SMITH "," SAMMY","7838 W 109TH ST APT 12 "," ","OVERLAND PARK ","KS","66212","0000","G","20091110","20091110","19661216","NOLTTR","00000000","20091214","20091219","1000","03","000","00000000","000000000.00 ","00000000","0004","0003","0004","000","ACTIVE","20091110","0648","00"," ","C","HSBC ","000000692.09 ","9135551212","0000000000","0000000000","0000000000","0000000000","0000000000","0000000000"
if ( ($format =~ /dccsvref51/) && ($format_set < 1) )
{
$raw_number = $number;
chomp($number);
$number =~ s/,\"0\"/,/gi;
$number =~ s/\t/\|/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/\|0000000000//gi;
@m=@MT;
@m = split(/\|/, $number);
if ($DBX) {print "RAW: $#m-----$number\n";}
$vendor_lead_code = $m[0]; chomp($vendor_lead_code); $vendor_lead_code =~ s/\s+$//gi;
$vendor_lead_code =~s/II ACCT\///gi;
$vendor_lead_code =~s/WDRF //gi;
while (length($vendor_lead_code) > 10) {chop($vendor_lead_code);}
$source_id = $m[0]; chomp($source_id); $source_id =~ s/\s+$//gi;
$list_id = '929';
$phone_code = '1';
$first_name = $m[3]; chomp($first_name); $first_name =~ s/^\s+|\s+$//gi;
$middle_initial = '';
$last_name = $m[2]; chomp($last_name); $last_name =~ s/\s+$//gi;
$phone_number = $m[36]; $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$title = $m[25]; # number of contacts
$address1 = $m[4]; $address1 =~ s/\s+$//gi;
$address2 = $m[5]; $address2 =~ s/\s+$//gi;
$address3 = $m[34]; # orig creditor
$city = $m[6]; $city =~ s/\s+$//gi;
$state = $m[7];
$province = $m[35]; $province =~ s/\s+$//gi; # balance
$postal_code = $m[8];
$country = '';
$gender = '';
$date_of_birth = $m[13];
$dobYYYY = substr($date_of_birth, 0, 4);
$dobMM = substr($date_of_birth, 4, 2);
$dobDD = substr($date_of_birth, 6, 2);
$date_of_birth = "$dobYYYY-$dobMM-$dobDD";
$alt_phone = $m[37]; chomp($alt_phone); $alt_phone =~ s/\D//gi;
$email = $m[11]; # date placed
$security_phrase = ''; # looked-up geographic CID will go here
$comments = $m[43]; # ref-name
$called_count = '0';
$status = 'NEW';
$insert_date = $pulldate0;
$rank = $m[26]; # number of times worked
$owner = $m[28]; # old status code
$multi_alt_phones = '';
$r=0;
$map_count=0;
if ( (length($m[38]) > 9) && ($m[38] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[38];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
$g++;
}
if ( (length($m[39]) > 9) && ($m[39] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[39];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[40]) > 9) && ($m[40] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[40];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[41]) > 9) && ($m[41] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[41];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[42]) > 9) && ($m[42] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[42];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
### look up the custom CID to use for this state
$stmtA = "SELECT cid from vicidial_custom_cid where state='$state';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
if($DBX){print STDERR "\n$sthArows|$stmtA|\n";}
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$security_phrase = $aryA[0];
}
$sthA->finish();
$format_set++;
}
# This is the format for the dccsv52 lead files
#"BFRAME","RECORD_TYPE","LAST_NAME","FIRST_NAME","ADDR1","ADDR2","CITY","STATE","ZIP","ZIP4","ADDR_STATUS","DATE_PLACED","DATE_ADDED","DOB","LAST_LETTER","LAST_LETTER_DATE","LAST_WORKED","NEXT_ACTION_DATE","CAPTURE_CODE","CUR_CATEGORY","TIMES_DIALED","LAST_DIALED","TOTAL_PAID","DATE_LAST_PAID","NMBR_CALLS","NMBR_CONTACTS","NMBR_TIMES_WRKD","NMBR_LETTERS","STATUS_CODE","STATUS_DATE","SCORE","TIMES_TO_SERVICER","1ST-PMT-DEFAULT","TIME_ZONE","ORIG_CREDITOR","BALANCE","HOME_PHONE","WORK_PHONE","OTHER_PHONE","ACCT_OTHTEL2","ACCT_OTHTEL3","ACCT_OTHTEL4","ACCT_OTHTEL5","REF-NAME","REF-AD1","REF-AD2","REF-CITY","REF-ST","REF-POSTAL","REF-TEL1","REF-TEL2","SSN"
#"II ACCT/1103566666 ","P","SMITH "," SAMMY","7838 W 109TH ST APT 12 "," ","OVERLAND PARK ","KS","66212","0000","G","20091110","20091110","19661216","NOLTTR","00000000","20091214","20091219","1000","03","000","00000000","000000000.00 ","00000000","0004","0003","0004","000","ACTIVE","20091110","0648","00"," ","C","HSBC ","000000692.09 ","9135551212","0000000000","0000000000","0000000000","0000000000","0000000000","0000000000","","","",""," "," "," "," ","578888888"
if ( ($format =~ /dccsv52/) && ($format_set < 1) )
{
$raw_number = $number;
chomp($number);
$number =~ s/,\"0\"/,/gi;
$number =~ s/\t/\|/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/\|0000000000//gi;
@m=@MT;
@m = split(/\|/, $number);
if ($DBX) {print "RAW: $#m-----$number\n";}
$vendor_lead_code = $m[0]; chomp($vendor_lead_code); $vendor_lead_code =~ s/\s+$//gi;
$vendor_lead_code =~s/II ACCT\///gi;
$vendor_lead_code =~s/WDRF //gi;
while (length($vendor_lead_code) > 10) {chop($vendor_lead_code);}
$source_id = $m[0]; chomp($source_id); $source_id =~ s/\s+$//gi;
$list_id = '929';
$phone_code = '1';
$first_name = $m[3]; chomp($first_name); $first_name =~ s/^\s+|\s+$//gi;
$middle_initial = '';
$last_name = $m[2]; chomp($last_name); $last_name =~ s/\s+$//gi;
$title = $m[25]; # number of contacts
$address1 = $m[4]; $address1 =~ s/\s+$//gi;
$address2 = $m[5]; $address2 =~ s/\s+$//gi;
$address3 = $m[34]; # orig creditor
$city = $m[6]; $city =~ s/\s+$//gi;
$state = $m[7];
$province = $m[35]; $province =~ s/\s+$//gi; # balance
$postal_code = $m[8];
$country = '';
$gender = '';
$date_of_birth = $m[13];
$dobYYYY = substr($date_of_birth, 0, 4);
$dobMM = substr($date_of_birth, 4, 2);
$dobDD = substr($date_of_birth, 6, 2);
$date_of_birth = "$dobYYYY-$dobMM-$dobDD";
$email = $m[51]; # ssn
$security_phrase = ''; # looked-up geographic CID will go here
$comments = $m[43]; # ref-name
$called_count = '0';
$status = 'NEW';
$insert_date = $pulldate0;
$rank = $m[26]; # number of times worked
$owner = $m[28]; # old status code
$multi_alt_phones = '';
$number =~ s/\|0000000000//gi;
@m=@MT;
@m = split(/\|/, $number);
$m[36] =~ s/\D//gi; $m[37] =~ s/\D//gi; $m[38] =~ s/\D//gi; $m[39] =~ s/\D//gi; $m[40] =~ s/\D//gi; $m[41] =~ s/\D//gi; $m[42] =~ s/\D//gi;
$phone_number = $m[36]; $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$alt_phone='';
if ( (length($m[37]) > 9) && ($m[37] !~ /000000000/) )
{
$alt_phone = $m[37]; chomp($alt_phone);
}
$r=0;
$map_count=0;
if ( (length($m[38]) > 9) && ($m[38] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[38];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
$g++;
}
if ( (length($m[39]) > 9) && ($m[39] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[39];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[40]) > 9) && ($m[40] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[40];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[41]) > 9) && ($m[41] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[41];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
if ( (length($m[42]) > 9) && ($m[42] !~ /000000000/) )
{
$ALTm_phone_number[$r] = $m[42];
$ALTm_phone_code[$r] = '1';
$r++; $map_count++;
}
### look up the custom CID to use for this state
$stmtA = "SELECT cid from vicidial_custom_cid where state='$state';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
if($DBX){print STDERR "\n$sthArows|$stmtA|\n";}
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$security_phrase = $aryA[0];
}
$sthA->finish();
$format_set++;
}
# This is the format for the dccsvref52 lead files
#"BFRAME","RECORD_TYPE","LAST_NAME","FIRST_NAME","ADDR1","ADDR2","CITY","STATE","ZIP","ZIP4","ADDR_STATUS","DATE_PLACED","DATE_ADDED","DOB","LAST_LETTER","LAST_LETTER_DATE","LAST_WORKED","NEXT_ACTION_DATE","CAPTURE_CODE","CUR_CATEGORY","TIMES_DIALED","LAST_DIALED","TOTAL_PAID","DATE_LAST_PAID","NMBR_CALLS","NMBR_CONTACTS","NMBR_TIMES_WRKD","NMBR_LETTERS","STATUS_CODE","STATUS_DATE","SCORE","TIMES_TO_SERVICER","1ST-PMT-DEFAULT","TIME_ZONE","ORIG_CREDITOR","BALANCE","HOME_PHONE","WORK_PHONE","OTHER_PHONE","ACCT_OTHTEL2","ACCT_OTHTEL3","ACCT_OTHTEL4","ACCT_OTHTEL5","REF-NAME","REF-AD1","REF-AD2","REF-CITY","REF-ST","REF-POSTAL","REF-TEL1","REF-TEL2","SSN"
#"II ACCT/1103566666 ","P","SMITH "," SAMMY","7838 W 109TH ST APT 12 "," ","OVERLAND PARK ","KS","66212","0000","G","20091110","20091110","19661216","NOLTTR","00000000","20091214","20091219","1000","03","000","00000000","000000000.00 ","00000000","0004","0003","0004","000","ACTIVE","20091110","0648","00"," ","C","HSBC ","000000692.09 ","9135551212","0000000000","0000000000","0000000000","0000000000","0000000000","0000000000","","","",""," "," "," "," ","578888888"
if ( ($format =~ /dccsvref52/) && ($format_set < 1) )
{
$raw_number = $number;
chomp($number);
$number =~ s/,\"0\"/,/gi;
$number =~ s/\t/\|/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/\|0000000000//gi;
@m=@MT;
@m = split(/\|/, $number);
if ($DBX) {print "RAW: $#m-----$number\n";}
$vendor_lead_code = $m[0]; chomp($vendor_lead_code); $vendor_lead_code =~ s/\s+$//gi;
$vendor_lead_code =~s/II ACCT\///gi;
$vendor_lead_code =~s/WDRF //gi;
while (length($vendor_lead_code) > 10) {chop($vendor_lead_code);}
$source_id = $m[0]; chomp($source_id); $source_id =~ s/\s+$//gi;
$list_id = '929';
$phone_code = '1';
$first_name = $m[3]; chomp($first_name); $first_name =~ s/^\s+|\s+$//gi;
$middle_initial = '';
$last_name = $m[2]; chomp($last_name); $last_name =~ s/\s+$//gi;
$title = $m[25]; # number of contacts
$address1 = $m[4]; $address1 =~ s/\s+$//gi;
$address2 = $m[5]; $address2 =~ s/\s+$//gi;
$address3 = $m[34]; # orig creditor
$city = $m[6]; $city =~ s/\s+$//gi;
$state = $m[7];
$province = $m[35]; $province =~ s/\s+$//gi; # balance
$postal_code = $m[8];
$country = '';
$gender = '';
$date_of_birth = $m[13];
$dobYYYY = substr($date_of_birth, 0, 4);
$dobMM = substr($date_of_birth, 4, 2);
$dobDD = substr($date_of_birth, 6, 2);
$date_of_birth = "$dobYYYY-$dobMM-$dobDD";
$email = $m[51]; # ssn
$security_phrase = ''; # looked-up geographic CID will go here
$comments = $m[43]; # ref-name
$called_count = '0';
$status = 'NEW';
$insert_date = $pulldate0;
$rank = $m[26]; # number of times worked
$owner = $m[28]; # old status code
$multi_alt_phones = '';
$phone_number = $m[49]; $phone_number =~ s/\D//gi;
$USarea = substr($phone_number, 0, 3);
$alt_phone='';
if ( (length($m[50]) > 9) && ($m[50] !~ /000000000/) )
{
$alt_phone = $m[37]; chomp($alt_phone);
}
### look up the custom CID to use for this state
$stmtA = "SELECT cid from vicidial_custom_cid where state='$state';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
if($DBX){print STDERR "\n$sthArows|$stmtA|\n";}
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$security_phrase = $aryA[0];
}
$sthA->finish();
$format_set++;
}
# This is the format for the pipe30tz lead files
# TEST01||09292011|1|5125554727||Mike||Frank|||||||||||||||||C|2145559922|TESTSURVEY|TESTSURVEY|111
if ( ($format =~ /pipe30tz/) && ($format_set < 1) )
{
$vendor_lead_code = $m[0]; chomp($vendor_lead_code);
$source_id = $m[2]; chomp($source_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];
$owner = $m[25];
if ($owner =~ /E/) {$owner='EST';}
if ($owner =~ /C/) {$owner='CST';}
if ($owner =~ /M/) {$owner='MST';}
if ($owner =~ /P/) {$owner='PST';}
$security_phrase = $m[26];
$province = $m[27];
$address3 = $m[28];
$alt_phone = $m[29];
$list_id=$new_list_id;
$called_count=0;
$status='NEW';
$insert_date=$pulldate0;
$map_count=0;
$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 (length($forcelistfilename_listid) > 0)
{
$list_id = $forcelistfilename_listid; # set list_id to filename override value
}
if (length($forcelistid) > 0)
{
$list_id = $forcelistid; # set list_id to override value
}
if (length($forcephonecode) > 0)
{
$phone_code = $forcephonecode; # set phone_code to override value
}
if ( ($dob_mmddyyy > 0) && ($date_of_birth =~ /\//) )
{
@iD = split(/\//, $date_of_birth);
$iD[0] = sprintf("%02d", $iD[0]);
$iD[1] = sprintf("%02d", $iD[1]);
$date_of_birth = "$iD[2]-$iD[0]-$iD[1]";
}
if ( ($dob_ddmmyyy > 0) && ($date_of_birth =~ /\//) )
{
@iD = split(/\//, $date_of_birth);
$iD[0] = sprintf("%02d", $iD[0]);
$iD[1] = sprintf("%02d", $iD[1]);
$date_of_birth = "$iD[2]-$iD[1]-$iD[0]";
}
if ($DBX) {print "$a|$phone_number\n";}
$valid_lead=1;
##### Check for valid USA and Canada prefix #####
if ($usacan_prefix_check > 0)
{
$USprefix = substr($phone_number, 3, 1);
if ($USprefix < 2)
{
$valid_lead = '0';
if ($DBX) {print " Invalid USACAN prefix 4th digit: |$USprefix|$phone_number|\n";}
}
}
##### Check for valid USA and Canada areacodes #####
if ( ($usacan_areacode_check > 0) && ($valid_lead > 0) )
{
$USarea = substr($phone_number, 0, 3);
$stmtA = "SELECT count(*) from vicidial_phone_codes where areacode='$USarea' and country_code='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;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$valid_lead = $aryA[0];
if ($valid_lead < 1)
{
if ($DBX) {print " Invalid USACAN areacode: |$USprefix|$phone_number|\n";}
}
}
$sthA->finish();
}
##### Check for duplicate phone numbers in vicidial_list table entire database #####
if ($dupchecksys > 0)
{
$dup_lead=0;
$stmtA = "SELECT count(*) from vicidial_list where phone_number='$phone_number';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$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;
$dup_lead = $aryA[0];
$dup_lead_list=$list_id;
}
$sthA->finish();
if ($dup_lead < 1)
{
if ($phone_list =~ /\|$phone_number$US$list_id\|/)
{$dup_lead++;}
}
}
##### Check for duplicate phone numbers in vicidial_list table for one list_id #####
if ($dupcheck > 0)
{
$dup_lead=0;
$stmtA = "SELECT list_id from vicidial_list where phone_number='$phone_number' and list_id='$list_id' 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;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$dup_lead_list = $aryA[0];
$dup_lead++;
}
$sthA->finish();
if ($dup_lead < 1)
{
if ($phone_list =~ /\|$phone_number$US$list_id\|/)
{$dup_lead++;}
}
}
##### Check for duplicate phone numbers in vicidial_list table for all lists in a campaign #####
if ($dupcheckcamp > 0)
{
$dup_lead=0;
$dup_lists='';
$stmtA = "SELECT count(*) from vicidial_lists where list_id='$list_id';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
@aryA = $sthA->fetchrow_array;
$ci_recs = $aryA[0];
$sthA->finish();
if ($ci_recs > 0)
{
$stmtA = "SELECT campaign_id from vicidial_lists where list_id='$list_id';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
@aryA = $sthA->fetchrow_array;
$dup_camp = $aryA[0];
$sthA->finish();
$stmtA = "SELECT list_id from vicidial_lists where campaign_id='$dup_camp';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_count=0;
while ($sthArows > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$dup_lists .= "'$aryA[0]',";
$rec_count++;
}
$sthA->finish();
chop($dup_lists);
$stmtA = "SELECT list_id from vicidial_list where phone_number='$phone_number' and list_id IN($dup_lists) limit 1;";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_count=0;
while ($sthArows > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$dup_lead_list = "'$aryA[0]',";
$rec_count++;
$dup_lead=1;
}
$sthA->finish();
}
if ($dup_lead < 1)
{
if ($phone_list =~ /\|$phone_number$US$list_id\|/)
{$dup_lead++;}
}
}
##### Check for duplicate title/alt-phone in vicidial_list table entire database #####
if ($duptapchecksys > 0)
{
$dup_lead=0;
$stmtA = "SELECT count(*) from vicidial_list where title='$title' and alt_phone='$alt_phone';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$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;
$dup_lead = $aryA[0];
$dup_lead_list=$list_id;
}
$sthA->finish();
if ($dup_lead < 1)
{
if ($phone_list =~ /\|$alt_phone$title$US$list_id\|/)
{$dup_lead++;}
}
}
##### Check for duplicate title/alt-phone in vicidial_list table for one list_id #####
if ($duptapchecklist > 0)
{
$dup_lead=0;
$stmtA = "SELECT list_id from vicidial_list where title='$title' and alt_phone='$alt_phone' and list_id='$list_id' 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;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$dup_lead_list = $aryA[0];
$dup_lead++;
}
$sthA->finish();
if ($dup_lead < 1)
{
if ($phone_list =~ /\|$alt_phone$title$US$list_id\|/)
{$dup_lead++;}
}
}
##### Check for duplicate phone with different title in vicidial_list table for one list_id, delete if different #####
if ( ($dup_lead > 0) && ($duptnmdelete > 0) )
{
$tnm_delete=0;
$tnm_lead_id='';
$stmtA = "SELECT lead_id,title from vicidial_list where phone_number='$phone_number' and list_id='$list_id' 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;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$tnm_lead_id = $aryA[0];
$tnm_title_check = $aryA[1];
if ( (length($tnm_title_check) > 0) && (length($title) > 0) && ($tnm_title_check !~ /^$title$/) )
{$tnm_delete++;}
}
$sthA->finish();
if ($tnm_delete > 0)
{
$stmtZ = "DELETE FROM vicidial_list where lead_id='$tnm_lead_id' limit 1;";
if (!$T) {$affected_rows = $dbhA->do($stmtZ); } # or die "Couldn't execute query: |$stmtZ|\n";
if($DB){print STDERR "\n|$affected_rows|$tnm_title_check|$title|$tnm_lead_id|$list_id|$stmtZ|\n";}
$tnm_delete_count++;
}
}
##### final checks before inserting the lead
if ( (length($phone_number)>6) && ($dup_lead < 1) && ($valid_lead > 0) )
{
if ( ($duptapchecklist > 0) || ($duptapchecksys > 0) )
{$phone_list .= "$alt_phone$title$US$list_id|";}
else
{$phone_list .= "$phone_number$US$list_id|";}
# set default values
$modify_date = "";
$user = "";
$called_since_last_reset='N';
$gmt_offset = '0';
if ($forcegmt > 0)
{
$gmt_offset = $m[23]; # set GMT offset value to 24th field value
}
else
{
$postalgmt_found=0;
if ( ($postalgmt > 0) && (length($postal_code)>4) )
{
if ($phone_code =~ /^1$/)
{
$stmtA = "SELECT postal_code,state,GMT_offset,DST,DST_range,country,country_code from vicidial_postal_codes where country_code='$phone_code' and postal_code LIKE \"$postal_code%\";";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_count=0;
while ($sthArows > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$gmt_offset = $aryA[2]; $gmt_offset =~ s/\+| //gi;
$dst = $aryA[3];
$dst_range = $aryA[4];
$PC_processed++;
$rec_count++;
$postalgmt_found++;
if ($DBX) {print " Postal GMT record found for $postal_code: |$gmt_offset|$dst|$dst_range|\n";}
}
$sthA->finish();
}
}
if ( ($tzcodegmt > 0) && (length($owner)>1) )
{
$dst_range='';
$dst='N';
$gmt_offset=0;
$stmtA="SELECT GMT_offset from vicidial_phone_codes where tz_code='$owner' and country_code='$phone_code' 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;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$gmt_offset = $aryA[0]; $gmt_offset =~ s/\+| //gi;
$PC_processed++;
$postalgmt_found++;
}
$sthA->finish();
$stmtA = "SELECT distinct DST_range from vicidial_phone_codes where tz_code='$owner' and country_code='$phone_code' order by DST_range 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;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$dst_range = $aryA[0];
if (length($dst_range)>2) {$dst = 'Y';}
if ($DBX) {print " TZcode GMT record found for $owner: |$gmt_offset|$dst|$dst_range|\n";}
}
$sthA->finish();
}
if ($postalgmt_found < 1)
{
$PC_processed=0;
### UNITED STATES ###
if ($phone_code =~ /^1$/)
{
$stmtA = "SELECT country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes where country_code='$phone_code' and areacode='$USarea';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_count=0;
while ($sthArows > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$gmt_offset = $aryA[4]; $gmt_offset =~ s/\+| //gi;
$dst = $aryA[5];
$dst_range = $aryA[6];
$PC_processed++;
$rec_count++;
}
$sthA->finish();
}
### MEXICO ###
if ($phone_code =~ /^52$/)
{
$stmtA = "SELECT country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes where country_code='$phone_code' and areacode='$USarea';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_count=0;
while ($sthArows > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$gmt_offset = $aryA[4]; $gmt_offset =~ s/\+| //gi;
$dst = $aryA[5];
$dst_range = $aryA[6];
$PC_processed++;
$rec_count++;
}
$sthA->finish();
}
### AUSTRALIA ###
if ($phone_code =~ /^61$/)
{
$stmtA = "SELECT country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes where country_code='$phone_code' and state='$state';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_count=0;
while ($sthArows > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$gmt_offset = $aryA[4]; $gmt_offset =~ s/\+| //gi;
$dst = $aryA[5];
$dst_range = $aryA[6];
$PC_processed++;
$rec_count++;
}
$sthA->finish();
}
### ALL OTHER COUNTRY CODES ###
if (!$PC_processed)
{
$stmtA = "SELECT country_code,country,areacode,state,GMT_offset,DST,DST_range,geographic_description from vicidial_phone_codes where country_code='$phone_code';";
if($DBX){print STDERR "\n|$stmtA|\n";}
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$rec_count=0;
while ($sthArows > $rec_count)
{
@aryA = $sthA->fetchrow_array;
$gmt_offset = $aryA[4]; $gmt_offset =~ s/\+| //gi;
$dst = $aryA[5];
$dst_range = $aryA[6];
$PC_processed++;
$rec_count++;
}
$sthA->finish();
}
}
### Find out if DST to raise the gmt offset ###
$AC_GMT_diff = ($area_GMT - $LOCAL_GMT_OFF_STD);
$AC_localtime = ($secX + (3600 * $AC_GMT_diff));
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($AC_localtime);
$year = ($year + 1900);
$mon++;
if ($mon < 10) {$mon = "0$mon";}
if ($mday < 10) {$mday = "0$mday";}
if ($hour < 10) {$hour = "0$hour";}
if ($min < 10) {$min = "0$min";}
if ($sec < 10) {$sec = "0$sec";}
$dsec = ( ( ($hour * 3600) + ($min * 60) ) + $sec );
$AC_processed=0;
if ( (!$AC_processed) && ($dst_range =~ /SSM-FSN/) )
{
if ($DBX) {print " Second Sunday March to First Sunday November\n";}
&USACAN_dstcalc;
if ($DBX) {print " DST: $USACAN_DST\n";}
if ($USACAN_DST) {$gmt_offset++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($dst_range =~ /FSA-LSO/) )
{
if ($DBX) {print " First Sunday April to Last Sunday October\n";}
&NA_dstcalc;
if ($DBX) {print " DST: $NA_DST\n";}
if ($NA_DST) {$gmt_offset++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($dst_range =~ /LSM-LSO/) )
{
if ($DBX) {print " Last Sunday March to Last Sunday October\n";}
&GBR_dstcalc;
if ($DBX) {print " DST: $GBR_DST\n";}
if ($GBR_DST) {$gmt_offset++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($dst_range =~ /LSO-LSM/) )
{
if ($DBX) {print " Last Sunday October to Last Sunday March\n";}
&AUS_dstcalc;
if ($DBX) {print " DST: $AUS_DST\n";}
if ($AUS_DST) {$gmt_offset++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($dst_range =~ /FSO-LSM/) )
{
if ($DBX) {print " First Sunday October to Last Sunday March\n";}
&AUST_dstcalc;
if ($DBX) {print " DST: $AUST_DST\n";}
if ($AUST_DST) {$gmt_offset++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /FSO-FSA/) )
{
if ($DBX) {print " First Sunday October to First Sunday April\n";}
&AUSE_dstcalc;
if ($DBX) {print " DST: $AUSE_DST\n";}
if ($AUSE_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($dst_range =~ /FSO-TSM/) )
{
if ($DBX) {print " First Sunday October to Third Sunday March\n";}
&NZL_dstcalc;
if ($DBX) {print " DST: $NZL_DST\n";}
if ($NZL_DST) {$gmt_offset++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($area_GMT_method =~ /LSS-FSA/) )
{
if ($DBX) {print " Last Sunday September to First Sunday April\n";}
&NZLN_dstcalc;
if ($DBX) {print " DST: $NZLN_DST\n";}
if ($NZLN_DST) {$area_GMT++;}
$AC_processed++;
}
if ( (!$AC_processed) && ($dst_range =~ /TSO-LSF/) )
{
if ($DBX) {print " Third Sunday October to Last Sunday February\n";}
&BZL_dstcalc;
if ($DBX) {print " DST: $BZL_DST\n";}
if ($BZL_DST) {$gmt_offset++;}
$AC_processed++;
}
if (!$AC_processed)
{
if ($DBX) {print " No DST Method Found\n";}
if ($DBX) {print " DST: 0\n";}
$AC_processed++;
}
}
if ($map_count > 0)
{
$stmtZ = "INSERT INTO vicidial_list (lead_id,entry_date,modify_date,status,user,vendor_lead_code,source_id,list_id,gmt_offset_now,called_since_last_reset,phone_code,phone_number,title,first_name,middle_initial,last_name,address1,address2,address3,city,state,province,postal_code,country_code,gender,date_of_birth,alt_phone,email,security_phrase,comments,called_count,last_local_call_time,rank,owner) values('','$insert_date','$modify_date','$status','$user','$vendor_lead_code','$source_id','$list_id','$gmt_offset','$called_since_last_reset','$phone_code','$phone_number','$title','$first_name','$middle_initial','$last_name','$address1','$address2','$address3','$city','$state','$province','$postal_code','$country','$gender','$date_of_birth','$alt_phone','$email','$security_phrase','$comments','$called_count','2008-01-01 00:00:00','$rank','$owner');";
if (!$T) {$affected_rows = $dbhA->do($stmtZ); } # or die "Couldn't execute query: |$stmtZ|\n";
$lead_id = $dbhA->{'mysql_insertid'};
if($DB){print STDERR "\n|$affected_rows|$stmtZ|\n";}
$c++;
$r=0; $s=0;
while ($r < $map_count)
{
$s++;
$stmtZ = "INSERT INTO vicidial_list_alt_phones (lead_id,phone_code,phone_number,alt_phone_note,alt_phone_count) values('$lead_id','$ALTm_phone_code[$r]','$ALTm_phone_number[$r]','$ALTm_phone_note[$r]','$s');";
if (!$T) {$affected_rows = $dbhA->do($stmtZ); } # or die "Couldn't execute query: |$stmtZ|\n";
# $alt_phone_id = $dbhA->{'mysql_insertid'};
if($DB){print STDERR "\n|$affected_rows|$stmtZ|\n";}
$r++;
}
}
else
{
if ($multi_insert_counter > 8)
{
### insert good lead into pending_transactions table ###
$stmtZ = "INSERT INTO vicidial_list (lead_id,entry_date,modify_date,status,user,vendor_lead_code,source_id,list_id,gmt_offset_now,called_since_last_reset,phone_code,phone_number,title,first_name,middle_initial,last_name,address1,address2,address3,city,state,province,postal_code,country_code,gender,date_of_birth,alt_phone,email,security_phrase,comments,called_count,last_local_call_time,rank,owner) values$multistmt('','$insert_date','$modify_date','$status','$user','$vendor_lead_code','$source_id','$list_id','$gmt_offset','$called_since_last_reset','$phone_code','$phone_number','$title','$first_name','$middle_initial','$last_name','$address1','$address2','$address3','$city','$state','$province','$postal_code','$country','$gender','$date_of_birth','$alt_phone','$email','$security_phrase','$comments','$called_count','2008-01-01 00:00:00','$rank','$owner');";
if (!$T) {$affected_rows = $dbhA->do($stmtZ); } # or die "Couldn't execute query: |$stmtZ|\n";
if($DB){print STDERR "\n|$affected_rows|$stmtZ|\n";}
$multistmt='';
$multi_insert_counter=0;
$c++;
}
else
{
$multistmt .= "('','$insert_date','$modify_date','$status','$user','$vendor_lead_code','$source_id','$list_id','$gmt_offset','$called_since_last_reset','$phone_code','$phone_number','$title','$first_name','$middle_initial','$last_name','$address1','$address2','$address3','$city','$state','$province','$postal_code','$country','$gender','$date_of_birth','$alt_phone','$email','$security_phrase','$comments','$called_count','2008-01-01 00:00:00','$rank','$owner'),";
$multi_insert_counter++;
}
}
$b++;
}
else
{
if ($valid_lead < 1)
{if ($q < 1) {print "INVALID: $phone_number|$list_id|$dup_lead_list|$a|$title $alt_phone\n";} $h++;}
else
{
if ($dup_lead > 0)
{if ($q < 1) {print "DUPLICATE: $phone_number|$list_id|$dup_lead_list|$a|$title $alt_phone\n";} $f++;}
else
{if ($q < 1) {print "BAD Home_Phone: $phone_number|$vendor_id|$a\n";} $e++;}
}
}
$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|$h|$phone_number|\n";}
}
}
if (length($multistmt) > 10)
{
chop($multistmt);
### insert good deal into pending_transactions table ###
$stmtZ = "INSERT INTO vicidial_list (lead_id,entry_date,modify_date,status,user,vendor_lead_code,source_id,list_id,gmt_offset_now,called_since_last_reset,phone_code,phone_number,title,first_name,middle_initial,last_name,address1,address2,address3,city,state,province,postal_code,country_code,gender,date_of_birth,alt_phone,email,security_phrase,comments,called_count,last_local_call_time,rank,owner) values$multistmt;";
if (!$T) {$affected_rows = $dbhA->do($stmtZ); } # or die "Couldn't execute query: |$stmtZ|\n";
if($DB){print STDERR "\n|$affected_rows|$stmtZ|\n";}
$multistmt='';
$multi_insert_counter=0;
$c++;
}
### 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";
if ($new_list_for_each_file > 0)
{$Falert .= "New List ID: $new_list_id\n";}
$Falert .= "Lines in lead file: $a\n";
$Falert .= "INSERTED: $b\n";
$Falert .= "INSERT STATEMENTS: $c\n";
$Falert .= "ERROR: $e\n";
$Falert .= "MULTI-ALT-PHONE: $g\n";
if ($f > 0)
{$Falert .= "DUPLICATES: $f\n";}
if ($h > 0)
{$Falert .= "INVALID PHONES: $h\n";}
if ($tnm_delete_count > 0)
{$Falert .= "TNM DELETE COUNT: $tnm_delete_count\n";}
if ($q < 1) {print "$Falert";}
print Sout "$Falert";
$Ealert .= "$Falert";
close(infile);
close(Sout);
chmod 0777, "$VDHLOGfile";
### Move file to the DONE directory locally
if (!$T) {`mv -f $dir1/$FILEname $dir2/$FILEname`;}
}
}
$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;
sub USACAN_dstcalc {
#**********************************************************************
# SSM-FSN
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect.
# Based on Second Sunday March to First Sunday November at 2 am.
# INPUTS:
# mm INTEGER Month.
# dd INTEGER Day of the month.
# ns INTEGER Seconds into the day.
# dow INTEGER Day of week (0=Sunday, to 6=Saturday)
# OPTIONAL INPUT:
# timezone INTEGER hour difference UTC - local standard time
# (DEFAULT is blank)
# make calculations based on UTC time,
# which means shift at 10:00 UTC in April
# and 9:00 UTC in October
# OUTPUT:
# INTEGER 1 = DST, 0 = not DST
#
# S M T W T F S
# 1 2 3 4 5 6 7
# 8 9 10 11 12 13 14
#15 16 17 18 19 20 21
#22 23 24 25 26 27 28
#29 30 31
#
# S M T W T F S
# 1 2 3 4 5 6
# 7 8 9 10 11 12 13
#14 15 16 17 18 19 20
#21 22 23 24 25 26 27
#28 29 30 31
#
#**********************************************************************
$USACAN_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 3 || $mm > 11) {
$USACAN_DST=0; return 0;
} elsif ($mm >= 4 && $mm <= 10) {
$USACAN_DST=1; return 1;
} elsif ($mm == 3) {
if ($dd > 13) {
$USACAN_DST=1; return 1;
} elsif ($dd >= ($dow+8)) {
if ($timezone) {
if ($dow == 0 && $ns < (7200+$timezone*3600)) {
$USACAN_DST=0; return 0;
} else {
$USACAN_DST=1; return 1;
}
} else {
if ($dow == 0 && $ns < 7200) {
$USACAN_DST=0; return 0;
} else {
$USACAN_DST=1; return 1;
}
}
} else {
$USACAN_DST=0; return 0;
}
} elsif ($mm == 11) {
if ($dd > 7) {
$USACAN_DST=0; return 0;
} elsif ($dd < ($dow+1)) {
$USACAN_DST=1; return 1;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (7200+($timezone-1)*3600)) {
$USACAN_DST=1; return 1;
} else {
$USACAN_DST=0; return 0;
}
} else { # local time calculations
if ($ns < 7200) {
$USACAN_DST=1; return 1;
} else {
$USACAN_DST=0; return 0;
}
}
} else {
$USACAN_DST=0; return 0;
}
} # end of month checks
} # end of subroutine dstcalc
sub NA_dstcalc {
#**********************************************************************
# FSA-LSO
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect.
# Based on first Sunday in April and last Sunday in October at 2 am.
#**********************************************************************
$NA_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 4 || $mm > 10) {
$NA_DST=0; return 0;
} elsif ($mm >= 5 && $mm <= 9) {
$NA_DST=1; return 1;
} elsif ($mm == 4) {
if ($dd > 7) {
$NA_DST=1; return 1;
} elsif ($dd >= ($dow+1)) {
if ($timezone) {
if ($dow == 0 && $ns < (7200+$timezone*3600)) {
$NA_DST=0; return 0;
} else {
$NA_DST=1; return 1;
}
} else {
if ($dow == 0 && $ns < 7200) {
$NA_DST=0; return 0;
} else {
$NA_DST=1; return 1;
}
}
} else {
$NA_DST=0; return 0;
}
} elsif ($mm == 10) {
if ($dd < 25) {
$NA_DST=1; return 1;
} elsif ($dd < ($dow+25)) {
$NA_DST=1; return 1;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (7200+($timezone-1)*3600)) {
$NA_DST=1; return 1;
} else {
$NA_DST=0; return 0;
}
} else { # local time calculations
if ($ns < 7200) {
$NA_DST=1; return 1;
} else {
$NA_DST=0; return 0;
}
}
} else {
$NA_DST=0; return 0;
}
} # end of month checks
} # end of subroutine dstcalc
sub GBR_dstcalc {
#**********************************************************************
# LSM-LSO
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect.
# Based on last Sunday in March and last Sunday in October at 1 am.
#**********************************************************************
$GBR_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 3 || $mm > 10) {
$GBR_DST=0; return 0;
} elsif ($mm >= 4 && $mm <= 9) {
$GBR_DST=1; return 1;
} elsif ($mm == 3) {
if ($dd < 25) {
$GBR_DST=0; return 0;
} elsif ($dd < ($dow+25)) {
$GBR_DST=0; return 0;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$GBR_DST=0; return 0;
} else {
$GBR_DST=1; return 1;
}
} else { # local time calculations
if ($ns < 3600) {
$GBR_DST=0; return 0;
} else {
$GBR_DST=1; return 1;
}
}
} else {
$GBR_DST=1; return 1;
}
} elsif ($mm == 10) {
if ($dd < 25) {
$GBR_DST=1; return 1;
} elsif ($dd < ($dow+25)) {
$GBR_DST=1; return 1;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$GBR_DST=1; return 1;
} else {
$GBR_DST=0; return 0;
}
} else { # local time calculations
if ($ns < 3600) {
$GBR_DST=1; return 1;
} else {
$GBR_DST=0; return 0;
}
}
} else {
$GBR_DST=0; return 0;
}
} # end of month checks
} # end of subroutine dstcalc
sub AUS_dstcalc {
#**********************************************************************
# LSO-LSM
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect.
# Based on last Sunday in October and last Sunday in March at 1 am.
#**********************************************************************
$AUS_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 3 || $mm > 10) {
$AUS_DST=1; return 1;
} elsif ($mm >= 4 && $mm <= 9) {
$AUS_DST=0; return 0;
} elsif ($mm == 3) {
if ($dd < 25) {
$AUS_DST=1; return 1;
} elsif ($dd < ($dow+25)) {
$AUS_DST=1; return 1;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$AUS_DST=1; return 1;
} else {
$AUS_DST=0; return 0;
}
} else { # local time calculations
if ($ns < 3600) {
$AUS_DST=1; return 1;
} else {
$AUS_DST=0; return 0;
}
}
} else {
$AUS_DST=0; return 0;
}
} elsif ($mm == 10) {
if ($dd < 25) {
$AUS_DST=0; return 0;
} elsif ($dd < ($dow+25)) {
$AUS_DST=0; return 0;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$AUS_DST=0; return 0;
} else {
$AUS_DST=1; return 1;
}
} else { # local time calculations
if ($ns < 3600) {
$AUS_DST=0; return 0;
} else {
$AUS_DST=1; return 1;
}
}
} else {
$AUS_DST=1; return 1;
}
} # end of month checks
} # end of subroutine dstcalc
sub AUST_dstcalc {
#**********************************************************************
# FSO-LSM
# TASMANIA ONLY
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect.
# Based on first Sunday in October and last Sunday in March at 1 am.
#**********************************************************************
$AUST_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 3 || $mm > 10) {
$AUST_DST=1; return 1;
} elsif ($mm >= 4 && $mm <= 9) {
$AUST_DST=0; return 0;
} elsif ($mm == 3) {
if ($dd < 25) {
$AUST_DST=1; return 1;
} elsif ($dd < ($dow+25)) {
$AUST_DST=1; return 1;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$AUST_DST=1; return 1;
} else {
$AUST_DST=0; return 0;
}
} else { # local time calculations
if ($ns < 3600) {
$AUST_DST=1; return 1;
} else {
$AUST_DST=0; return 0;
}
}
} else {
$AUST_DST=0; return 0;
}
} elsif ($mm == 10) {
if ($dd >= 8) {
$AUST_DST=1; return 1;
} elsif ($dd >= ($dow+1)) {
if ($timezone) {
if ($dow == 0 && $ns < (7200+$timezone*3600)) {
$AUST_DST=0; return 0;
} else {
$AUST_DST=1; return 1;
}
} else {
if ($dow == 0 && $ns < 3600) {
$AUST_DST=0; return 0;
} else {
$AUST_DST=1; return 1;
}
}
} else {
$AUST_DST=0; return 0;
}
} # end of month checks
} # end of subroutine dstcalc
sub AUSE_dstcalc {
#**********************************************************************
# FSO-FSA
# 2008+ AUSTRALIA ONLY (country code 61)
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect.
# Based on first Sunday in October and first Sunday in April at 1 am.
#**********************************************************************
$AUSE_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 4 || $mm > 10) {
$AUSE_DST=1; return 1;
} elsif ($mm >= 5 && $mm <= 9) {
$AUSE_DST=0; return 0;
} elsif ($mm == 4) {
if ($dd > 7) {
$AUSE_DST=0; return 1;
} elsif ($dd >= ($dow+1)) {
if ($timezone) {
if ($dow == 0 && $ns < (3600+$timezone*3600)) {
$AUSE_DST=1; return 0;
} else {
$AUSE_DST=0; return 1;
}
} else {
if ($dow == 0 && $ns < 7200) {
$AUSE_DST=1; return 0;
} else {
$AUSE_DST=0; return 1;
}
}
} else {
$AUSE_DST=1; return 0;
}
} elsif ($mm == 10) {
if ($dd >= 8) {
$AUSE_DST=1; return 1;
} elsif ($dd >= ($dow+1)) {
if ($timezone) {
if ($dow == 0 && $ns < (7200+$timezone*3600)) {
$AUSE_DST=0; return 0;
} else {
$AUSE_DST=1; return 1;
}
} else {
if ($dow == 0 && $ns < 3600) {
$AUSE_DST=0; return 0;
} else {
$AUSE_DST=1; return 1;
}
}
} else {
$AUSE_DST=0; return 0;
}
} # end of month checks
} # end of subroutine dstcalc
sub NZL_dstcalc {
#**********************************************************************
# FSO-TSM
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect.
# Based on first Sunday in October and third Sunday in March at 1 am.
#**********************************************************************
$NZL_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 3 || $mm > 10) {
$NZL_DST=1; return 1;
} elsif ($mm >= 4 && $mm <= 9) {
$NZL_DST=0; return 0;
} elsif ($mm == 3) {
if ($dd < 14) {
$NZL_DST=1; return 1;
} elsif ($dd < ($dow+14)) {
$NZL_DST=1; return 1;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$NZL_DST=1; return 1;
} else {
$NZL_DST=0; return 0;
}
} else { # local time calculations
if ($ns < 3600) {
$NZL_DST=1; return 1;
} else {
$NZL_DST=0; return 0;
}
}
} else {
$NZL_DST=0; return 0;
}
} elsif ($mm == 10) {
if ($dd >= 8) {
$NZL_DST=1; return 1;
} elsif ($dd >= ($dow+1)) {
if ($timezone) {
if ($dow == 0 && $ns < (7200+$timezone*3600)) {
$NZL_DST=0; return 0;
} else {
$NZL_DST=1; return 1;
}
} else {
if ($dow == 0 && $ns < 3600) {
$NZL_DST=0; return 0;
} else {
$NZL_DST=1; return 1;
}
}
} else {
$NZL_DST=0; return 0;
}
} # end of month checks
} # end of subroutine dstcalc
sub NZLN_dstcalc {
#**********************************************************************
# LSS-FSA
# 2007+ NEW ZEALAND (country code 64)
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect.
# Based on last Sunday in September and first Sunday in April at 1 am.
#**********************************************************************
$NZLN_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 4 || $mm > 9) {
$NZLN_DST=1; return 1;
} elsif ($mm >= 5 && $mm <= 9) {
$NZLN_DST=0; return 0;
} elsif ($mm == 4) {
if ($dd > 7) {
$NZLN_DST=0; return 1;
} elsif ($dd >= ($dow+1)) {
if ($timezone) {
if ($dow == 0 && $ns < (3600+$timezone*3600)) {
$NZLN_DST=1; return 0;
} else {
$NZLN_DST=0; return 1;
}
} else {
if ($dow == 0 && $ns < 7200) {
$NZLN_DST=1; return 0;
} else {
$NZLN_DST=0; return 1;
}
}
} else {
$NZLN_DST=1; return 0;
}
} elsif ($mm == 9) {
if ($dd < 25) {
$NZLN_DST=0; return 0;
} elsif ($dd < ($dow+25)) {
$NZLN_DST=0; return 0;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$NZLN_DST=0; return 0;
} else {
$NZLN_DST=1; return 1;
}
} else { # local time calculations
if ($ns < 3600) {
$NZLN_DST=0; return 0;
} else {
$NZLN_DST=1; return 1;
}
}
} else {
$NZLN_DST=1; return 1;
}
} # end of month checks
} # end of subroutine dstcalc
sub BZL_dstcalc {
#**********************************************************************
# TSO-LSF
# This is returns 1 if Daylight Savings Time is in effect and 0 if
# Standard time is in effect. Brazil
# Based on Third Sunday October to Last Sunday February at 1 am.
#**********************************************************************
$BZL_DST=0;
$mm = $mon;
$dd = $mday;
$ns = $dsec;
$dow= $wday;
if ($mm < 2 || $mm > 10) {
$BZL_DST=1; return 1;
} elsif ($mm >= 3 && $mm <= 9) {
$BZL_DST=0; return 0;
} elsif ($mm == 2) {
if ($dd < 22) {
$BZL_DST=1; return 1;
} elsif ($dd < ($dow+22)) {
$BZL_DST=1; return 1;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$BZL_DST=1; return 1;
} else {
$BZL_DST=0; return 0;
}
} else { # local time calculations
if ($ns < 3600) {
$BZL_DST=1; return 1;
} else {
$BZL_DST=0; return 0;
}
}
} else {
$BZL_DST=0; return 0;
}
} elsif ($mm == 10) {
if ($dd < 22) {
$BZL_DST=0; return 0;
} elsif ($dd < ($dow+22)) {
$BZL_DST=0; return 0;
} elsif ($dow == 0) {
if ($timezone) { # UTC calculations
if ($ns < (3600+($timezone-1)*3600)) {
$BZL_DST=0; return 0;
} else {
$BZL_DST=1; return 1;
}
} else { # local time calculations
if ($ns < 3600) {
$BZL_DST=0; return 0;
} else {
$BZL_DST=1; return 1;
}
}
} else {
$BZL_DST=1; return 1;
}
} # end of month checks
} # end of subroutine dstcalc