X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_main%2FImport.pm;h=e58a0447bb36541705879979bca77f51a38fef4b;hb=938615d6374c8e868647b88e3aa27c15e942b8ed;hp=5c00c66421587aca4387d69907ef7a843263dcb8;hpb=62413787ffcf1180acb93e4f787c3e8610c2564b;p=freeside.git diff --git a/FS/FS/cust_main/Import.pm b/FS/FS/cust_main/Import.pm index 5c00c6642..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; @@ -232,7 +238,8 @@ sub batch_import { } elsif ( $type eq 'xls' ) { - last if $row > ($parser->{MaxRow} || $parser->{MinRow}); + last if $row > ($parser->{MaxRow} || $parser->{MinRow}) + || ! $parser->{Cells}[$row]; my @row = @{ $parser->{Cells}[$row] }; @columns = map $_->{Val}, @row; @@ -261,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)$/ ) { @@ -325,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 = ();