summaryrefslogtreecommitdiff
path: root/FS/FS
diff options
context:
space:
mode:
authormark <mark>2010-05-04 22:25:45 +0000
committermark <mark>2010-05-04 22:25:45 +0000
commit01dbdf631092f7a56182d1cce6dde68de4e2516b (patch)
treed99a998c32fdee4e56319baee35b7dde15e311f5 /FS/FS
parent6873aec01740ea7c70a5e20a3f3bce6e76bca410 (diff)
RT#8026: WIP CDR format
Diffstat (limited to 'FS/FS')
-rw-r--r--FS/FS/cdr.pm5
-rw-r--r--FS/FS/cdr/wip.pm49
2 files changed, 53 insertions, 1 deletions
diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm
index 36797b7..2426f41 100644
--- a/FS/FS/cdr.pm
+++ b/FS/FS/cdr.pm
@@ -746,7 +746,10 @@ sub _cdr_date_parse {
($mon, $day, $year, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 );
} elsif ( $date =~ /^\s*(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d+\.\d+)(\D|$)/ ) {
# broadsoft: 20081223201938.314
- ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6);
+ ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 );
+ } elsif ( $date =~ /^\s*(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/ ) {
+ # WIP: 20100329121420
+ ($year, $mon, $day, $hour, $min, $sec) = ( $1, $2, $3, $4, $5, $6 );
} else {
die "unparsable date: $date"; #maybe we shouldn't die...
}
diff --git a/FS/FS/cdr/wip.pm b/FS/FS/cdr/wip.pm
new file mode 100644
index 0000000..070e253
--- /dev/null
+++ b/FS/FS/cdr/wip.pm
@@ -0,0 +1,49 @@
+package FS::cdr::wip;
+
+use strict;
+use vars qw( @ISA %info );
+use FS::cdr qw(_cdr_date_parser_maker);
+
+@ISA = qw(FS::cdr);
+
+%info = (
+ 'name' => 'WIP',
+ 'weight' => 100,
+ 'header' => 1,
+ 'type' => 'csv',
+ 'sep_char' => ':',
+ 'import_fields' => [
+# All of these are based on the January 2010 version of the spec,
+# except that we assume that before all the fields mentioned in the
+# spec, there's a counter field.
+ skip(4), # counter, id, APCSJursID, RecordType
+ 'unique_id', # CDRID
+ skip(1), # AccountNumber; empty
+ 'charged_party', # ServiceNumber
+ skip(1), # ServiceNumberType
+ 'src', # PointOrigin
+ 'dst', # PointTarget
+ 'calltypenum', # Jurisdiction: need to remap
+ _cdr_date_parser_maker('startdate'), #TransactionDate
+ skip(3), # BillClass, TypeIDUsage, ElementID
+ 'duration', # PrimaryUnits
+ skip(6), # CompletionStatus, Latitude, Longitude,
+ # OriginDescription, TargetDescription, RatePeriod
+ 'billsec', # RatedUnits; seems to always be equal to PrimaryUnits
+ skip(6), #SecondsUnits, ThirdUnits, FileID, OriginalExtractSequenceNumber,
+ #RateClass, #ProviderClass
+ skip(8), #ProviderID, CurrencyCode, EquipmentTypeCode, ClassOfServiceCode,
+ #RateUnitsType, DistanceBandID, ZoneClass, CDRStatus
+ 'upstream_price', # ISPBuy
+ skip(2), # EUBuy, CDRFromCarrier
+ ],
+# Need clarification on:
+# Values for RecordType, Jurisdiction, CompletionStatus, and ProviderClass
+# Do we care about the following:
+# AccountNumber, ServiceNumberType, CDRStatus
+
+);
+
+sub skip { map {''} (1..$_[0]) }
+
+1;