X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FSchema.pm;h=59c2abee97b1b2ff66ef67408df8fe103f444cb9;hb=2e7ce01632012ccc0dd440a8bc37a9ec9bd55fac;hp=0b47065f720b1c2bd98ed23e9387bb7b662df7b2;hpb=77df4fc41788698051632d4918da8c69c85125f5;p=freeside.git diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 0b47065f7..59c2abee9 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -7,6 +7,7 @@ use DBIx::DBSchema 0.40; #0.40 for mysql upgrade fixes use DBIx::DBSchema::Table; use DBIx::DBSchema::Column; use DBIx::DBSchema::Index; +#can't use this yet, dependency bs #use FS::Conf; @ISA = qw(Exporter); @EXPORT_OK = qw( dbdef dbdef_dist reload_dbdef ); @@ -75,7 +76,8 @@ Currently, this enables "ENGINE=InnoDB" for MySQL databases. =cut sub dbdef_dist { - my $datasrc = @_ ? shift : ''; + my $datasrc = @_ && !ref($_[0]) ? shift : ''; + my $opt = @_ ? shift : {}; my $local_options = ''; if ( $datasrc =~ /^dbi:mysql/i ) { @@ -192,6 +194,7 @@ sub dbdef_dist { grep { ! /^(clientapi|access_user)_session/ && ! /^h_/ && ! /^log(_context)?$/ + && ( ! /^queue(_arg)?$/ || ! $opt->{'queue-no_history'} ) && ! $tables_hashref_torrus->{$_} } $dbdef->tables @@ -236,6 +239,10 @@ sub dbdef_dist { } + my $primary_key_col = $tableobj->column($tableobj->primary_key) + or die "$table: primary key declared as ". $tableobj->primary_key. + ", but no column of that name\n"; + my $historynum_type = ( $tableobj->column($tableobj->primary_key)->type =~ /^(bigserial|bigint|int8)$/i ? 'bigserial' @@ -521,11 +528,23 @@ sub tables_hashref { 'index' => [ ['typenum'] ], }, + 'agent_currency' => { + 'columns' => [ + 'agentcurrencynum', 'serial', '', '', '', '', + 'agentnum', 'int', '', '', '', '', + 'currency', 'char', '', 3, '', '', + ], + 'primary_key' => 'agentcurrencynum', + 'unique' => [], + 'index' => [ ['agentnum'] ], + }, + 'sales' => { 'columns' => [ 'salesnum', 'serial', '', '', '', '', 'salesperson', 'varchar', '', $char_d, '', '', 'agentnum', 'int', 'NULL', '', '', '', + 'sales_custnum', 'int', 'NULL', '', '', '', 'disabled', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'salesnum', @@ -533,15 +552,17 @@ sub tables_hashref { 'index' => [ ['salesnum'], ['disabled'] ], }, - 'agent_currency' => { + 'sales_pkg_class' => { 'columns' => [ - 'agentcurrencynum', 'serial', '', '', '', '', - 'agentnum', 'int', '', '', '', '', - 'currency', 'char', '', 3, '', '', + 'salespkgclassnum', 'serial', '', '', '', '', + 'salesnum', 'int', '', '', '', '', + 'classnum', 'int', 'NULL', '', '', '', + 'commission_percent', 'decimal', '', '7,4', '', '', + 'commission_duration', 'int', 'NULL', '', '', '', ], - 'primary_key' => 'agentcurrencynum', - 'unique' => [], - 'index' => [ ['agentnum'] ], + 'primary_key' => 'salespkgclassnum', + 'unique' => [ [ 'salesnum', 'classnum' ], ], + 'index' => [], }, 'cust_attachment' => { @@ -986,13 +1007,48 @@ sub tables_hashref { 'closed', 'char', 'NULL', 1, '', '', 'pkgnum', 'int', 'NULL', '', '','',#desired pkgnum for pkg-balances 'eventnum', 'int', 'NULL', '', '','',#triggering event for commission - #'commission_agentnum', 'int', 'NULL', '', '', '', # + 'commission_agentnum', 'int', 'NULL', '', '', '', # + 'commission_salesnum', 'int', 'NULL', '', '', '', # + 'commission_pkgnum', 'int', 'NULL', '', '', '', # + ], + 'primary_key' => 'crednum', + 'unique' => [], + 'index' => [ ['custnum'], ['_date'], ['usernum'], ['eventnum'], + [ 'commission_salesnum' ], + ], + }, + + 'cust_credit_void' => { + 'columns' => [ + 'crednum', 'serial', '', '', '', '', + 'custnum', 'int', '', '', '', '', + '_date', @date_type, '', '', + 'amount',@money_type, '', '', + 'currency', 'char', 'NULL', 3, '', '', + 'otaker', 'varchar', 'NULL', 32, '', '', + 'usernum', 'int', 'NULL', '', '', '', + 'reason', 'text', 'NULL', '', '', '', + 'reasonnum', 'int', 'NULL', '', '', '', + 'addlinfo', 'text', 'NULL', '', '', '', + 'closed', 'char', 'NULL', 1, '', '', + 'pkgnum', 'int', 'NULL', '', '','', + 'eventnum', 'int', 'NULL', '', '','', + 'commission_agentnum', 'int', 'NULL', '', '', '', + 'commission_salesnum', 'int', 'NULL', '', '', '', + 'commission_pkgnum', 'int', 'NULL', '', '', '', + #void fields + 'void_date', @date_type, '', '', + 'void_reason', 'varchar', 'NULL', $char_d, '', '', + 'void_usernum', 'int', 'NULL', '', '', '', ], 'primary_key' => 'crednum', 'unique' => [], - 'index' => [ ['custnum'], ['_date'], ['usernum'], ['eventnum'] ], + 'index' => [ ['custnum'], ['_date'], ['usernum'], ['eventnum'], + [ 'commission_salesnum' ], + ], }, + 'cust_credit_bill' => { 'columns' => [ 'creditbillnum', 'serial', '', '', '', '', @@ -1032,6 +1088,7 @@ sub tables_hashref { 'columns' => [ 'custnum', 'serial', '', '', '', '', 'agentnum', 'int', '', '', '', '', + 'salesnum', 'int', 'NULL', '', '', '', 'agent_custid', 'varchar', 'NULL', $char_d, '', '', 'classnum', 'int', 'NULL', '', '', '', 'custbatch', 'varchar', 'NULL', $char_d, '', '', @@ -1086,7 +1143,7 @@ sub tables_hashref { 'currency', 'char', 'NULL', 3, '', '', #deprecated, info moved to cust_payby - 'payby', 'char', '', 4, '', '', + 'payby', 'char', 'NULL', 4, '', '', 'payinfo', 'varchar', 'NULL', 512, '', '', 'paycvv', 'varchar', 'NULL', 512, '', '', 'paymask', 'varchar', 'NULL', $char_d, '', '', @@ -1258,7 +1315,7 @@ sub tables_hashref { 'emailaddress', 'varchar', '', $char_d, '', '', ], 'primary_key' => 'contactemailnum', - 'unique' => [ [ 'emailaddress' ], ], + 'unique' => [ [ 'contactnum', 'emailaddress' ], ], 'index' => [], }, @@ -1607,6 +1664,7 @@ sub tables_hashref { 'invnum', 'int', 'NULL', '', '', '', 'manual', 'char', 'NULL', 1, '', '', 'discount_term','int', 'NULL', '', '', '', + 'failure_status','varchar','NULL', 16, '', '', ], 'primary_key' => 'paypendingnum', 'unique' => [ [ 'payunique' ] ], @@ -1771,6 +1829,7 @@ sub tables_hashref { 'amount', @money_type, '', '', 'currency', 'char', 'NULL', 3, '', '', 'status', 'varchar', 'NULL', $char_d, '', '', + 'failure_status','varchar', 'NULL', 16, '', '', 'error_message', 'varchar', 'NULL', $char_d, '', '', ], 'primary_key' => 'paybatchnum', @@ -1798,6 +1857,7 @@ sub tables_hashref { 'locationnum', 'int', 'NULL', '', '', '', 'otaker', 'varchar', 'NULL', 32, '', '', 'usernum', 'int', 'NULL', '', '', '', + 'salesnum', 'int', 'NULL', '', '', '', 'order_date', @date_type, '', '', 'start_date', @date_type, '', '', 'setup', @date_type, '', '', @@ -1948,6 +2008,7 @@ sub tables_hashref { 'columns' => [ 'discountnum', 'serial', '', '', '', '', #'agentnum', 'int', 'NULL', '', '', '', + 'classnum', 'int', 'NULL', '', '', '', 'name', 'varchar', 'NULL', $char_d, '', '', 'amount', @money_type, '', '', 'percent', 'decimal', '', '7,4', '', '', @@ -1961,12 +2022,25 @@ sub tables_hashref { 'index' => [], # [ 'agentnum' ], ], }, + 'discount_class' => { + 'columns' => [ + 'classnum', 'serial', '', '', '', '', + 'classname', 'varchar', '', $char_d, '', '', + #'categorynum', 'int', 'NULL', '', '', '', + 'disabled', 'char', 'NULL', 1, '', '', + ], + 'primary_key' => 'classnum', + 'unique' => [], + 'index' => [ ['disabled'] ], + }, + 'cust_refund' => { 'columns' => [ 'refundnum', 'serial', '', '', '', '', 'custnum', 'int', '', '', '', '', '_date', @date_type, '', '', 'refund', @money_type, '', '', + 'currency', 'char', 'NULL', 3, '', '', 'otaker', 'varchar', 'NULL', 32, '', '', 'usernum', 'int', 'NULL', '', '', '', 'reason', 'varchar', '', $char_d, '', '', @@ -2221,16 +2295,17 @@ sub tables_hashref { 'pkg_svc' => { 'columns' => [ - 'pkgsvcnum', 'serial', '', '', '', '', - 'pkgpart', 'int', '', '', '', '', - 'svcpart', 'int', '', '', '', '', - 'quantity', 'int', '', '', '', '', - 'primary_svc','char', 'NULL', 1, '', '', - 'hidden', 'char', 'NULL', 1, '', '', + 'pkgsvcnum', 'serial', '', '', '', '', + 'pkgpart', 'int', '', '', '', '', + 'svcpart', 'int', '', '', '', '', + 'quantity', 'int', '', '', '', '', + 'primary_svc', 'char', 'NULL', 1, '', '', + 'hidden', 'char', 'NULL', 1, '', '', + 'bulk_skip', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'pkgsvcnum', - 'unique' => [ ['pkgpart', 'svcpart'] ], - 'index' => [ ['pkgpart'], ['quantity'] ], + 'unique' => [ ['pkgpart', 'svcpart'] ], + 'index' => [ ['pkgpart'], ['quantity'] ], }, 'part_referral' => { @@ -2255,6 +2330,7 @@ sub tables_hashref { 'selfservice_access', 'varchar', 'NULL', $char_d, '', '', 'classnum', 'int', 'NULL', '', '', '', 'restrict_edit_password','char', 'NULL', 1, '', '', + 'has_router', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'svcpart', 'unique' => [], @@ -3040,14 +3116,17 @@ sub tables_hashref { 'tower' => { 'columns' => [ - 'towernum', 'serial', '', '', '', '', - #'agentnum', 'int', 'NULL', '', '', '', - 'towername', 'varchar', '', $char_d, '', '', - 'disabled', 'char', 'NULL', 1, '', '', - 'latitude', 'decimal', 'NULL', '10,7', '', '', - 'longitude','decimal', 'NULL', '10,7', '', '', - 'altitude', 'decimal', 'NULL', '', '', '', - 'coord_auto', 'char', 'NULL', 1, '', '', + 'towernum', 'serial', '', '', '', '', + #'agentnum', 'int', 'NULL', '', '', '', + 'towername', 'varchar', '', $char_d, '', '', + 'disabled', 'char', 'NULL', 1, '', '', + 'latitude', 'decimal', 'NULL', '10,7', '', '', + 'longitude', 'decimal', 'NULL', '10,7', '', '', + 'coord_auto', 'char', 'NULL', 1, '', '', + 'altitude', 'decimal', 'NULL', '', '', '', + 'height', 'decimal', 'NULL', '', '', '', + 'veg_height', 'decimal', 'NULL', '', '', '', + 'color', 'varchar', 'NULL', 6, '', '', ], 'primary_key' => 'towernum', 'unique' => [ [ 'towername' ] ], # , 'agentnum' ] ], @@ -3060,6 +3139,12 @@ sub tables_hashref { 'towernum', 'int', '', '', '', '', 'sectorname', 'varchar', '', $char_d, '', '', 'ip_addr', 'varchar', 'NULL', 15, '', '', + 'height', 'decimal', 'NULL', '', '', '', + 'freq_mhz', 'int', 'NULL', '', '', '', + 'direction', 'int', 'NULL', '', '', '', + 'width', 'int', 'NULL', '', '', '', + #downtilt etc? rfpath has profile files for devices/antennas you upload? + 'range', 'decimal', 'NULL', '', '', '', #? ], 'primary_key' => 'sectornum', 'unique' => [ [ 'towernum', 'sectorname' ], [ 'ip_addr' ], ], @@ -3470,6 +3555,10 @@ sub tables_hashref { 'src_ip_addr', 'varchar', 'NULL', 15, '', '', 'dst_ip_addr', 'varchar', 'NULL', 15, '', '', + #currently only u4: + # terminating number (as opposed to dialed destination) + 'dst_term', '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? @@ -3579,7 +3668,7 @@ sub tables_hashref { [ 'sessionnum' ], [ 'subscriber' ], [ 'freesidestatus' ], [ 'freesiderewritestatus' ], [ 'cdrbatch' ], [ 'cdrbatchnum' ], - [ 'src_ip_addr' ], [ 'dst_ip_addr' ], + [ 'src_ip_addr' ], [ 'dst_ip_addr' ], [ 'dst_term' ], ], }, @@ -3715,6 +3804,7 @@ sub tables_hashref { 'last', 'varchar', 'NULL', $char_d, '', '', 'first', 'varchar', 'NULL', $char_d, '', '', 'user_custnum', 'int', 'NULL', '', '', '', + 'report_salesnum', 'int', 'NULL', '', '', '', 'disabled', 'char', 'NULL', 1, '', '', ], 'primary_key' => 'usernum', @@ -3767,17 +3857,6 @@ sub tables_hashref { 'index' => [ [ 'groupnum' ] ], }, - 'access_groupsales' => { - 'columns' => [ - 'groupsalesnum', 'serial', '', '', '', '', - 'groupnum', 'int', '', '', '', '', - 'salesnum', 'int', '', '', '', '', - ], - 'primary_key' => 'groupsalesnum', - 'unique' => [ [ 'groupnum', 'salesnum' ] ], - 'index' => [ [ 'groupnum' ] ], - }, - 'access_right' => { 'columns' => [ 'rightnum', 'serial', '', '', '', '', @@ -4233,28 +4312,116 @@ sub tables_hashref { 'index' => [], }, + 'svc_alarm' => { + 'columns' => [ + 'svcnum', 'int', '', '', '', '', + 'alarm_system', 'varchar', '', $char_d, '', '', # dropdowns? + 'alarm_type', 'varchar', '', $char_d, '', '', # + 'acctnum', 'varchar', '', $char_d, '', '', + '_password', 'varchar', '', $char_d, '', '', + 'location', 'varchar', 'NULL', $char_d, '', '', + #cs + #rep + ], + 'primary_key' => 'svcnum', + 'unique' => [], #system/type/acctnum?? + 'index' => [], + }, + 'svc_cable' => { 'columns' => [ - 'svcnum', 'int', '', '', '', '', - #nothing so far... there should be _something_ uniquely identifying - # each subscriber besides the device info...? + 'svcnum', 'int', '', '', '', '', + 'providernum', 'int', 'NULL', '', '', '', + 'ordernum', 'varchar', 'NULL', $char_d, '', '', + 'modelnum', 'int', 'NULL', '', '', '', + 'serialnum', 'varchar', 'NULL', $char_d, '', '', + 'mac_addr', 'varchar', 'NULL', 12, '', '', ], 'primary_key' => 'svcnum', 'unique' => [], 'index' => [], }, - 'cable_device' => { + 'cable_model' => { 'columns' => [ - 'devicenum', 'serial', '', '', '', '', - 'devicepart', 'int', '', '', '', '', - 'svcnum', 'int', '', '', '', '', - 'mac_addr', 'varchar', 'NULL', 12, '', '', - 'serial', 'varchar', 'NULL', $char_d, '', '', + 'modelnum', 'serial', '', '', '', '', + 'model_name', 'varchar', '', $char_d, '', '', + 'disabled', 'char', 'NULL', 1, '', '', ], - 'primary_key' => 'devicenum', - 'unique' => [ [ 'mac_addr' ], ], - 'index' => [ [ 'devicepart' ], [ 'svcnum' ], ], + 'primary_key' => 'modelnum', + 'unique' => [ [ 'model_name' ], ], + 'index' => [], + }, + + 'cable_provider' => { + 'columns' => [ + 'providernum', 'serial', '', '', '', '', + 'provider', 'varchar', '', $char_d, '', '', + 'disabled', 'char', 'NULL', 1, '', '', + ], + 'primary_key' => 'providernum', + 'unique' => [ [ 'provider' ], ], + 'index' => [], + }, + + 'vend_main' => { + 'columns' => [ + 'vendnum', 'serial', '', '', '', '', + 'vendname', 'varchar', '', $char_d, '', '', + 'classnum', 'int', '', '', '', '', + 'disabled', 'char', 'NULL', 1, '', '', + ], + 'primary_key' => 'vendnum', + 'unique' => [ ['vendname', 'disabled'] ], + 'index' => [], + }, + + 'vend_class' => { + 'columns' => [ + 'classnum', 'serial', '', '', '', '', + 'classname', 'varchar', '', $char_d, '', '', + 'disabled', 'char', 'NULL', 1, '', '', + ], + 'primary_key' => 'classnum', + 'unique' => [], + 'index' => [ ['disabled'] ], + }, + + 'vend_bill' => { + 'columns' => [ + 'vendbillnum', 'serial', '', '', '', '', + 'vendnum', 'int', '', '', '', '', + '_date', @date_type, '', '', + 'charged', @money_type, '', '', + ], + 'primary_key' => 'vendbillnum', + 'unique' => [], + 'index' => [ ['vendnum'], ['_date'], ], + }, + + 'vend_pay' => { + 'columns' => [ + 'vendpaynum', 'serial', '', '', '', '', + 'vendnum', 'int', '', '', '', '', + '_date', @date_type, '', '', + 'paid', @money_type, '', '', + ], + 'primary_key' => 'vendpaynum', + 'unique' => [], + 'index' => [ [ 'vendnum' ], [ '_date' ], ], + }, + + 'vend_bill_pay' => { + 'columns' => [ + 'vendbillpaynum', 'serial', '', '', '', '', + 'vendbillnum', 'int', '', '', '', '', + 'vendpaynum', 'int', '', '', '', '', + 'amount', @money_type, '', '', + #? '_date', @date_type, '', '', + ], + 'primary_key' => 'vendbillpaynum', + 'unique' => [], + 'index' => [ [ 'vendbillnum' ], [ 'vendpaynum' ] ], }, %{ tables_hashref_torrus() }, @@ -4282,6 +4449,52 @@ sub tables_hashref { 'index' => [ [ 'derivenum', ], ], }, + 'invoice_mode' => { + 'columns' => [ + 'modenum', 'serial', '', '', '', '', + 'agentnum', 'int', 'NULL', '', '', '', + 'modename', 'varchar', '', 32, '', '', + ], + 'primary_key' => 'modenum', + 'unique' => [ ], + 'index' => [ ], + }, + + 'invoice_conf' => { + 'columns' => [ + 'confnum', 'serial', '', '', '', '', + 'modenum', 'int', '', '', '', '', + 'locale', 'varchar', 'NULL', 16, '', '', + 'notice_name', 'varchar', 'NULL', 64, '', '', + 'subject', 'varchar', 'NULL', 64, '', '', + 'htmlnotes', 'text', 'NULL', '', '', '', + 'htmlfooter', 'text', 'NULL', '', '', '', + 'htmlsummary', 'text', 'NULL', '', '', '', + 'htmlreturnaddress', 'text', 'NULL', '', '', '', + 'latexnotes', 'text', 'NULL', '', '', '', + 'latexfooter', 'text', 'NULL', '', '', '', + 'latexsummary', 'text', 'NULL', '', '', '', + 'latexcoupon', 'text', 'NULL', '', '', '', + 'latexsmallfooter', 'text', 'NULL', '', '', '', + 'latexreturnaddress', 'text', 'NULL', '', '', '', + 'latextopmargin', 'varchar', 'NULL', 16, '', '', + 'latexheadsep', 'varchar', 'NULL', 16, '', '', + 'latexaddresssep', 'varchar', 'NULL', 16, '', '', + 'latextextheight', 'varchar', 'NULL', 16, '', '', + 'latexextracouponspace','varchar', 'NULL', 16, '', '', + 'latexcouponfootsep', 'varchar', 'NULL', 16, '', '', + 'latexcouponamountenclosedsep', 'varchar', 'NULL', 16, '', '', + 'latexcoupontoaddresssep', 'varchar', 'NULL', 16, '', '', + 'latexverticalreturnaddress', 'char', 'NULL', 1, '', '', + 'latexcouponaddcompanytoaddress', 'char', 'NULL', 1, '', '', + 'logo_png', 'blob', 'NULL', '', '', '', + 'logo_eps', 'blob', 'NULL', '', '', '', + 'lpr', 'varchar', 'NULL', $char_d, '', '', + ], + 'primary_key' => 'confnum', + 'unique' => [ [ 'modenum', 'locale' ] ], + 'index' => [ ], + }, # name type nullability length default local