[freeside-commits] branch master updated. 88627b2b33d984e223d8bf841fff994c07a6ffeb

Mark Wells mark at 420.am
Tue Mar 25 15:20:39 PDT 2014


The branch, master has been updated
       via  88627b2b33d984e223d8bf841fff994c07a6ffeb (commit)
      from  0692ff47a2eac65616bf24104a51e558506f1b8f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 88627b2b33d984e223d8bf841fff994c07a6ffeb
Author: Mark Wells <mark at freeside.biz>
Date:   Tue Mar 25 15:20:31 2014 -0700

    Amcom CDR format, #27946

diff --git a/FS/FS/cdr/amcom.pm b/FS/FS/cdr/amcom.pm
new file mode 100644
index 0000000..5967d7b
--- /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;

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cdr/amcom.pm |   65 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 0 deletions(-)
 create mode 100644 FS/FS/cdr/amcom.pm




More information about the freeside-commits mailing list