X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=bin%2Ffs-setup;h=476b84d877ef59689c55f138f6b695fca74e5c7d;hp=9075ca2a9b9c51454005517ada43d9a5b36a18a6;hb=44e51a5c50be350fa698bcdcf86ad5c01a7631a2;hpb=e8dd9b3bbf139e1a21180a1efc81129f01d2d18b diff --git a/bin/fs-setup b/bin/fs-setup index 9075ca2a9..476b84d87 100755 --- a/bin/fs-setup +++ b/bin/fs-setup @@ -1,146 +1,6 @@ #!/usr/bin/perl -Tw # -# $Id: fs-setup,v 1.39 2001-07-30 07:42:39 ivan Exp $ -# -# ivan@sisd.com 97-nov-8,9 -# -# agent_type and type_pkgs added. -# (index need to be declared, & primary keys shoudln't have mysql syntax) -# ivan@sisd.com 97-nov-13 -# -# pulled modified version back out of register.cgi ivan@sisd.com 98-feb-21 -# -# removed extraneous sample data ivan@sisd.com 98-mar-23 -# -# gained the big hash from dbdef.pm, dbdef.pm usage rewrite ivan@sisd.com -# 98-apr-19 - 98-may-11 plus -# -# finished up ivan@sisd.com 98-jun-1 -# -# part_svc fields are all forced NULL, not the opposite -# hmm: also are forced varchar($char_d) as fixed '0' for things like -# uid is Not Good. will this break anything else? -# ivan@sisd.com 98-jun-29 -# -# ss is 11 chars ivan@sisd.com 98-jul-20 -# -# setup of arbitrary radius fields ivan@sisd.com 98-aug-9 -# -# ouch, removed index on company name that wasn't supposed to be there -# ivan@sisd.com 98-sep-4 -# -# fix radius attributes ivan@sisd.com 98-sep-27 -# -# $Log: fs-setup,v $ -# Revision 1.39 2001-07-30 07:42:39 ivan -# need an DBIx::DBSchema with delcolumn -# -# Revision 1.38 2001/07/30 07:36:04 ivan -# templates!!! -# -# Revision 1.37 2001/06/03 14:16:11 ivan -# allow empty refund reasons -# -# Revision 1.36 2001/04/15 12:56:31 ivan -# s/dbdef/DBIx::DBSchema/ -# -# Revision 1.35 2001/04/15 09:36:43 ivan -# http://www.sisd.com/freeside/list-archive/msg01450.html -# -# Revision 1.34 2001/04/09 23:05:16 ivan -# Transactions Part I!!! -# -# Revision 1.33 2001/02/03 14:03:50 ivan -# time-based prepaid cards, session monitor. woop! -# -# Revision 1.32 2000/12/04 00:13:02 ivan -# fix nas.last type -# -# Revision 1.31 2000/12/01 18:34:53 ivan -# another tyop -# -# Revision 1.30 2000/12/01 18:33:32 ivan -# tyop -# -# Revision 1.29 2000/11/07 15:00:37 ivan -# session monitor -# -# Revision 1.28 2000/10/30 10:47:26 ivan -# nas.last can't be defined NULL if indexed -# -# Revision 1.26 2000/07/06 08:57:27 ivan -# support for radius check attributes (except importing). poorly documented. -# -# Revision 1.25 2000/06/29 12:00:49 ivan -# support for pre-encrypted md5 passwords. -# -# Revision 1.24 2000/03/02 07:44:07 ivan -# typo forgot closing ' -# -# Revision 1.23 2000/02/03 05:16:52 ivan -# beginning of DNS and Apache support -# -# Revision 1.22 2000/01/31 05:22:23 ivan -# prepaid "internet cards" -# -# Revision 1.21 2000/01/30 06:03:26 ivan -# postgres 6.5 finally supports decimal(10,2) -# -# Revision 1.20 2000/01/28 22:53:33 ivan -# track full phone number -# -# Revision 1.19 1999/07/29 08:50:35 ivan -# wrong type for cust_pay_batch.exp -# -# Revision 1.18 1999/04/15 22:46:30 ivan -# TT isn't a state! -# -# Revision 1.17 1999/04/14 07:58:39 ivan -# export getsecrets from FS::UID instead of calling it explicitly -# -# Revision 1.16 1999/02/28 19:44:16 ivan -# constructors s/create/new/ pointed out by "Bao C. Ha" -# -# Revision 1.15 1999/02/27 21:06:21 ivan -# cust_main.paydate should be varchar(10), not @date_type ; problem reported -# by Ben Leibig -# -# Revision 1.14 1999/02/07 09:59:14 ivan -# more mod_perl fixes, and bugfixes Peter Wemm sent via email -# -# Revision 1.13 1999/02/04 06:09:23 ivan -# add AU provences -# -# Revision 1.12 1999/02/03 10:42:27 ivan -# *** empty log message *** -# -# Revision 1.11 1999/01/17 03:11:52 ivan -# remove preliminary completehost changes -# -# Revision 1.10 1998/12/16 06:05:38 ivan -# add table cust_main_invoice -# -# Revision 1.9 1998/12/15 04:36:29 ivan -# s/croak/die/; #oops -# -# Revision 1.8 1998/12/15 04:33:27 ivan -# dies if it isn't running as the freeside user -# -# Revision 1.7 1998/11/18 09:01:31 ivan -# i18n! i18n! -# -# Revision 1.6 1998/11/15 13:18:02 ivan -# remove debugging -# -# Revision 1.5 1998/11/15 09:43:03 ivan -# update for new config file syntax, new adminsuidsetup -# -# Revision 1.4 1998/10/22 15:51:23 ivan -# also varchar with no length specified - postgresql fix broke mysql. -# -# Revision 1.3 1998/10/22 15:46:28 ivan -# now smallint is illegal, so remove that too. -# +# $Id: fs-setup,v 1.60 2001-10-02 16:00:30 jeff Exp $ #to delay loading dbdef until we're ready BEGIN { $FS::Record::setup_hack = 1; } @@ -155,9 +15,13 @@ use DBIx::DBSchema::ColGroup::Index; use FS::UID qw(adminsuidsetup datasrc checkeuid getsecrets); use FS::Record; use FS::cust_main_county; +use FS::raddb; die "Not running uid freeside!" unless checkeuid(); +my %attrib2db = + map { lc($FS::raddb::attrib{$_}) => $_ } keys %FS::raddb::attrib; + my $user = shift or die &usage; getsecrets($user); @@ -175,13 +39,15 @@ reply attribute Framed-IP-Address for each user. You can specify additional check and reply attributes. First enter any additional RADIUS check attributes you need to track for each user, separated by whitespace. END -my @check_attributes = map { s/\-/_/g; $_; } split(" ",&getvalue); +my @check_attributes = map { $attrib2db{lc($_)} or die "unknown attribute $_"; } + split(" ",&getvalue); print "\n\n", <table('cust_main'); +my $cust_main = $dbdef->table('cust_main'); +unless ($ship) { #remove ship_ from cust_main $cust_main->delcolumn($_) foreach ( grep /^ship_/, $cust_main->columns ); +} else { #add indices on ship_last and ship_company + push @{$cust_main->index->lol_ref}, ( ['ship_last'], ['ship_company'] ) } #add radius attributes to svc_acct @@ -261,32 +128,32 @@ foreach $attribute (@check_attributes) { )); } -#make part_svc table (but now as object) - -my($part_svc)=$dbdef->table('part_svc'); - -#because of svc_acct_pop -#foreach (grep /^svc_/, $dbdef->tables) { -#foreach (qw(svc_acct svc_acct_sm svc_charge svc_domain svc_wo)) { -foreach (qw(svc_acct svc_acct_sm svc_domain svc_www)) { - my($table)=$dbdef->table($_); - my($col); - foreach $col ( $table->columns ) { - next if $col =~ /^svcnum$/; - $part_svc->addcolumn( new DBIx::DBSchema::Column ( - $table->name. '__' . $table->column($col)->name, - 'varchar', #$table->column($col)->type, - 'NULL', - $char_d, #$table->column($col)->length, - )); - $part_svc->addcolumn ( new DBIx::DBSchema::Column ( - $table->name. '__'. $table->column($col)->name . "_flag", - 'char', - 'NULL', - 1, - )); - } -} +##make part_svc table (but now as object) +# +#my($part_svc)=$dbdef->table('part_svc'); +# +##because of svc_acct_pop +##foreach (grep /^svc_/, $dbdef->tables) { +##foreach (qw(svc_acct svc_acct_sm svc_charge svc_domain svc_wo)) { +#foreach (qw(svc_acct svc_domain svc_forward svc_www)) { +# my($table)=$dbdef->table($_); +# my($col); +# foreach $col ( $table->columns ) { +# next if $col =~ /^svcnum$/; +# $part_svc->addcolumn( new DBIx::DBSchema::Column ( +# $table->name. '__' . $table->column($col)->name, +# 'varchar', #$table->column($col)->type, +# 'NULL', +# $char_d, #$table->column($col)->length, +# )); +# $part_svc->addcolumn ( new DBIx::DBSchema::Column ( +# $table->name. '__'. $table->column($col)->name . "_flag", +# 'char', +# 'NULL', +# 1, +# )); +# } +#} #important $dbdef->save($dbdef_file); @@ -456,6 +323,19 @@ sub tables_hash_hack { 'index' => [ ['custnum'] ], }, + 'cust_credit_bill' => { + 'columns' => [ + 'creditbillnum', 'int', '', '', + 'crednum', 'int', '', '', + 'invnum', 'int', '', '', + '_date', @date_type, + 'amount', @money_type, + ], + 'primary_key' => 'creditbillnum', + 'unique' => [ [] ], + 'index' => [ ['crednum'], ['invnum'] ], + }, + 'cust_main' => { 'columns' => [ 'custnum', 'int', '', '', @@ -498,11 +378,13 @@ sub tables_hash_hack { 'tax', 'char', 'NULL', 1, 'otaker', 'varchar', '', 8, 'refnum', 'int', '', '', + 'referral_custnum', 'int', 'NULL', '', + 'comments', 'varchar', 'NULL', '', ], 'primary_key' => 'custnum', 'unique' => [ [] ], #'index' => [ ['last'], ['company'] ], - 'index' => [ ['last'], ], + 'index' => [ ['last'], [ 'company' ], [ 'referral_custnum' ] ], }, 'cust_main_invoice' => { @@ -535,7 +417,8 @@ sub tables_hash_hack { 'cust_pay' => { 'columns' => [ 'paynum', 'int', '', '', - 'invnum', 'int', '', '', + #now cust_bill_pay #'invnum', 'int', '', '', + 'custnum', 'int', '', '', 'paid', @money_type, '_date', @date_type, 'payby', 'char', '', 4, # CARD/BILL/COMP, should be index into @@ -545,12 +428,26 @@ sub tables_hash_hack { ], 'primary_key' => 'paynum', 'unique' => [ [] ], - 'index' => [ ['invnum'] ], + 'index' => [ [] ], + }, + + 'cust_bill_pay' => { + 'columns' => [ + 'billpaynum', 'int', '', '', + 'invnum', 'int', '', '', + 'paynum', 'int', '', '', + 'amount', @money_type, + '_date', @date_type + ], + 'primary_key' => 'billpaynum', + 'unique' => [ [] ], + 'index' => [ [ 'paynum', 'invnum' ] ], }, 'cust_pay_batch' => { #what's this used for again? list of customers #in current CARD batch? (necessarily CARD?) 'columns' => [ + 'paybatchnum', 'int', '', '', 'invnum', 'int', '', '', 'custnum', 'int', '', '', 'last', 'varchar', '', $char_d, @@ -568,7 +465,7 @@ sub tables_hash_hack { 'payname', 'varchar', 'NULL', $char_d, 'amount', @money_type, ], - 'primary_key' => '', + 'primary_key' => 'paybatchnum', 'unique' => [ [] ], 'index' => [ ['invnum'], ['custnum'] ], }, @@ -593,7 +490,8 @@ sub tables_hash_hack { 'cust_refund' => { 'columns' => [ 'refundnum', 'int', '', '', - 'crednum', 'int', '', '', + #now cust_credit_refund #'crednum', 'int', '', '', + 'custnum', 'int', '', '', '_date', @date_type, 'refund', @money_type, 'otaker', 'varchar', '', 8, @@ -601,12 +499,27 @@ sub tables_hash_hack { 'payby', 'char', '', 4, # CARD/BILL/COMP, should be index # into payment type table. 'payinfo', 'varchar', 'NULL', 16, #see cust_main above + 'paybatch', 'varchar', 'NULL', $char_d, ], 'primary_key' => 'refundnum', 'unique' => [ [] ], - 'index' => [ ['crednum'] ], + 'index' => [ [] ], }, + 'cust_credit_refund' => { + 'columns' => [ + 'creditrefundnum', 'int', '', '', + 'crednum', 'int', '', '', + 'refundnum', 'int', '', '', + 'amount', @money_type, + '_date', @date_type + ], + 'primary_key' => 'creditrefundnum', + 'unique' => [ [] ], + 'index' => [ [ 'crednum', 'refundnum' ] ], + }, + + 'cust_svc' => { 'columns' => [ 'svcnum', 'int', '', '', @@ -674,6 +587,19 @@ sub tables_hash_hack { 'index' => [ [] ], }, + 'part_svc_column' => { + 'columns' => [ + 'columnnum', 'int', '', '', + 'svcpart', 'int', '', '', + 'columnname', 'varchar', '', 64, + 'columnvalue', 'varchar', 'NULL', $char_d, + 'columnflag', 'char', 'NULL', 1, + ], + 'primary_key' => 'columnnum', + 'unique' => [ [ 'svcpart', 'columnname' ] ], + 'index' => [ [ 'svcpart' ] ], + }, + #(this should be renamed to part_pop) 'svc_acct_pop' => { 'columns' => [ @@ -686,7 +612,21 @@ sub tables_hash_hack { ], 'primary_key' => 'popnum', 'unique' => [ [] ], - 'index' => [ [] ], + 'index' => [ [ 'state' ] ], + }, + + 'part_pop_local' => { + 'columns' => [ + 'localnum', 'int', '', '', + 'popnum', 'int', '', '', + 'city', 'varchar', 'NULL', $char_d, + 'state', 'char', 'NULL', 2, + 'npa', 'char', '', 3, + 'nxx', 'char', '', 3, + ], + 'primary_key' => 'popnum', + 'unique' => [ [] ], + 'index' => [ [ 'npa', 'nxx' ] ], }, 'svc_acct' => { @@ -703,23 +643,24 @@ sub tables_hash_hack { 'quota', 'varchar', 'NULL', $char_d, 'slipip', 'varchar', 'NULL', 15, #four TINYINTs, bah. 'seconds', 'int', 'NULL', '', #uhhhh + 'domsvc', 'int', '', '', ], 'primary_key' => 'svcnum', - 'unique' => [ [] ], - 'index' => [ ['username'] ], + 'unique' => [ [ 'username', 'domsvc' ] ], + 'index' => [ ['username'], ['domsvc'] ], }, - 'svc_acct_sm' => { - 'columns' => [ - 'svcnum', 'int', '', '', - 'domsvc', 'int', '', '', - 'domuid', 'int', '', '', - 'domuser', 'varchar', '', $char_d, - ], - 'primary_key' => 'svcnum', - 'unique' => [ [] ], - 'index' => [ ['domsvc'], ['domuid'] ], - }, +# 'svc_acct_sm' => { +# 'columns' => [ +# 'svcnum', 'int', '', '', +# 'domsvc', 'int', '', '', +# 'domuid', 'int', '', '', +# 'domuser', 'varchar', '', $char_d, +# ], +# 'primary_key' => 'svcnum', +# 'unique' => [ [] ], +# 'index' => [ ['domsvc'], ['domuid'] ], +# }, #'svc_charge' => { # 'columns' => [ @@ -735,6 +676,7 @@ sub tables_hash_hack { 'columns' => [ 'svcnum', 'int', '', '', 'domain', 'varchar', '', $char_d, + 'catchall', 'int', 'NULL', '', ], 'primary_key' => 'svcnum', 'unique' => [ ['domain'] ], @@ -755,6 +697,18 @@ sub tables_hash_hack { 'index' => [ ['svcnum'] ], }, + 'svc_forward' => { + 'columns' => [ + 'svcnum', 'int', '', '', + 'srcsvc', 'int', '', '', + 'dstsvc', 'int', '', '', + 'dst', 'varchar', 'NULL', $char_d, + ], + 'primary_key' => 'svcnum', + 'unique' => [ [] ], + 'index' => [ ['srcsvc'], ['dstsvc'] ], + }, + 'svc_www' => { 'columns' => [ 'svcnum', 'int', '', '', @@ -829,6 +783,28 @@ sub tables_hash_hack { 'index' => [ [ 'portnum' ] ], }, + 'queue' => { + 'columns' => [ + 'jobnum', 'int', '', '', + 'job', 'varchar', '', '', + '_date', 'int', '', '', + 'status', 'varchar', '', $char_d, + ], + 'primary_key' => 'jobnum', + 'unique' => [], + 'index' => [], + }, + + 'queue_arg' => { + 'columns' => [ + 'argnum', 'int', '', '', + 'jobnum', 'int', '', '', + 'arg', 'varchar', 'NULL', '', + ], + 'primary_key' => 'argnum', + 'unique' => [], + 'index' => [ [ 'jobnum' ] ], + }, ); %tables;