summaryrefslogtreecommitdiff
path: root/FS/FS/cdr/troop.pm
blob: 429c25a53127c97cecd487a2f50adf8b9163c868 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package FS::cdr::troop;

use strict;
use base qw( FS::cdr );
use vars qw( %info  $tmp_mon $tmp_mday $tmp_year );
use Time::Local;
#use FS::cdr qw( _cdr_date_parser_maker _cdr_min_parser_maker );

%info = (
  'name'          => 'Troop (old?)',
  'weight'        => 220,
  'header'        => 2,
  'type'          => 'xls',

  'import_fields' => [

    # CDR FIELD / REQUIRED / Notes

    # / No / CDR sequence number
    sub {},

    # WTN / Yes
    'charged_party',

    # Account Code / Yes / Account Code (security) and we need on invoice
    'accountcode',

    # DT / Yes / "DATE"   Excel
    # XXX false laziness w/bell_west.pm
    sub { my($cdr, $date) = @_;

          my $datetime = DateTime::Format::Excel->parse_datetime( $date );
          $tmp_mon  = $datetime->mon_0;
          $tmp_mday = $datetime->mday;
          $tmp_year = $datetime->year;
        },

    # Time / Yes / "TIME"  excel
    sub { my($cdr, $time) = @_;
          #my($sec, $min, $hour, $mday, $mon, $year)= localtime($cdr->startdate);

          #$sec = $time * 86400;
          my $sec = int( $time * 86400 + .5);

          #$cdr->startdate( timelocal($3, $2, $1 ,$mday, $mon, $year) );
          $cdr->startdate(
            timelocal(0, 0, 0, $tmp_mday, $tmp_mon, $tmp_year) + $sec
          );
        },


    # Dur. / Yes / Units = seconds
    'billsec',

    # OVS Type / Maybe / add "011" to international calls
    # N = DOM LD / normal
    # Z = INTL LD
    # O = INTL LD
    # others...?
    sub { my($cdr, $ovs) = @_;
          my $pre = ( $ovs =~ /^\s*[OZ]\s*$/i ) ? '011' : '1';
          $cdr->dst( $pre. $cdr->dst ) unless $cdr->dst =~ /^$pre/;
        },

    # Number / YES
    'src',

    # City / No
    'channel',

    # Prov/State / No / We will use your Freeside rating and description name
    sub { my($cdr, $state) = @_;
          $cdr->channel( $cdr->channel. ", $state" )
            if $state;
        },

    # Number / Yes
    'dst',

    # City / No
    'dstchannel',

    # Prov/State / No / We will use your Freeside rating and description name
    sub { my($cdr, $state) = @_;
          $cdr->dstchannel( $cdr->dstchannel. ", $state" )
            if $state;
        },

    # OVS / Maybe 
    # Would help to add "011" to international calls (if you are willing)
    # (using ovs above)
    sub { my($cdr, $ovs) = @_;
          my @ignore = ( 'BELL', 'CANADA', 'UNITED STATES', );
          $cdr->dstchannel( $cdr->dstchannel. ", $ovs" )
            if $ovs && ! grep { $ovs =~ /^\s*$_\s*$/ } @ignore;
        },

    # CC Ind. / No / Does show if Calling card but should not be required
    #'N' or 'E'
    sub {},

    # Call Charge / No / Bell billing info and is not required
    'upstream_price',

    # Account # / No / Bell billing info and is not required
    sub {},

    # Net Charge / No / Bell billing info and is not required
    sub {},

    # Surcharge / No / Taxes and is not required
    sub {},

    # GST / No / Taxes and is not required
    sub {},

    # PST / No / Taxes and is not required
    sub {},

    # HST / No / Taxes and is not required
    sub {},
    
  ],

);

1;