+ 'classnum', 'serial', '', '', '', '',
+ 'classname', 'varchar', '', $char_d, '', '',
+ 'categorynum', 'int', 'NULL', '', '', '',
+ 'disabled', 'char', 'NULL', 1, '', '',
+ ],
+ 'primary_key' => 'classnum',
+ 'unique' => [],
+ 'index' => [ ['disabled'] ],
+ },
+
+ 'cdr' => {
+ 'columns' => [
+ # qw( name type null length default local );
+
+ ###
+ #asterisk fields
+ ###
+
+ 'acctid', 'bigserial', '', '', '', '',
+ #'calldate', 'TIMESTAMP with time zone', '', '', \'now()', '',
+ 'calldate', 'timestamp', '', '', \'now()', '',
+ 'clid', 'varchar', '', $char_d, \"''", '',
+ 'src', 'varchar', '', $char_d, \"''", '',
+ 'dst', 'varchar', '', $char_d, \"''", '',
+ 'dcontext', 'varchar', '', $char_d, \"''", '',
+ 'channel', 'varchar', '', $char_d, \"''", '',
+ 'dstchannel', 'varchar', '', $char_d, \"''", '',
+ 'lastapp', 'varchar', '', $char_d, \"''", '',
+ 'lastdata', 'varchar', '', $char_d, \"''", '',
+
+ #these don't seem to be logged by most of the SQL cdr_* modules
+ #except tds under sql-illegal names, so;
+ # ... don't rely on them for rating?
+ # and, what they hey, i went ahead and changed the names and data types
+ # to freeside-style dates...
+ #'start', 'timestamp', 'NULL', '', '', '',
+ #'answer', 'timestamp', 'NULL', '', '', '',
+ #'end', 'timestamp', 'NULL', '', '', '',
+ 'startdate', @date_type, '', '',
+ 'answerdate', @date_type, '', '',
+ 'enddate', @date_type, '', '',
+ #
+
+ 'duration', 'int', '', '', 0, '',
+ 'billsec', 'int', '', '', 0, '',
+ 'disposition', 'varchar', '', 45, \"''", '',
+ 'amaflags', 'int', '', '', 0, '',
+ 'accountcode', 'varchar', '', 20, \"''", '',
+ 'uniqueid', 'varchar', '', 32, \"''", '',
+ 'userfield', 'varchar', '', 255, \"''", '',
+
+ ###
+ # fields for unitel/RSLCOM/convergent that don't map well to asterisk
+ # defaults
+ # though these are now used elsewhere:
+ # charged_party, upstream_price, rated_price, carrierid
+ ###
+
+ #cdr_type: Usage = 1, S&E = 7, OC&C = 8
+ 'cdrtypenum', 'int', 'NULL', '', '', '',
+
+ 'charged_party', 'varchar', 'NULL', $char_d, '', '',
+
+ 'upstream_currency', 'char', 'NULL', 3, '', '',
+ 'upstream_price', 'decimal', 'NULL', '10,2', '', '',
+ 'upstream_rateplanid', 'int', 'NULL', '', '', '', #?
+
+ # how it was rated internally...
+ 'ratedetailnum', 'int', 'NULL', '', '', '',
+ 'rated_price', 'decimal', 'NULL', '10,4', '', '',
+
+ 'distance', 'decimal', 'NULL', '', '', '',
+ 'islocal', 'int', 'NULL', '', '', '', # '', '', 0, '' instead?
+
+ #cdr_calltype: the big list in appendix 2
+ 'calltypenum', 'int', 'NULL', '', '', '',
+
+ 'description', 'varchar', 'NULL', $char_d, '', '',
+ 'quantity', 'int', 'NULL', '', '', '',
+
+ #cdr_carrier: Telstra =1, Optus = 2, RSL COM = 3
+ 'carrierid', 'int', 'NULL', '', '', '',
+
+ 'upstream_rateid', 'int', 'NULL', '', '', '',
+
+ ###
+ #and now for our own fields
+ ###
+
+ # a svcnum... right..?
+ 'svcnum', 'int', 'NULL', '', '', '',
+
+ #NULL, done (or something)
+ 'freesidestatus', 'varchar', 'NULL', 32, '', '',
+
+ #NULL, done (or something)
+ 'freesiderewritestatus', 'varchar', 'NULL', 32, '', '',
+
+ #an indexed place to put big numbers
+ 'cdrid', 'bigint', 'NULL', '', '', '',
+
+ #old
+ 'cdrbatch', 'varchar', 'NULL', 255, '', '',
+ #new
+ 'cdrbatchnum', 'int', 'NULL', '', '', '',
+
+ ],
+ 'primary_key' => 'acctid',
+ 'unique' => [],
+ 'index' => [ [ 'calldate' ],
+ [ 'src' ], [ 'dst' ], [ 'dcontext' ], [ 'charged_party' ],
+ [ 'accountcode' ], [ 'carrierid' ], [ 'cdrid' ],
+ [ 'freesidestatus' ], [ 'freesiderewritestatus' ],
+ [ 'cdrbatch' ], [ 'cdrbatchnum' ],
+ ],
+ },
+
+ 'cdr_batch' => {
+ 'columns' => [
+ 'cdrbatchnum', 'serial', '', '', '', '',
+ 'cdrbatch', 'varchar', 'NULL', 255, '', '',
+ '_date', @date_type, '', '',
+ ],
+ 'primary_key' => 'cdrbatchnum',
+ 'unique' => [ [ 'cdrbatch' ] ],
+ 'index' => [],
+ },
+
+ 'cdr_termination' => {
+ 'columns' => [
+ 'cdrtermnum', 'bigserial', '', '', '', '',
+ 'acctid', 'bigint', '', '', '', '',
+ 'termpart', 'int', '', '', '', '',#future use see below
+ 'rated_price', 'decimal', 'NULL', '10,4', '', '',
+ 'status', 'varchar', 'NULL', 32, '', '',
+ ],
+ 'primary_key' => 'cdrtermnum',
+ 'unique' => [ [ 'acctid', 'termpart' ] ],
+ 'index' => [ [ 'acctid' ], [ 'status' ], ],
+ },
+
+ #to handle multiple termination/settlement passes...
+ # 'part_termination' => {
+ # 'columns' => [
+ # 'termpart', 'int', '', '', '', '',
+ # 'termname', 'varchar', '', $char_d, '', '',
+ # 'cdr_column', 'varchar', '', $char_d, '', '', #maybe set it here instead of in the price plan?
+ # ],
+ # 'primary_key' => 'termpart',
+ # 'unique' => [],
+ # 'index' => [],
+ # },
+
+ #the remaining cdr_ tables are not really used
+ 'cdr_calltype' => {
+ 'columns' => [
+ 'calltypenum', 'serial', '', '', '', '',
+ 'calltypename', 'varchar', '', $char_d, '', '',
+ ],
+ 'primary_key' => 'calltypenum',
+ 'unique' => [],
+ 'index' => [],
+ },
+
+ 'cdr_type' => {
+ 'columns' => [
+ 'cdrtypenum' => 'serial', '', '', '', '',
+ 'cdrtypename' => 'varchar', '', $char_d, '', '',
+ ],
+ 'primary_key' => 'cdrtypenum',
+ 'unique' => [],
+ 'index' => [],
+ },
+
+ 'cdr_carrier' => {
+ 'columns' => [
+ 'carrierid' => 'serial', '', '', '', '',
+ 'carriername' => 'varchar', '', $char_d, '', '',
+ ],
+ 'primary_key' => 'carrierid',
+ 'unique' => [],
+ 'index' => [],
+ },
+
+ #'cdr_file' => {
+ # 'columns' => [
+ # 'filenum', 'serial', '', '', '', '',
+ # 'filename', 'varchar', '', '', '', '',
+ # 'status', 'varchar', 'NULL', '', '', '',
+ # ],
+ # 'primary_key' => 'filenum',
+ # 'unique' => [ [ 'filename' ], ], #just change the index if we need to
+ # # agent-virtualize or have a customer
+ # # with dup-filename needs or something
+ # # (only used by cdr.http_and_import for
+ # # chrissakes)
+ # 'index' => [],
+ #},
+
+ 'inventory_item' => {
+ 'columns' => [
+ 'itemnum', 'serial', '', '', '', '',
+ 'classnum', 'int', '', '', '', '',
+ 'item', 'varchar', '', $char_d, '', '',
+ 'svcnum', 'int', 'NULL', '', '', '',
+ ],
+ 'primary_key' => 'itemnum',
+ 'unique' => [ [ 'classnum', 'item' ] ],
+ 'index' => [ [ 'classnum' ], [ 'svcnum' ] ],
+ },
+
+ 'inventory_class' => {
+ 'columns' => [
+ 'classnum', 'serial', '', '', '', '',
+ 'classname', 'varchar', '', $char_d, '', '',