#!/usr/bin/perl -Tw
#
-# $Id: fs-setup,v 1.33 2001-02-03 14:03:50 ivan Exp $
+# $Id: fs-setup,v 1.39 2001-07-30 07:42:39 ivan Exp $
#
# ivan@sisd.com 97-nov-8,9
#
# fix radius attributes ivan@sisd.com 98-sep-27
#
# $Log: fs-setup,v $
-# Revision 1.33 2001-02-03 14:03:50 ivan
+# 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
use strict;
use DBI;
-use FS::dbdef;
+use DBIx::DBSchema 0.18;
+use DBIx::DBSchema::Table;
+use DBIx::DBSchema::Column;
+use DBIx::DBSchema::ColGroup::Unique;
+use DBIx::DBSchema::ColGroup::Index;
use FS::UID qw(adminsuidsetup datasrc checkeuid getsecrets);
use FS::Record;
use FS::cust_main_county;
END
my @attributes = map { s/\-/_/g; $_; } split(" ",&getvalue);
+print "\n\n", <<END, ":";
+Do you wish to enable the tracking of a second, separate shipping/service
+address?
+END
+my $ship = &_yesno;
+
sub getvalue {
my($x)=scalar(<STDIN>);
chop $x;
$x;
}
+sub _yesno {
+ print " [y/N]:";
+ my $x = scalar(<STDIN>);
+ $x =~ /^y/i;
+}
+
###
my($char_d) = 80; #default maxlength for text fields
my(%tables)=&tables_hash_hack;
#turn it into objects
-my($dbdef) = new FS::dbdef ( map {
+my($dbdef) = new DBIx::DBSchema ( map {
my(@columns);
while (@{$tables{$_}{'columns'}}) {
my($name,$type,$null,$length)=splice @{$tables{$_}{'columns'}}, 0, 4;
- push @columns, new FS::dbdef_column ( $name,$type,$null,$length );
+ push @columns, new DBIx::DBSchema::Column ( $name,$type,$null,$length );
}
- FS::dbdef_table->new(
+ DBIx::DBSchema::Table->new(
$_,
$tables{$_}{'primary_key'},
- #FS::dbdef_unique->new(@{$tables{$_}{'unique'}}),
- #FS::dbdef_index->new(@{$tables{$_}{'index'}}),
- FS::dbdef_unique->new($tables{$_}{'unique'}),
- FS::dbdef_index->new($tables{$_}{'index'}),
+ DBIx::DBSchema::ColGroup::Unique->new($tables{$_}{'unique'}),
+ DBIx::DBSchema::ColGroup::Index->new($tables{$_}{'index'}),
@columns,
);
} (keys %tables) );
+#remove ship_ from cust_main
+unless ($ship) {
+ my $cust_main = $dbdef->table('cust_main');
+ $cust_main->delcolumn($_) foreach ( grep /^ship_/, $cust_main->columns );
+}
+
#add radius attributes to svc_acct
my($svc_acct)=$dbdef->table('svc_acct');
my($attribute);
foreach $attribute (@attributes) {
- $svc_acct->addcolumn ( new FS::dbdef_column (
+ $svc_acct->addcolumn ( new DBIx::DBSchema::Column (
'radius_'. $attribute,
'varchar',
'NULL',
}
foreach $attribute (@check_attributes) {
- $svc_acct->addcolumn( new FS::dbdef_column (
+ $svc_acct->addcolumn( new DBIx::DBSchema::Column (
'rc_'. $attribute,
'varchar',
'NULL',
my($col);
foreach $col ( $table->columns ) {
next if $col =~ /^svcnum$/;
- $part_svc->addcolumn( new FS::dbdef_column (
+ $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 FS::dbdef_column (
+ $part_svc->addcolumn ( new DBIx::DBSchema::Column (
$table->name. '__'. $table->column($col)->name . "_flag",
'char',
'NULL',
#create tables
$|=1;
-my($table);
-foreach ($dbdef->tables) {
- my($table)=$dbdef->table($_);
- print "Creating $_...";
-
- my($statement);
-
- #create table
- foreach $statement ($table->sql_create_table(datasrc)) {
- #print $statement, "\n";
- $dbh->do( $statement )
- or die "CREATE error: ",$dbh->errstr, "\ndoing statement: $statement";
- }
-
- print "\n";
+my @sql = $dbdef->sql($dbh);
+foreach my $statement ( $dbdef->sql($dbh) ) {
+ $dbh->do( $statement )
+ or die "CREATE error: ",$dbh->errstr, "\ndoing statement: $statement";
}
#not really sample data (and shouldn't default to US)
$dbh->disconnect or die $dbh->errstr;
+print "Freeside database initialized sucessfully\n";
+
sub usage {
die "Usage:\n fs-setup user\n";
}
'custnum', 'int', '', '',
'_date', @date_type,
'charged', @money_type,
- 'owed', @money_type,
'printed', 'int', '', '',
],
'primary_key' => 'invnum',
'custnum', 'int', '', '',
'_date', @date_type,
'amount', @money_type,
- 'credited', @money_type,
'otaker', 'varchar', '', 8,
- 'reason', 'varchar', '', 255,
+ 'reason', 'varchar', 'NULL', 255,
],
'primary_key' => 'crednum',
'unique' => [ [] ],
'daytime', 'varchar', 'NULL', 20,
'night', 'varchar', 'NULL', 20,
'fax', 'varchar', 'NULL', 12,
+ 'ship_last', 'varchar', 'NULL', $char_d,
+# 'ship_middle', 'varchar', 'NULL', $char_d,
+ 'ship_first', 'varchar', 'NULL', $char_d,
+ 'ship_company', 'varchar', 'NULL', $char_d,
+ 'ship_address1', 'varchar', 'NULL', $char_d,
+ 'ship_address2', 'varchar', 'NULL', $char_d,
+ 'ship_city', 'varchar', 'NULL', $char_d,
+ 'ship_county', 'varchar', 'NULL', $char_d,
+ 'ship_state', 'varchar', 'NULL', $char_d,
+ 'ship_zip', 'varchar', 'NULL', 10,
+ 'ship_country', 'char', 'NULL', 2,
+ 'ship_daytime', 'varchar', 'NULL', 20,
+ 'ship_night', 'varchar', 'NULL', 20,
+ 'ship_fax', 'varchar', 'NULL', 12,
'payby', 'char', '', 4,
'payinfo', 'varchar', 'NULL', 16,
#'paydate', @date_type,
'cust_svc' => {
'columns' => [
'svcnum', 'int', '', '',
- 'pkgnum', 'int', '', '',
+ 'pkgnum', 'int', 'NULL', '',
'svcpart', 'int', '', '',
],
'primary_key' => 'svcnum',