summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2014-03-25 15:20:31 -0700
committerMark Wells <mark@freeside.biz>2014-03-25 15:20:31 -0700
commit88627b2b33d984e223d8bf841fff994c07a6ffeb (patch)
treeafe186dcf3b105ebceda612794f92d66a77c8bcf /FS
parent0692ff47a2eac65616bf24104a51e558506f1b8f (diff)
Amcom CDR format, #27946
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/cdr/amcom.pm65
1 files changed, 65 insertions, 0 deletions
diff --git a/FS/FS/cdr/amcom.pm b/FS/FS/cdr/amcom.pm
new file mode 100644
index 000000000..5967d7b30
--- /dev/null
+++ b/FS/FS/cdr/amcom.pm
@@ -0,0 +1,65 @@
+package FS::cdr::amcom;
+
+use strict;
+use base qw( FS::cdr );
+use vars qw( %info );
+use DateTime;
+
+my ($tmp_mday, $tmp_mon, $tmp_year);
+
+%info = (
+ 'name' => 'Amcom',
+ 'weight' => 500,
+ 'header' => 1,
+ 'type' => 'csv',
+ 'sep_char' => ',',
+ 'disabled' => 0,
+
+ #listref of what to do with each field from the CDR, in order
+ 'import_fields' => [
+
+ sub { # 1. Field Type (must be "DCR", yes, "DCR")
+ my ($cdr, $field, $conf, $hashref) = @_;
+ $hashref->{skiprow} = 1 unless $field eq 'DCR';
+ },
+ '', # 2. BWGroupID (centrex group)
+ '', # 3. BWGroupNumber
+ 'uniqueid', # 4. Record ID
+ 'dcontext', # 5. Call Category (LOCAL, NATIONAL, FREECALL, MOBILE)
+ sub { # 6. Start Date (DDMMYYYY
+ my ($cdr, $date) = @_;
+ $date =~ /^(\d{2})(\d{2})(\d{4})$/
+ or die "unparseable date: $date";
+ ($tmp_mday, $tmp_mon, $tmp_year) = ($1, $2-1, $3);
+ },
+ sub { # 7. Start Time (HHMMSS)
+ my ($cdr, $time) = @_;
+ $time =~ /^(\d{2})(\d{2})(\d{2})$/
+ or die "unparseable time: $time";
+ my $dt = DateTime->new(
+ year => $tmp_year,
+ month => $tmp_mon,
+ day => $tmp_mday,
+ hour => $1,
+ minute => $2,
+ second => $3,
+ );
+ $cdr->set('startdate', $dt->epoch);
+ },
+ sub { # 8. Duration (seconds, 3 decimals)
+ my ($cdr, $seconds) = @_;
+ $cdr->set('duration', sprintf('%.0f', $seconds));
+ $cdr->set('billsec', sprintf('%.0f', $seconds));
+ },
+ 'src', # 9. Calling Number
+ 'dst', # 10. Called Number
+ 'upstream_src_regionname', # 11. Calling Party Zone
+ 'upstream_dst_regionname', # 12. Called Party Zone
+ 'upstream_price', # 13. Call Cost
+ '', # 14. Call Cost 2 (seems to be the same?)
+ '', # 15. Service Provider ID
+ ('') x 4, # 16-20. Reserved fields
+ ],
+);
+
+1;