X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2FSchema.pm;h=100fbb1c6c7be76b17583cb416b0c081fb26c3e4;hp=978a9bff6079d88c705d9e28562762a33f7aef34;hb=9dd7da8c2e0c7547adf0ef6abefa06b5e951dbf1;hpb=9f2280fbce022ab9bcfc46fe94483730b0aeb0f8 diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 978a9bff6..100fbb1c6 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -117,6 +117,7 @@ sub dbdef_dist { #false laziness w/sub indices in DBIx::DBSchema::DBD (well, sorta) #and sub sql_create_table in DBIx::DBSchema::Table (slighty more?) my $unique = $tables_hashref->{$tablename}{'unique'}; + warn "missing index for $tablename\n" unless defined $tables_hashref->{$tablename}{'index'}; my @index = @{ $tables_hashref->{$tablename}{'index'} }; # kludge to avoid avoid "BLOB/TEXT column 'statustext' used in key @@ -197,34 +198,42 @@ sub dbdef_dist { my $tableobj = $dbdef->table($table) or die "unknown table $table"; - my %indices = $tableobj->indices; + my %h_indices = (); + + unless ( $table eq 'cust_event' ) { #others? + + my %indices = $tableobj->indices; - my %h_indices = map { - ( "h_$_" => - DBIx::DBSchema::Index->new({ - 'name' => 'h_'. $indices{$_}->name, - 'unique' => 0, - 'columns' => [ @{$indices{$_}->columns} ], - }) - ); - } - keys %indices; - - $h_indices{"h_${table}_srckey"} = DBIx::DBSchema::Index->new({ - 'name' => "h_${table}_srckey", - 'unique' => 0, - 'columns' => [ 'history_action', #right? - $tableobj->primary_key, - ], - }); - - $h_indices{"h_${table}_srckey2"} = DBIx::DBSchema::Index->new({ - 'name' => "h_${table}_srckey2", - 'unique' => 0, - 'columns' => [ 'history_date', - $tableobj->primary_key, - ], - }); + %h_indices = map { + ( "h_$_" => + DBIx::DBSchema::Index->new({ + 'name' => 'h_'. $indices{$_}->name, + 'unique' => 0, + 'columns' => [ @{$indices{$_}->columns} ], + }) + ); + } + keys %indices; + + $h_indices{"h_${table}_srckey"} = + DBIx::DBSchema::Index->new({ + 'name' => "h_${table}_srckey", + 'unique' => 0, + 'columns' => [ 'history_action', #right? + $tableobj->primary_key, + ], + }); + + $h_indices{"h_${table}_srckey2"} = + DBIx::DBSchema::Index->new({ + 'name' => "h_${table}_srckey2", + 'unique' => 0, + 'columns' => [ 'history_date', + $tableobj->primary_key, + ], + }); + + } my $h_tableobj = DBIx::DBSchema::Table->new( { 'name' => "h_$table", @@ -523,12 +532,31 @@ sub tables_hashref { 'closed', 'char', 'NULL', 1, '', '', #not yet used much 'statementnum', 'int', 'NULL', '', '', '', #invoice aggregate statements 'agent_invid', 'int', 'NULL', '', '', '', #(varchar?) importing legacy + 'promised_date', @date_type, '', '', ], 'primary_key' => 'invnum', 'unique' => [ [ 'custnum', 'agent_invid' ] ], #agentnum? huh 'index' => [ ['custnum'], ['_date'], ['statementnum'], ['agent_invid'] ], }, + #for importing invoices from a legacy system for display purposes only + # no effect upon balance + 'legacy_cust_bill' => { + 'columns' => [ + 'legacyinvnum', 'serial', '', '', '', '', + 'legacyid', 'varchar', 'NULL', $char_d, '', '', + 'custnum', 'int', '', '', '', '', + '_date', @date_type, '', '', + 'charged', @money_type, '', '', + 'content_pdf', 'blob', 'NULL', '', '', '', + 'content_html', 'text', 'NULL', '', '', '', + 'locale', 'varchar', 'NULL', 16, '', '', + ], + 'primary_key' => 'legacyinvnum', + 'unique' => [], + 'index' => [ ['legacyid', 'custnum', 'locale' ], ], + }, + 'cust_statement' => { 'columns' => [ 'statementnum', 'serial', '', '', '', '', @@ -692,6 +720,7 @@ sub tables_hashref { 'duration', 'int', 'NULL', '', 0, '', 'phonenum', 'varchar', 'NULL', 15, '', '', 'accountcode', 'varchar', 'NULL', 20, '', '', + 'startdate', @date_type, '', '', 'regionname', 'varchar', 'NULL', $char_d, '', '', 'detail', 'varchar', '', 255, '', '', ], @@ -809,7 +838,7 @@ sub tables_hashref { 'classnum', 'int', 'NULL', '', '', '', 'custbatch', 'varchar', 'NULL', $char_d, '', '', # 'titlenum', 'int', 'NULL', '', '', '', - 'last', 'varchar', '', $char_d, '', '', + 'last', 'varchar', '', 2*$char_d, '', '', # 'middle', 'varchar', 'NULL', $char_d, '', '', 'first', 'varchar', '', $char_d, '', '', 'ss', 'varchar', 'NULL', 11, '', '', @@ -826,10 +855,14 @@ sub tables_hashref { 'state', 'varchar', 'NULL', $char_d, '', '', 'zip', 'varchar', 'NULL', 10, '', '', 'country', 'char', '', 2, '', '', + 'latitude', 'decimal', 'NULL', '10,7', '', '', + 'longitude','decimal', 'NULL', '10,7', '', '', + 'coord_auto', 'char', 'NULL', 1, '', '', 'daytime', 'varchar', 'NULL', 20, '', '', 'night', 'varchar', 'NULL', 20, '', '', 'fax', 'varchar', 'NULL', 12, '', '', - 'ship_last', 'varchar', 'NULL', $char_d, '', '', + 'mobile', 'varchar', 'NULL', 12, '', '', + 'ship_last', 'varchar', 'NULL', 2*$char_d, '', '', # 'ship_middle', 'varchar', 'NULL', $char_d, '', '', 'ship_first', 'varchar', 'NULL', $char_d, '', '', 'ship_company', 'varchar', 'NULL', $char_d, '', '', @@ -840,9 +873,13 @@ sub tables_hashref { 'ship_state', 'varchar', 'NULL', $char_d, '', '', 'ship_zip', 'varchar', 'NULL', 10, '', '', 'ship_country', 'char', 'NULL', 2, '', '', + 'ship_latitude', 'decimal', 'NULL', '10,7', '', '', + 'ship_longitude','decimal', 'NULL', '10,7', '', '', + 'ship_coord_auto', 'char', 'NULL', 1, '', '', 'ship_daytime', 'varchar', 'NULL', 20, '', '', 'ship_night', 'varchar', 'NULL', 20, '', '', 'ship_fax', 'varchar', 'NULL', 12, '', '', + 'ship_mobile', 'varchar', 'NULL', 12, '', '', 'payby', 'char', '', 4, '', '', 'payinfo', 'varchar', 'NULL', 512, '', '', 'paycvv', 'varchar', 'NULL', 512, '', '', @@ -852,7 +889,7 @@ sub tables_hashref { 'paystart_month', 'int', 'NULL', '', '', '', 'paystart_year', 'int', 'NULL', '', '', '', 'payissue', 'varchar', 'NULL', 2, '', '', - 'payname', 'varchar', 'NULL', $char_d, '', '', + 'payname', 'varchar', 'NULL', 2*$char_d, '', '', 'paystate', 'varchar', 'NULL', $char_d, '', '', 'paytype', 'varchar', 'NULL', $char_d, '', '', 'payip', 'varchar', 'NULL', 15, '', '', @@ -866,13 +903,16 @@ sub tables_hashref { 'comments', 'text', 'NULL', '', '', '', 'spool_cdr','char', 'NULL', 1, '', '', 'squelch_cdr','char', 'NULL', 1, '', '', - 'cdr_termination_percentage', 'decimal', 'NULL', '', '', '', + 'cdr_termination_percentage', 'decimal', 'NULL', '7,4', '', '', 'invoice_terms', 'varchar', 'NULL', $char_d, '', '', 'credit_limit', @money_typen, '', '', 'archived', 'char', 'NULL', 1, '', '', 'email_csv_cdr', 'char', 'NULL', 1, '', '', 'accountcode_cdr', 'char', 'NULL', 1, '', '', 'billday', 'int', 'NULL', '', '', '', + 'edit_subject', 'char', 'NULL', 1, '', '', + 'locale', 'varchar', 'NULL', 16, '', '', + 'calling_list_exempt', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'custnum', 'unique' => [ [ 'agentnum', 'agent_custid' ] ], @@ -887,12 +927,12 @@ sub tables_hashref { [ 'last' ], [ 'company' ], [ 'county' ], [ 'state' ], [ 'country' ], [ 'zip' ], - [ 'daytime' ], [ 'night' ], [ 'fax' ], + [ 'daytime' ], [ 'night' ], [ 'fax' ], [ 'mobile' ], #shipping [ 'ship_last' ], [ 'ship_company' ], [ 'ship_county' ], [ 'ship_state' ], [ 'ship_country' ], [ 'ship_zip' ], - [ 'ship_daytime' ], [ 'ship_night' ], [ 'ship_fax' ], + [ 'ship_daytime' ], [ 'ship_night' ], [ 'ship_fax' ], [ 'ship_mobile' ] ], }, @@ -1008,6 +1048,9 @@ sub tables_hashref { 'county', 'varchar', 'NULL', $char_d, '', '', 'state', 'varchar', 'NULL', $char_d, '', '', 'zip', 'varchar', 'NULL', 10, '', '', + 'latitude', 'decimal', 'NULL', '10,7', '', '', + 'longitude', 'decimal', 'NULL', '10,7', '', '', + 'coord_auto', 'char', 'NULL', 1, '', '', 'country', 'char', '', 2, '', '', 'geocode', 'varchar', 'NULL', 20, '', '', 'location_type', 'varchar', 'NULL', 20, '', '', @@ -1367,19 +1410,19 @@ sub tables_hashref { 'pay_batch' => { #batches of payments to an external processor 'columns' => [ - 'batchnum', 'serial', '', '', '', '', - 'payby', 'char', '', 4, '', '', # CARD/CHEK - 'status', 'char', 'NULL', 1, '', '', - 'download', @date_type, '', '', - 'upload', @date_type, '', '', + 'batchnum', 'serial', '', '', '', '', + 'agentnum', 'int', 'NULL', '', '', '', + 'payby', 'char', '', 4, '', '', # CARD/CHEK + 'status', 'char', 'NULL', 1, '', '', + 'download', @date_type, '', '', + 'upload', @date_type, '', '', ], 'primary_key' => 'batchnum', 'unique' => [], 'index' => [], }, - 'cust_pay_batch' => { #what's this used for again? list of customers - #in current CARD batch? (necessarily CARD?) + 'cust_pay_batch' => { #list of customers in current CARD/CHEK batch 'columns' => [ 'paybatchnum', 'serial', '', '', '', '', 'batchnum', 'int', '', '', '', '', @@ -1446,6 +1489,8 @@ sub tables_hashref { 'quantity', 'int', 'NULL', '', '', '', 'agent_pkgid', 'int', 'NULL', '', '', '', 'waive_setup', 'char', 'NULL', 1, '', '', + 'recur_show_zero', 'char', 'NULL', 1, '', '', + 'setup_show_zero', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'pkgnum', 'unique' => [], @@ -1499,14 +1544,14 @@ sub tables_hashref { 'cust_pkg_discount' => { 'columns' => [ - 'pkgdiscountnum', 'serial', '', '', '', '', - 'pkgnum', 'int', '', '', '', '', - 'discountnum', 'int', '', '', '', '', - 'months_used', 'decimal', 'NULL', '', '', '', - 'end_date', @date_type, '', '', - 'otaker', 'varchar', 'NULL', 32, '', '', - 'usernum', 'int', 'NULL', '', '', '', - 'disabled', 'char', 'NULL', 1, '', '', + 'pkgdiscountnum', 'serial', '', '', '', '', + 'pkgnum', 'int', '', '', '', '', + 'discountnum', 'int', '', '', '', '', + 'months_used', 'decimal', 'NULL', '7,4', '', '', + 'end_date', @date_type, '', '', + 'otaker', 'varchar', 'NULL', 32, '', '', + 'usernum', 'int', 'NULL', '', '', '', + 'disabled', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'pkgdiscountnum', 'unique' => [], @@ -1515,11 +1560,11 @@ sub tables_hashref { 'cust_bill_pkg_discount' => { 'columns' => [ - 'billpkgdiscountnum', 'serial', '', '', '', '', - 'billpkgnum', 'int', '', '', '', '', - 'pkgdiscountnum', 'int', '', '', '', '', - 'amount', @money_type, '', '', - 'months', 'decimal', 'NULL', '', '', '', + 'billpkgdiscountnum', 'serial', '', '', '', '', + 'billpkgnum', 'int', '', '', '', '', + 'pkgdiscountnum', 'int', '', '', '', '', + 'amount', @money_type, '', '', + 'months', 'decimal', 'NULL', '7,4', '', '', ], 'primary_key' => 'billpkgdiscountnum', 'unique' => [], @@ -1532,8 +1577,8 @@ sub tables_hashref { #'agentnum', 'int', 'NULL', '', '', '', 'name', 'varchar', 'NULL', $char_d, '', '', 'amount', @money_type, '', '', - 'percent', 'decimal', '', '', '', '', - 'months', 'decimal', 'NULL', '', '', '', + 'percent', 'decimal', '', '7,4', '', '', + 'months', 'decimal', 'NULL', '7,4', '', '', 'disabled', 'char', 'NULL', 1, '', '', 'setup', 'char', 'NULL', 1, '', '', ], @@ -1606,7 +1651,7 @@ sub tables_hashref { 'columns' => [ 'pkgpart', 'serial', '', '', '', '', 'pkg', 'varchar', '', $char_d, '', '', - 'comment', 'varchar', '', $char_d, '', '', + 'comment', 'varchar', '', 2*$char_d, '', '', 'promo_code', 'varchar', 'NULL', $char_d, '', '', 'setup', @perl_type, '', '', 'freq', 'varchar', '', $char_d, '', '', #billing frequency @@ -1629,6 +1674,7 @@ sub tables_hashref { 'fcc_ds0s', 'int', 'NULL', '', '', '', 'no_auto', 'char', 'NULL', 1, '', '', 'recur_show_zero', 'char', 'NULL', 1, '', '', + 'setup_show_zero', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'pkgpart', 'unique' => [], @@ -1851,7 +1897,7 @@ sub tables_hashref { 'popnum', 'int', 'NULL', '', '', '', 'uid', 'int', 'NULL', '', '', '', 'gid', 'int', 'NULL', '', '', '', - 'finger', 'varchar', 'NULL', $char_d, '', '', + 'finger', 'varchar', 'NULL', 2*$char_d, '', '', 'dir', 'varchar', 'NULL', $char_d, '', '', 'shell', 'varchar', 'NULL', $char_d, '', '', 'quota', 'varchar', 'NULL', $char_d, '', '', @@ -1976,36 +2022,50 @@ sub tables_hashref { 'svc_dsl' => { 'columns' => [ - 'svcnum', 'int', '', '', '', '', - 'pushed', 'int', 'NULL', '', '', '', - 'desired_due_date', 'int', 'NULL', '', '', '', - 'due_date', 'int', 'NULL', '', '', '', - 'vendor_order_id', 'varchar', 'NULL', $char_d, '', '', - 'vendor_qual_id', 'varchar', 'NULL', $char_d, '', '', - 'vendor_order_type', 'varchar', 'NULL', $char_d, '', '', + 'svcnum', 'int', '', '', '', '', + 'pushed', 'int', 'NULL', '', '', '', + 'desired_due_date', 'int', 'NULL', '', '', '', + 'due_date', 'int', 'NULL', '', '', '', + 'vendor_order_id', 'varchar', 'NULL', $char_d, '', '', + 'vendor_qual_id', 'varchar', 'NULL', $char_d, '', '', + 'vendor_order_type', 'varchar', 'NULL', $char_d, '', '', 'vendor_order_status', 'varchar', 'NULL', $char_d, '', '', - 'first', 'varchar', 'NULL', $char_d, '', '', - 'last', 'varchar', 'NULL', $char_d, '', '', - 'company', 'varchar', 'NULL', $char_d, '', '', - 'phonenum', 'varchar', 'NULL', 24, '', '', - 'loop_type', 'char', 'NULL', 1, '', '', - 'local_voice_provider', 'varchar', 'NULL', $char_d, '', '', - 'circuitnum', 'varchar', 'NULL', $char_d, '', '', - 'rate_band', 'varchar', 'NULL', $char_d, '', '', - 'vpi', 'int', 'NULL', '', '', '', - 'vci', 'int', 'NULL', '', '', '', - 'isp_chg', 'char', 'NULL', 1, '', '', - 'isp_prev', 'varchar', 'NULL', $char_d, '', '', - 'username', 'varchar', 'NULL', $char_d, '', '', - 'password', 'varchar', 'NULL', $char_d, '', '', - 'staticips', 'text', 'NULL', '', '', '', - 'monitored', 'char', 'NULL', 1, '', '', - 'last_pull', 'int', 'NULL', '', '', '', + 'first', 'varchar', 'NULL', $char_d, '', '', + 'last', 'varchar', 'NULL', $char_d, '', '', + 'company', 'varchar', 'NULL', $char_d, '', '', + 'phonenum', 'varchar', 'NULL', 24, '', '', + 'gateway_access_number', 'varchar', 'NULL', 24, '', '', + 'loop_type', 'char', 'NULL', 1, '', '', + 'local_voice_provider', 'varchar', 'NULL', $char_d, '', '', + 'circuitnum', 'varchar', 'NULL', $char_d, '', '', + 'rate_band', 'varchar', 'NULL', $char_d, '', '', + 'vpi', 'int', 'NULL', '', '', '', + 'vci', 'int', 'NULL', '', '', '', + 'isp_chg', 'char', 'NULL', 1, '', '', + 'isp_prev', 'varchar', 'NULL', $char_d, '', '', + 'username', 'varchar', 'NULL', $char_d, '', '', + 'password', 'varchar', 'NULL', $char_d, '', '', + 'staticips', 'text', 'NULL', '', '', '', + 'monitored', 'char', 'NULL', 1, '', '', + 'last_pull', 'int', 'NULL', '', '', '', ], 'primary_key' => 'svcnum', 'unique' => [ ], 'index' => [ ['phonenum'], ['vendor_order_id'] ], }, + + 'dsl_device' => { + 'columns' => [ + 'devicenum', 'serial', '', '', '', '', + #part_device? or our own part_dsl_device? + #'devicepart', 'int', '', '', '', '', + 'svcnum', 'int', '', '', '', '', + 'mac_addr', 'varchar', '', 12, '', '', + ], + 'primary_key' => 'devicenum', + 'unique' => [ [ 'mac_addr' ], ], + 'index' => [ [ 'svcnum' ], ], # [ 'devicepart' ] ], + }, 'dsl_note' => { 'columns' => [ @@ -2212,29 +2272,31 @@ sub tables_hashref { 'nas' => { 'columns' => [ - 'nasnum', 'serial', '', '', '', '', - 'nas', 'varchar', '', $char_d, '', '', - 'nasip', 'varchar', '', 15, '', '', - 'nasfqdn', 'varchar', '', $char_d, '', '', - 'last', 'int', '', '', '', '', + 'nasnum', 'serial', '', '', '', '', + 'nasname', 'varchar', '', 128, '', '', + 'shortname', 'varchar', 'NULL', 32, '', '', + 'type', 'varchar', '', 30, 'other', '', + 'ports', 'int', 'NULL', '', '', '', + 'secret', 'varchar', '', 60, 'secret', '', + 'server', 'varchar', 'NULL', 64, '', '', + 'community', 'varchar', 'NULL', 50, '', '', + 'description', 'varchar', '', 200, 'RADIUS Client', '', ], 'primary_key' => 'nasnum', - 'unique' => [ [ 'nas' ], [ 'nasip' ] ], - 'index' => [ [ 'last' ] ], + 'unique' => [ [ 'nasname' ], ], + 'index' => [], }, -# 'session' => { -# 'columns' => [ -# 'sessionnum', 'serial', '', '', '', '', -# 'portnum', 'int', '', '', '', '', -# 'svcnum', 'int', '', '', '', '', -# 'login', @date_type, '', '', -# 'logout', @date_type, '', '', -# ], -# 'primary_key' => 'sessionnum', -# 'unique' => [], -# 'index' => [ [ 'portnum' ] ], -# }, + 'export_nas' => { + 'columns' => [ + 'exportnasnum', 'serial', '', '', '', '', + 'exportnum', 'int', '', '', '', '', + 'nasnum', 'int', '', '', '', '', + ], + 'primary_key' => 'exportnasnum', + 'unique' => [ [ 'exportnum', 'nasnum' ] ], + 'index' => [ [ 'exportnum' ], [ 'nasnum' ] ], + }, 'queue' => { 'columns' => [ @@ -2342,12 +2404,27 @@ sub tables_hashref { 'groupnum', 'serial', '', '', '', '', 'groupname', 'varchar', '', $char_d, '', '', 'description', 'varchar', 'NULL', $char_d, '', '', + 'priority', 'int', '', '', '1', '', ], 'primary_key' => 'groupnum', 'unique' => [ ['groupname'] ], 'index' => [], }, + 'radius_attr' => { + 'columns' => [ + 'attrnum', 'serial', '', '', '', '', + 'groupnum', 'int', '', '', '', '', + 'attrname', 'varchar', '', $char_d, '', '', + 'value', 'varchar', '', $char_d, '', '', + 'attrtype', 'char', '', 1, '', '', + 'op', 'char', '', 2, '', '', + ], + 'primary_key' => 'attrnum', + 'unique' => [ ['groupnum','attrname'] ], #? + 'index' => [], + }, + 'msgcat' => { 'columns' => [ 'msgnum', 'serial', '', '', '', '', @@ -2433,34 +2510,57 @@ sub tables_hashref { 'svc_broadband' => { 'columns' => [ - 'svcnum', 'int', '', '', '', '', - 'description', 'varchar', 'NULL', $char_d, '', '', - 'blocknum', 'int', 'NULL', '', '', '', - 'speed_up', 'int', '', '', '', '', - 'speed_down', 'int', '', '', '', '', - 'ip_addr', 'varchar', 'NULL', 15, '', '', - 'mac_addr', 'varchar', 'NULL', 12, '', '', - 'authkey', 'varchar', 'NULL', 32, '', '', - 'latitude', 'decimal', 'NULL', '', '', '', - 'longitude', 'decimal', 'NULL', '', '', '', - 'altitude', 'decimal', 'NULL', '', '', '', - 'vlan_profile', 'varchar', 'NULL', $char_d, '', '', + 'svcnum', 'int', '', '', '', '', + 'description', 'varchar', 'NULL', $char_d, '', '', + 'blocknum', 'int', 'NULL', '', '', '', + 'sectornum', 'int', 'NULL', '', '', '', + 'speed_up', 'int', 'NULL', '', '', '', + 'speed_down', 'int', 'NULL', '', '', '', + 'ip_addr', 'varchar', 'NULL', 15, '', '', + 'mac_addr', 'varchar', 'NULL', 12, '', '', + 'authkey', 'varchar', 'NULL', 32, '', '', + 'latitude', 'decimal', 'NULL', '10,7', '', '', + 'longitude', 'decimal', 'NULL', '10,7', '', '', + 'altitude', 'decimal', 'NULL', '', '', '', + 'vlan_profile', 'varchar', 'NULL', $char_d, '', '', 'performance_profile', 'varchar', 'NULL', $char_d, '', '', - 'plan_id', 'varchar', 'NULL', $char_d, '', '', + 'plan_id', 'varchar', 'NULL', $char_d, '', '', ], 'primary_key' => 'svcnum', 'unique' => [ [ 'mac_addr' ] ], 'index' => [], }, + 'tower' => { + 'columns' => [ + 'towernum', 'serial', '', '', '', '', + #'agentnum', 'int', 'NULL', '', '', '', + 'towername', 'varchar', '', $char_d, '', '', + 'disabled', 'char', 'NULL', 1, '', '', + ], + 'primary_key' => 'towernum', + 'unique' => [ [ 'towername' ] ], # , 'agentnum' ] ], + 'index' => [], + }, + + 'tower_sector' => { + 'columns' => [ + 'sectornum', 'serial', '', '', '', '', + 'towernum', 'int', '', '', '', '', + 'sectorname', 'varchar', '', $char_d, '', '', + 'ip_addr', 'varchar', 'NULL', 15, '', '', + ], + 'primary_key' => 'sectornum', + 'unique' => [ [ 'towernum', 'sectorname' ], [ 'ip_addr' ], ], + 'index' => [ [ 'towernum' ] ], + }, + 'part_virtual_field' => { 'columns' => [ 'vfieldpart', 'serial', '', '', '', '', 'dbtable', 'varchar', '', 32, '', '', 'name', 'varchar', '', 32, '', '', - 'check_block', 'text', 'NULL', '', '', '', 'length', 'int', 'NULL', '', '', '', - 'list_source', 'text', 'NULL', '', '', '', 'label', 'varchar', 'NULL', 80, '', '', ], 'primary_key' => 'vfieldpart', @@ -2638,6 +2738,30 @@ sub tables_hashref { 'index' => [], }, + #not really part of the above rate_ stuff (used with flat rate rather than + # rated billing), but could be eventually, and its a rate + 'rate_tier' => { + 'columns' => [ + 'tiernum', 'serial', '', '', '', '', + 'tiername', 'varchar', '', $char_d, '', '', + ], + 'primary_key' => 'tiernum', + 'unique' => [ [ 'tiername'], ], + 'index' => [], + }, + + 'rate_tier_detail' => { + 'columns' => [ + 'tierdetailnum', 'serial', '', '', '', '', + 'tiernum', 'int', '', '', '', '', + 'min_quan', 'int', '', '', '', '', + 'min_charge', 'decimal', '', '10,4', '', '', + ], + 'primary_key' => 'tierdetailnum', + 'unique' => [], + 'index' => [ ['tiernum'], ], + }, + 'usage_class' => { 'columns' => [ 'classnum', 'serial', '', '', '', '', @@ -2743,14 +2867,16 @@ sub tables_hashref { 'payby', 'char', '', 4, '', '', 'payinfo', 'varchar', '', 128, '', '', #say, a 512-big digest _hex encoded #'paymask', 'varchar', 'NULL', $char_d, '', '' - '_date', @date_type, '', '', - 'otaker', 'varchar', 'NULL', 32, '', '', - 'usernum', 'int', 'NULL', '', '', '', + '_date', @date_type, '', '', + 'end_date', @date_type, '', '', + 'otaker', 'varchar', 'NULL', 32, '', '', + 'usernum', 'int', 'NULL', '', '', '', + 'bantype', 'varchar', 'NULL', $char_d, '', '', 'reason', 'varchar', 'NULL', $char_d, '', '', ], 'primary_key' => 'bannum', - 'unique' => [ [ 'payby', 'payinfo' ] ], - 'index' => [ [ 'usernum' ] ], + 'unique' => [], + 'index' => [ [ 'payby', 'payinfo' ], [ 'usernum' ], ], }, 'pkg_category' => { @@ -2772,6 +2898,7 @@ sub tables_hashref { 'classname', 'varchar', '', $char_d, '', '', 'categorynum', 'int', 'NULL', '', '', '', 'disabled', 'char', 'NULL', 1, '', '', + 'fcc_ds0s', 'int', 'NULL', '', '', '', ], 'primary_key' => 'classnum', 'unique' => [], @@ -2817,29 +2944,22 @@ sub tables_hashref { 'amaflags', 'int', '', '', 0, '', 'accountcode', 'varchar', '', 20, \"''", '', 'uniqueid', 'varchar', '', $char_d, \"''", '', - 'userfield', 'varchar', '', 255, \"''", '', + 'userfield', 'varchar', '', 512, \"''", '', 'max_callers', 'int', 'NULL', '', '', '', ### - # fields for unitel/RSLCOM/convergent that don't map well to asterisk - # defaults - # though these are now used elsewhere: + # old fields for unitel/RSLCOM/convergent that don't map to asterisk + # ones we adoped moved to "own fields" section below # charged_party, upstream_price, rated_price, carrierid, cdrtypenum ### - #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,4', '', '', '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? @@ -2850,16 +2970,24 @@ sub tables_hashref { '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..? + 'cdrtypenum', 'int', 'NULL', '', '', '', + + 'charged_party', 'varchar', 'NULL', $char_d, '', '', + + # how it was rated internally... + 'rated_price', 'decimal', 'NULL', '10,4', '', '', + 'rated_seconds', 'int', 'NULL', '', '', '', + 'rated_minutes', 'double precision', 'NULL', '', '', '', + + 'carrierid', 'int', 'NULL', '', '', '', + + # service it was matched to 'svcnum', 'int', 'NULL', '', '', '', #NULL, done (or something) @@ -2910,6 +3038,8 @@ sub tables_hashref { 'acctid', 'bigint', '', '', '', '', 'termpart', 'int', '', '', '', '',#future use see below 'rated_price', 'decimal', 'NULL', '10,4', '', '', + 'rated_seconds', 'int', 'NULL', '', '', '', + 'rated_minutes', 'double precision', 'NULL', '', '', '', 'status', 'varchar', 'NULL', 32, '', '', 'svcnum', 'int', 'NULL', '', '', '', ], @@ -3148,6 +3278,7 @@ sub tables_hashref { [ 'exportnum', 'countrycode', 'npa', 'nxx', 'station' ], # # [ 'svcnum' ], [ 'availbatch' ], + [ 'latanum' ], ], }, @@ -3155,6 +3286,7 @@ sub tables_hashref { 'columns' => [ 'latanum', 'int', '', '', '', '', 'description', 'varchar', '', $char_d, '', '', + 'have_usage', 'int', 'NULL', '', '', '', ], 'primary_key' => 'latanum', 'unique' => [], @@ -3248,13 +3380,14 @@ sub tables_hashref { 'conf' => { 'columns' => [ - 'confnum', 'serial', '', '', '', '', - 'agentnum', 'int', 'NULL', '', '', '', - 'name', 'varchar', '', $char_d, '', '', - 'value', 'text', 'NULL', '', '', '', + 'confnum', 'serial', '', '', '', '', + 'agentnum', 'int', 'NULL', '', '', '', + 'locale', 'varchar','NULL', 16, '', '', + 'name', 'varchar', '', $char_d, '', '', + 'value', 'text', 'NULL', '', '', '', ], 'primary_key' => 'confnum', - 'unique' => [ [ 'agentnum', 'name' ]], + 'unique' => [ [ 'agentnum', 'locale', 'name' ] ], 'index' => [], }, @@ -3323,13 +3456,14 @@ sub tables_hashref { 'bill_batch' => { 'columns' => [ - 'batchnum', 'serial', '', '', '', '', - 'status', 'char', 'NULL','1', '', '', - 'pdf', 'blob', 'NULL', '', '', '', + 'batchnum', 'serial', '', '', '', '', + 'agentnum', 'int', 'NULL', '', '', '', + 'status', 'char', 'NULL', '1', '', '', + 'pdf', 'blob', 'NULL', '', '', '', ], 'primary_key' => 'batchnum', 'unique' => [], - 'index' => [], + 'index' => [ ['agentnum'] ], }, 'cust_bill_batch' => { @@ -3368,8 +3502,21 @@ sub tables_hashref { 'bcc_addr', 'varchar', 'NULL', 255, '', '', ], 'primary_key' => 'msgnum', - 'unique' => [ ['msgname', 'mime_type'] ], - 'index' => [ ['agentnum'], ] + 'unique' => [ ], + 'index' => [ ['agentnum'], ], + }, + + 'template_content' => { + 'columns' => [ + 'contentnum', 'serial', '', '', '', '', + 'msgnum', 'int', '', '', '', '', + 'locale', 'varchar', 'NULL', 16, '', '', + 'subject', 'varchar', 'NULL', 512, '', '', + 'body', 'text', 'NULL', '', '', '', + ], + 'primary_key' => 'contentnum', + 'unique' => [ ['msgnum', 'locale'] ], + 'index' => [ ], }, 'cust_msg' => {