future package unsuspend date, #14144
[freeside.git] / httemplate / misc / cdr-post.cgi
1 % if ( $error ) {
2 0,"<% $error %>",,
3 % } else {
4 1,"CDR import successful",<% $cdr_batch->cdrbatchnum %>,"<% $cdrbatch %>"
5 % }
6 <%init>
7
8 die "access denied"
9   unless $FS::CurrentUser::CurrentUser->access_right('Import');
10
11 my $error = '';
12 my $cdr_batch;
13 my $cdrbatch = '';
14
15 {
16
17   my $filename = $cgi->param('cdr_file');
18   unless ( $filename ) {
19     $error = "No cdr_file filename";
20     last;
21   }
22
23   my $fh = $cgi->upload('cdr_file');
24   unless ( defined($fh) ) {
25     $error = 'No cdr_file file';
26     last;
27   }
28
29   #i should probably be transactionalized.
30
31   my $csv = new Text::CSV_XS or die Text::CSV->error_diag;
32
33   $cdrbatch = time2str('post-%Y/%m/%d-%T'. "-$$-". rand() * 2**32, time);
34   $cdr_batch = new FS::cdr_batch { 'cdrbatch' => $cdrbatch };
35   $error = $cdr_batch->insert and last;
36
37   chomp(my $hline = scalar(<$fh>));
38   $csv->parse($hline);
39   my @header = $csv->fields;
40
41   #while ( my $row = $csv->getline($fh) ) {
42   while (<$fh>) {
43
44     $csv->parse($_);
45     my @row = $csv->fields;
46
47     my $cdr = new FS::cdr { 'cdrbatchnum' => $cdr_batch->cdrbatchnum };
48     $cdr->set( lc($_) => shift(@row) ) foreach @header;
49
50     $error = $cdr->insert and last;
51
52   }
53
54 }
55
56 $error =~ s/"/""/g; #CSV
57
58 </%init>