diff options
author | Ivan Kohler <ivan@freeside.biz> | 2022-05-23 14:43:42 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2022-05-23 14:43:42 -0700 |
commit | cc7fbf9f532b64587eed1244218b6611a72d004f (patch) | |
tree | 24025973c659255e931e7627a342b75bd8af1ef2 /FS/FS/cdr | |
parent | 18271c2a6157e26b17002c6a3c65a934e36e05c3 (diff) |
obey otherPartyNamePresentationIndicator and deal with broadsoft's awful non-standard quoting, RT#86028, RT#81941
Diffstat (limited to 'FS/FS/cdr')
-rw-r--r-- | FS/FS/cdr/broadsoft.pm | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/FS/FS/cdr/broadsoft.pm b/FS/FS/cdr/broadsoft.pm index d9530bb..01755a8 100644 --- a/FS/FS/cdr/broadsoft.pm +++ b/FS/FS/cdr/broadsoft.pm @@ -23,6 +23,15 @@ use FS::cdr qw( _cdr_date_parser_maker _cdr_min_parser_maker ); sep_char => ',', disabled => 0, + row_callback => sub { + my $line = shift; + #try to deal with broadsoft's awful non-standard CSV escaping :/ + $line =~ s/\\,/ /g; # \, becomes just a space... not entirely accurate, + # but better than skewing data into the wrong fields + $line =~ s/\\\\/\\/g; # undo double backslashes? none in my test data + $line; + }, + import_fields => [ # 1: recordId @@ -119,7 +128,13 @@ use FS::cdr qw( _cdr_date_parser_maker _cdr_min_parser_maker ); #122: otherPartyName 'clid', - skip(23), #123-145 inclusive + #123: otherPartyNamePresentationIndicator + sub { + my( $cdr, $data ) = @_; + $cdr->clid( $data ) unless $data =~ /^Public$/i; + }, + + skip(22), #124-145 inclusive # 146: chargedNumber 'charged_party', |