From: ivan Date: Tue, 8 Jun 2010 08:24:46 +0000 (+0000) Subject: add programmatic CDR posting, RT#8201 X-Git-Tag: root_of_svc_elec_features~180 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=3d0320979331ac4b68fc07fd4203d74c1b05aff4 add programmatic CDR posting, RT#8201 --- diff --git a/httemplate/misc/cdr-post.cgi b/httemplate/misc/cdr-post.cgi new file mode 100644 index 000000000..d9e42fa99 --- /dev/null +++ b/httemplate/misc/cdr-post.cgi @@ -0,0 +1,55 @@ +% if ( $error ) { +0,"<% $error %>",, +% } else { +1,"CDR import successful',<% $cdr_batch->cdrbatchnum %>,"<% $cdrbatch %>" +% } +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Import'); + +my $error = ''; +my $cdr_batch; + +{ + + my $filename = $cgi->param('cdr_file'); + unless ( $filename ) { + $error = "No cdr_file filename"; + last; + } + + my $fh = $cgi->upload('cdr_file'); + unless ( defined($fh) ) { + $error = 'No cdr_file file'; + last; + } + + #i should probably be transactionalized. + + my $csv = new Text::CSV_XS or die Text::CSV->error_diag; + + my $cdrbatch = time2str('post-%Y/%m/%d-%T'. "-$$-". rand() * 2**32, time); + $cdr_batch = new FS::cdr_batch { 'cdrbatch' => $cdrbatch }; + $error = $cdr_batch->insert and last; + + chomp(my $hline = scalar(<$fh>)); + $csv->parse($hline); + my @header = $csv->fields; + + #while ( my $row = $csv->getline($fh) ) { + while (<$fh>) { + + $csv->parse($_); + my @row = $csv->fields; + + my $cdr = new FS::cdr { 'cdrbatchnum' => $cdr_batch->cdrbatchnum }; + $cdr->set( lc($_) => shift(@row) ) foreach @header; + + $error = $cdr->insert and last; + + } + +} + + diff --git a/httemplate/misc/cdr-post.html b/httemplate/misc/cdr-post.html new file mode 100644 index 000000000..5d34272f7 --- /dev/null +++ b/httemplate/misc/cdr-post.html @@ -0,0 +1,11 @@ +<% include("/elements/header.html",'Call Detail Record - POST Import') %> + +
+ + cdr_file:

+ + + +
+ +<% include("/elements/footer.html") %>