($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...
}
--- /dev/null
+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;