1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
package FS::cdr::freeside_description_default;
use strict;
use vars qw( @ISA %info $tmp_mon $tmp_mday $tmp_year );
use Time::Local;
use FS::cdr;
@ISA = qw(FS::cdr);
%info = (
'name' => 'Freeside default with description field as destination',
'weight' => 25,
'type' => 'csv',
'header' => 1,
'import_fields' => [
'charged_party', # Billed number
'src', # Caller
# Date (YYYY/MM/DD)
sub { my($cdr, $date) = @_;
$date =~ /^(\d\d(\d\d)?)\/(\d{1,2})\/(\d{1,2})$/
or die "unparsable date: $date"; #maybe we shouldn't die...
($tmp_mday, $tmp_mon, $tmp_year) = ( $4, $3-1, $1 );
},
# Time (HH:MM:SS (AM/PM))
sub { my($cdr, $time) = @_;
$time =~ /^(\d{1,2}):(\d{1,2}):(\d{1,2}) (AM|PM)$/
or die "unparsable time: $time"; #maybe we shouldn't die...
my $hour = $1;
$hour += 12 if $4 eq 'PM' && $hour != 12;
$hour = 0 if $4 eq 'AM' && $hour == 12;
$cdr->startdate(
timelocal($3, $2, $hour ,$tmp_mday, $tmp_mon, $tmp_year)
);
},
# Number
sub {
my($cdr, $number) = @_;
$number =~ /(\+|)(\d+)\s(\d+)$/
or die "unparsable number: $number"; #maybe we shouldn't die...
$cdr->dst("$1$2$3");
},
'description', # Destination (regionname)
# Duration
sub {
my($cdr, $duration) = @_;
$duration =~ /^(\d{1,3})m (\d{1,2})s$/
or die "unparsable duration: $duration"; #maybe we shouldn't die...
my $sec = $1*60 + $2;
$cdr->duration($sec);
$cdr->billsec($sec);
},
# Price
sub {
my($cdr, $amount) = @_;
$amount =~ s/\$//g;
$cdr->upstream_price($amount);
}
],
);
|