summaryrefslogtreecommitdiff
path: root/FS/FS/cdr/freeside_description_default.pm
blob: fd91530ef810795c7a372414efa4b1db0225d42d (plain)
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);
    }

  ],
);