RT# 77498 - Customer Import now uses contact/Import.pm rather than contact_import.pm
authorChristopher Burger <burgerc@freeside.biz>
Mon, 18 Sep 2017 13:35:02 +0000 (09:35 -0400)
committerChristopher Burger <burgerc@freeside.biz>
Mon, 18 Sep 2017 13:35:02 +0000 (09:35 -0400)
FS/FS.pm
FS/FS/contact.pm
FS/FS/contact_import.pm [deleted file]
FS/MANIFEST
Makefile
httemplate/misc/process/contact-import.cgi

index 134a34c..9575c3d 100644 (file)
--- a/FS/FS.pm
+++ b/FS/FS.pm
@@ -67,6 +67,8 @@ L<FS::cust_main::Search> - Customer searching
 
 L<FS::cust_main::Import> - Batch customer importing
 
+L<FS::contact::Import> - Batch contact importing
+
 =head2 Database record classes
 
 L<FS::Record> - Database record base class
index 568d46f..44c5388 100644 (file)
@@ -10,6 +10,7 @@ use FS::Record qw( qsearch qsearchs dbh );
 use FS::Cursor;
 use FS::contact_phone;
 use FS::contact_email;
+use FS::contact::Import;
 use FS::queue;
 use FS::phone_type; #for cgi_contact_fields
 use FS::cust_contact;
diff --git a/FS/FS/contact_import.pm b/FS/FS/contact_import.pm
deleted file mode 100644 (file)
index d6cd690..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-package FS::contact_import;
-
-use strict;
-use vars qw( $DEBUG ); #$conf );
-use Data::Dumper;
-use FS::Misc::DateTime qw( parse_datetime );
-use FS::Record qw( qsearchs );
-use FS::contact;
-use FS::cust_main;
-
-$DEBUG = 0;
-
-=head1 NAME
-
-FS::contact_import - Batch contact importing
-
-=head1 SYNOPSIS
-
-  use FS::contact_import;
-
-  #import
-  FS::contact_import::batch_import( {
-    file      => $file,      #filename
-    type      => $type,      #csv or xls
-    format    => $format,    #default
-    agentnum  => $agentnum,
-    job       => $job,       #optional job queue job, for progressbar updates
-    pkgbatch  => $pkgbatch,  #optional batch unique identifier
-  } );
-  die $error if $error;
-
-  #ajax helper
-  use FS::UI::Web::JSRPC;
-  my $server =
-    new FS::UI::Web::JSRPC 'FS::contact_import::process_batch_import', $cgi;
-  print $server->process;
-
-=head1 DESCRIPTION
-
-Batch contact importing.
-
-=head1 SUBROUTINES
-
-=item process_batch_import
-
-Load a batch import as a queued JSRPC job
-
-=cut
-
-sub process_batch_import {
-  my $job = shift;
-  my $param = shift;
-  warn Dumper($param) if $DEBUG;
-  
-  my $files = $param->{'uploaded_files'}
-    or die "No files provided.\n";
-
-  my (%files) = map { /^(\w+):([\.\w]+)$/ ? ($1,$2):() } split /,/, $files;
-
-  my $dir = '%%%FREESIDE_CACHE%%%/cache.'. $FS::UID::datasrc. '/';
-
-  my $file = $dir. $files{'file'};
-
-  my $type;
-  if ( $file =~ /\.(\w+)$/i ) {
-    $type = lc($1);
-  } else {
-    #or error out???
-    warn "can't parse file type from filename $file; defaulting to CSV";
-    $type = 'csv';
-  }
-
-  my $error =
-    FS::contact_import::batch_import( {
-      job      => $job,
-      file     => $file,
-      type     => $type,
-      agentnum => $param->{'agentnum'},
-      'format' => $param->{'format'},
-    } );
-
-  unlink $file;
-
-  die "$error\n" if $error;
-
-}
-
-=item batch_import
-
-=cut
-
-my %formatfields = (
-  'default'      => [ qw( custnum last first title comment selfservice_access emailaddress phonetypenum1 phonetypenum3 phonetypenum2 ) ],
-);
-
-sub _formatfields {
-  \%formatfields;
-}
-
-## not tested but maybe allow 2nd format to attach location in the future
-my %import_options = (
-  'table'         => 'contact',
-
-  'preinsert_callback'  => sub {
-    my($record, $param) = @_;
-    my @location_params = grep /^location\./, keys %$param;
-    if (@location_params) {
-      my $cust_location = FS::cust_location->new({
-          'custnum' => $record->custnum,
-      });
-      foreach my $p (@location_params) {
-        $p =~ /^location.(\w+)$/;
-        $cust_location->set($1, $param->{$p});
-      }
-
-      my $error = $cust_location->find_or_insert; # this avoids duplicates
-      return "error creating location: $error" if $error;
-      $record->set('locationnum', $cust_location->locationnum);
-    }
-    '';
-  },
-
-);
-
-sub _import_options {
-  \%import_options;
-}
-
-sub batch_import {
-  my $opt = shift;
-
-  my $iopt = _import_options;
-  $opt->{$_} = $iopt->{$_} foreach keys %$iopt;
-
-  my $format = delete $opt->{'format'};
-
-  my $formatfields = _formatfields();
-    die "unknown format $format" unless $formatfields->{$format};
-
-  my @fields;
-  foreach my $field ( @{ $formatfields->{$format} } ) {
-    push @fields, $field;
-  }
-
-  $opt->{'fields'} = \@fields;
-
-  FS::Record::batch_import( $opt );
-
-}
-
-=head1 BUGS
-
-Not enough documentation.
-
-=head1 SEE ALSO
-
-L<FS::contact>
-
-=cut
-
-1;
\ No newline at end of file
index f6a6400..4c892ec 100644 (file)
@@ -510,6 +510,7 @@ t/class_Common.t
 FS/category_Common.pm
 t/category_Common.t
 FS/contact.pm
+FS/contact/Import.pm
 t/contact.t
 FS/contact_phone.pm
 t/contact_phone.t
index c6eef91..a1e4566 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -236,7 +236,7 @@ perl-modules:
        " blib/lib/FS/part_export/*.pm;\
        perl -p -i -e "\
          s|%%%FREESIDE_CACHE%%%|${FREESIDE_CACHE}|g;\
-       " blib/lib/FS/cust_main/*.pm blib/lib/FS/cust_pkg/*.pm;\
+       " blib/lib/FS/cust_main/*.pm blib/lib/FS/cust_pkg/*.pm blib/lib/FS/contact/*.pm;\
        perl -p -i -e "\
          s|%%%FREESIDE_LOG%%%|${FREESIDE_LOG}|g;\
        " blib/lib/FS/Daemon/*.pm;\
index cbdcad4..108ee93 100644 (file)
@@ -5,6 +5,6 @@ die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Import');
 
 my $server =
-  new FS::UI::Web::JSRPC 'FS::contact_import::process_batch_import', $cgi;
+  new FS::UI::Web::JSRPC 'FS::contact::Import::process_batch_import', $cgi;
 
 </%init>