fix TeleAPI import (what kind of crack was Christopher smoking that he couldn't fix...
[freeside.git] / FS / FS / cdr / thinq.pm
1 package FS::cdr::thinq;
2
3 use strict;
4 use vars qw( @ISA %info $tmp_mon $tmp_mday $tmp_year );
5 use base qw( FS::cdr );
6 use Time::Local;
7 use Date::Parse;
8
9 @ISA = qw(FS::cdr);
10
11 %info = (
12   'name'          => 'ThinQ',
13   'weight'        => 13,
14   'type'          => 'csv',
15   'header'        => 1,
16   'disabled'      => 0,     #0 default, set to 1 to disable
17
18
19   'import_fields' => [
20
21     # Date (YYYY-MM-DD)
22     sub { my($cdr, $date) = @_;
23           $date =~ /^(\d\d(\d\d)?)\-(\d{1,2})\-(\d{1,2})$/
24             or die "unparsable date: $date"; #maybe we shouldn't die...
25           ($tmp_mday, $tmp_mon, $tmp_year) = ( $4, $3-1, $1 );
26         },
27
28     # Time (HH:MM:SS )
29     sub { my($cdr, $time) = @_;
30           $time =~ /^(\d{1,2}):(\d{1,2}):(\d{1,2})$/
31             or die "unparsable time: $time"; #maybe we shouldn't die...
32           $cdr->startdate(
33             timelocal($3, $2, $1 ,$tmp_mday, $tmp_mon, $tmp_year)
34           );
35         },
36
37     'carrierid',         # carrier_id
38     'src',               # from_ani
39      skip(5),            # from_lrn
40                                      # from_lata
41                                      # from_ocn
42                                      # from_state
43                                      # from_rc
44     'dst',               # to_did
45     'channel',           # thing_tier
46     'userfield',         # callid
47     'accountcode',       # account_id
48      skip(2),            # tf_profile
49                                      # dest_type
50     'dst_ip_addr',       # dest
51      skip(1),              # rate
52     'billsec',           # billsec
53      skip(1),              #total_charge
54   ],  ## end import
55
56 );      ## end info
57
58 sub skip { map { undef } (1..$_[0]) }
59
60 1;
61
62 =head1 NAME
63
64 FS::cdr::thinq - ThinQ cdr import.
65
66 =head1 DESCRIPTION
67
68 https://support.thinq.com/hc/en-us/articles/229251987-Defining-the-CDR-for-Origination
69
70 File format is csv, fields below.
71
72 01  date         - YYYY-MM-DD  2019-03-04
73 02  time         - HH:MM:SS  19:40:31
74 03  carrier_id   - thinq id number for each carrier  4
75 04  from_ani     - number dialed from  14055343879
76 05  from_lrn     - 10 digit number to identify CO switch port  14056269999
77 06  from_lata    - originating LATA  536
78 07  from_ocn     - operating company number assigned by NECA  6534
79 08  from_state   - originating state (US)  OK
80 09  from_rc      - originating rate center  "OKLA CITY"
81 10  to_did       - called number  17312018150
82 11  thinq_tier   - tier of thinq provider (1,2,3)  1
83 12  callid       - unique idenitifer for a call  960773443_66972652@206.147.84.26
84 13  account_id   - thinq account identifier  13840
85 14  tf_profile   - TFLCR profile used for inbound TF traffic  <null>
86 15  dest_type    - IP, PSN, ?  IP
87 16  dest         - pbx IP address for IP routed calls  192.151.131.17
88 17  rate         - charge per minute  0.00250000
89 18  billsec      - billable seconds  6
90 19  total_charge - charge for this call  0.00025000
91
92 =cut