X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main%2FImport.pm;h=e58a0447bb36541705879979bca77f51a38fef4b;hb=809450eeedfb9fc86157587e135fd82c94c290fc;hp=a955d243327e8959d5dcbb76ecf716da5d069c74;hpb=0be57b238caeda424741a03589b7d9cb085867e5;p=freeside.git diff --git a/FS/FS/cust_main/Import.pm b/FS/FS/cust_main/Import.pm index a955d2433..e58a0447b 100644 --- a/FS/FS/cust_main/Import.pm +++ b/FS/FS/cust_main/Import.pm @@ -5,13 +5,15 @@ use vars qw( $DEBUG $conf ); use Storable qw(thaw); use Data::Dumper; use MIME::Base64; -use Date::Parse; use File::Slurp qw( slurp ); +use FS::Misc::DateTime qw( parse_datetime ); use FS::UID qw( dbh ); +use FS::Record qw( qsearchs ); use FS::cust_main; use FS::svc_acct; use FS::svc_external; use FS::svc_phone; +use FS::part_referral; $DEBUG = 0; @@ -190,7 +192,7 @@ sub batch_import { eval "use Spreadsheet::ParseExcel;"; die $@ if $@; - my $excel = new Spreadsheet::ParseExcel::Workbook->Parse($filename); + my $excel = Spreadsheet::ParseExcel::Workbook->new->Parse($filename); $parser = $excel->{Worksheet}[0]; #first sheet $count = $parser->{MaxRow} || $parser->{MinRow}; @@ -212,6 +214,10 @@ sub batch_import { my $oldAutoCommit = $FS::UID::AutoCommit; local $FS::UID::AutoCommit = 0; my $dbh = dbh; + + #implies ignore_expired_card + local($FS::cust_main::import) = 1; + local($FS::cust_main::import) = 1; my $line; my $row = 0; @@ -262,13 +268,13 @@ sub batch_import { if ( $field =~ /^cust_pkg\.(pkgpart|setup|bill|susp|adjourn|expire|cancel)$/ ) { - #$cust_pkg{$1} = str2time( shift @$columns ); + #$cust_pkg{$1} = parse_datetime( shift @$columns ); if ( $1 eq 'pkgpart' ) { $cust_pkg{$1} = shift @columns; } elsif ( $1 eq 'setup' ) { - $billtime = str2time(shift @columns); + $billtime = parse_datetime(shift @columns); } else { - $cust_pkg{$1} = str2time( shift @columns ); + $cust_pkg{$1} = parse_datetime( shift @columns ); } } elsif ( $field =~ /^svc_acct\.(username|_password)$/ ) { @@ -326,6 +332,12 @@ sub batch_import { tie my %hash, 'Tie::RefHash'; #this part is important if ( $cust_pkg{'pkgpart'} ) { + + unless ( $cust_pkg{'pkgpart'} =~ /^\d+$/ ) { + $dbh->rollback if $oldAutoCommit; + return 'illegal pkgpart: '. $cust_pkg{'pkgpart'}; + } + my $cust_pkg = new FS::cust_pkg ( \%cust_pkg ); my @svc_x = ();