fix date parsing when using international dates (package date edit), RT#8027
[freeside.git] / FS / FS / cust_main / Import.pm
index 4f377b9..901ff18 100644 (file)
@@ -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};
@@ -232,7 +234,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 +264,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)$/ ) {
@@ -355,7 +358,6 @@ sub batch_import {
           push @svc_x, $class->new( \%svc_x );
         }
         if ( $svc_phone ) {
-          warn $part_pkg->svcpart_unique_svcdb('svc_phone');
           $svc_phone->svcpart( $part_pkg->svcpart_unique_svcdb('svc_phone') );
           push @svc_x, $svc_phone;
         }