From b3fde003816e1c3035af95ab6f58cba807a046e9 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 25 Feb 2007 03:08:10 +0000 Subject: add selfservice-ignore_quantity flag --- FS/bin/freeside-selfservice-server | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'FS/bin') diff --git a/FS/bin/freeside-selfservice-server b/FS/bin/freeside-selfservice-server index 187bc1469..205f1c3ab 100644 --- a/FS/bin/freeside-selfservice-server +++ b/FS/bin/freeside-selfservice-server @@ -16,8 +16,7 @@ use FS::UID qw(adminsuidsetup forksuidsetup); use FS::ClientAPI; use FS::Conf; -use FS::cust_bill; -use FS::cust_pkg; +use FS::cust_svc; $FREESIDE_LOG = "%%%FREESIDE_LOG%%%"; $FREESIDE_LOCK = "%%%FREESIDE_LOCK%%%"; @@ -58,6 +57,10 @@ logfile("$FREESIDE_LOG/selfservice.$machine.log"); daemonize2(); my $conf = new FS::Conf; +if ( $conf->exists('selfservice-ignore_quantity') ) { + $FS::cust_svc::ignore_quantity = 1; + $FS::cust_svc::ignore_quantity = 1; #now it is used twice. +} my $clientd = "/usr/local/sbin/freeside-selfservice-clientd"; #better name? -- cgit v1.2.1 From fbfffdabe931d704aae420984058e61dc4196b01 Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 27 Feb 2007 01:51:52 +0000 Subject: config goes in database --- FS/bin/freeside-init-config | 92 +++++++++++++++++++++++++++++++++++++++++++++ FS/bin/freeside-setup | 27 +++++++++++-- FS/bin/freeside-upgrade | 8 +++- 3 files changed, 122 insertions(+), 5 deletions(-) create mode 100755 FS/bin/freeside-init-config (limited to 'FS/bin') diff --git a/FS/bin/freeside-init-config b/FS/bin/freeside-init-config new file mode 100755 index 000000000..a186d1a85 --- /dev/null +++ b/FS/bin/freeside-init-config @@ -0,0 +1,92 @@ +#!/usr/bin/perl -Tw + +use strict; +use vars qw($opt_u $opt_f $opt_v); +use Getopt::Std; +use IO::File; +use FS::UID qw(adminsuidsetup checkeuid dbh); +use FS::CurrentUser; +use FS::Record qw(qsearch); + + +die "Not running uid freeside!" unless checkeuid(); + +getopts("u:vf"); +my $dir = shift or die &usage; + +$FS::CurrentUser::upgrade_hack = 1; +adminsuidsetup $opt_u; #$user; + +$|=1; + +my $conf = new FS::Conf; +if (!scalar(qsearch('conf', {})) || $opt_f) { + + foreach my $item ( $conf->config_items() ) { + insert_config_item($item,$dir); + } + + # ugly pseudo false laziness with Conf.pm + foreach my $item ( map { my $basename = basename($_); + $basename =~ /^(.*)$/; + $basename = $1; + new FS::ConfItem { + 'key' => $basename, + 'type' => '', + } + } glob($dir. '/invoice_template_*'), + glob($dir. '/invoice_html_*'), + glob($dir. '/invoice_htmlnotes_*'), + glob($dir. '/invoice_latex_*'), + glob($dir. '/invoice_latexnotes_*') + ) { + + insert_config_item($item,$dir); + + } + + foreach my $item ( map { my $basename = basename($_); + $basename =~ /^(.*)$/; + $basename = $1; + new FS::ConfItem { + 'key' => $basename, + 'type' => 'binary', + } + } glob($dir. '/logo_*.png'), + glob($dir. '/logo_*.eps') + ) { + + insert_config_item($item,$dir); + + } + +} + +warn "Freeside database initialized - committing transaction\n" if $opt_v; + +dbh->commit or die dbh->errstr; +dbh->disconnect or die dbh->errstr; + +warn "Configuration initialization committed successfully\n" if $opt_v; + +sub insert_config_item { + local $/; + my ($item,$dir) = @_; + my $key = $item->key; + if (-e "$dir/$key") { + warn "Inserting $key\n" if $opt_v; + my $value = readline(new IO::File "$dir/$key"); + if ($item->type eq 'binary'){ + $conf->set_binary($key, $value); + }else{ + $conf->set($key, $value); + } + } +} + +sub usage { + die "Usage:\n freeside-init-config directory [ -v ] [ -f ]\n" + # [ -u user ] for devel/multi-db installs +} + +1; diff --git a/FS/bin/freeside-setup b/FS/bin/freeside-setup index ddc210f50..bce5a0aeb 100755 --- a/FS/bin/freeside-setup +++ b/FS/bin/freeside-setup @@ -19,12 +19,15 @@ die "Not running uid freeside!" unless checkeuid(); # map { lc($FS::raddb::attrib{$_}) => $_ } keys %FS::raddb::attrib; getopts("u:vd:"); -#my $user = shift or die &usage; +my $config_dir = shift || 'conf' ; +$config_dir =~ /^([\w.:=]+)$/ + or die "unacceptable configuration directory name"; +$config_dir = $1; -getsecrets($opt_u); #$user); +getsecrets($opt_u); #needs to match FS::Record -my($dbdef_file) = "%%%FREESIDE_CONF%%%/dbdef.". datasrc; +my($dbdef_file) = "/usr/local/etc/newtest/dbdef.". datasrc; ### @@ -88,7 +91,9 @@ $dbdef->save($dbdef_file); ### $FS::CurrentUser::upgrade_hack = 1; +$FS::UID::callback_hack = 1; my $dbh = adminsuidsetup $opt_u; #$user; +$FS::UID::callback_hack = 0; #create tables $|=1; @@ -105,6 +110,20 @@ dbdef_create($dbh, $dbdef_file); delete $FS::Schema::dbdef_cache{$dbdef_file}; #force an actual reload reload_dbdef($dbdef_file); +warn "Freeside schema initialized - commiting transaction\n" if $opt_v; + +$dbh->commit or die $dbh->errstr; +$dbh->disconnect or die $dbh->errstr; + +warn "Database schema committed successfully\n" if $opt_v; + +my $init_config = "freeside-init-config"; +$init_config .= " -v" if $opt_v; +$init_config .= " -u $opt_u" if $opt_u; +$init_config .= " $config_dir"; +system "$init_config" ; + +$dbh = adminsuidsetup $opt_u; create_initial_data('domain' => $opt_d); warn "Freeside database initialized - commiting transaction\n" if $opt_v; @@ -121,7 +140,7 @@ sub dbdef_create { # reverse engineer the schema from the DB and save to file } sub usage { - die "Usage:\n freeside-setup -d domain.name [ -v ]\n" + die "Usage:\n freeside-setup -d domain.name [ -v ] [ config/dir ]\n" # [ -u user ] for devel/multi-db installs } diff --git a/FS/bin/freeside-upgrade b/FS/bin/freeside-upgrade index 3a4e4f8e3..5c646fec2 100755 --- a/FS/bin/freeside-upgrade +++ b/FS/bin/freeside-upgrade @@ -46,6 +46,12 @@ dbdef_create($dbh, $dbdef_file); $dbh->disconnect or die $dbh->errstr; +unless ( $DRY_RUN ) { + my $init_config = "freeside-init-config -u $user "; + $init_config .= "%%%FREESIDE_CONF%%%/conf.". datasrc; + system "$init_config" ; +} + ### sub dbdef_create { # reverse engineer the schema from the DB and save to file @@ -64,7 +70,7 @@ freeside-upgrade - Upgrades database schema for new freeside verisons. =head1 SYNOPSIS - freeside-adduser [ -d ] [ -q | -v ] + freeside-upgrade [ -d ] [ -q | -v ] =head1 DESCRIPTION -- cgit v1.2.1 From 6435a77782ea506c5c140136dac1759a4e9747e3 Mon Sep 17 00:00:00 2001 From: jeff Date: Tue, 27 Feb 2007 21:24:45 +0000 Subject: oops - inappropriate localization was committed --- FS/bin/freeside-setup | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'FS/bin') diff --git a/FS/bin/freeside-setup b/FS/bin/freeside-setup index bce5a0aeb..ed737b395 100755 --- a/FS/bin/freeside-setup +++ b/FS/bin/freeside-setup @@ -27,7 +27,7 @@ $config_dir = $1; getsecrets($opt_u); #needs to match FS::Record -my($dbdef_file) = "/usr/local/etc/newtest/dbdef.". datasrc; +my($dbdef_file) = "%%%FREESIDE_CONF%%%/dbdef.". datasrc; ### -- cgit v1.2.1 From 16a91fd700e3c3e5ec051d2c3692275f9389aab4 Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 1 Mar 2007 05:13:13 +0000 Subject: dangling cust_credit_refund not allowed --- FS/bin/freeside-prune-applications | 63 ++++++++++++++++++++++++++++++++++++++ FS/bin/freeside-upgrade | 8 +++++ 2 files changed, 71 insertions(+) create mode 100755 FS/bin/freeside-prune-applications (limited to 'FS/bin') diff --git a/FS/bin/freeside-prune-applications b/FS/bin/freeside-prune-applications new file mode 100755 index 000000000..b459da55e --- /dev/null +++ b/FS/bin/freeside-prune-applications @@ -0,0 +1,63 @@ +#!/usr/bin/perl -w + +use strict; +use vars qw($opt_d $opt_q $opt_v); # $opt_n instead of $opt_d? +use vars qw($DEBUG $DRY_RUN); +use Getopt::Std; +use FS::UID qw(adminsuidsetup checkeuid); +use FS::Misc qw(prune_applications); + +die "Not running uid freeside!" unless checkeuid(); + +getopts("dq"); + +$DEBUG = !$opt_q; +#$DEBUG = $opt_v; + +$DRY_RUN = $opt_d; + +my $user = shift or die &usage; +my $dbh = adminsuidsetup($user); + +my $hashref = {}; + +$hashref->{dry_run} = 1 if $DRY_RUN; +$hashref->{debug} = 1 if $DEBUG; + +print join "\n", prune_applications($hashref); +print "\n" if $DRY_RUN; + +$dbh->commit or die $dbh->errstr; + +### + +sub usage { + die "Usage:\n freeside-prune-applications [ -d ] [ -q | -v ] user\n"; +} + +=head1 NAME + +freeside-prune-applications - Removes stray applications of credit, payment to + bills, refunds, etc. + +=head1 SYNOPSIS + + freeside-prune-applications [ -d ] [ -q | -v ] + +=head1 DESCRIPTION + +Reads your existing database schema and updates it to match the current schema, +adding any columns or tables necessary. + + [ -d ]: Dry run; display affected records (to STDOUT) only, but do not + remove them. + + [ -q ]: Run quietly. This may become the default at some point. + + [ -v ]: Run verbosely, sending debugging information to STDERR. This is the + current default. + +=head1 SEE ALSO + +=cut + diff --git a/FS/bin/freeside-upgrade b/FS/bin/freeside-upgrade index 5c646fec2..db58c117c 100755 --- a/FS/bin/freeside-upgrade +++ b/FS/bin/freeside-upgrade @@ -8,6 +8,7 @@ use DBIx::DBSchema 0.31; use FS::UID qw(adminsuidsetup checkeuid datasrc ); #getsecrets); use FS::CurrentUser; use FS::Schema qw( dbdef dbdef_dist reload_dbdef ); +use FS::Misc qw(prune_applications); die "Not running uid freeside!" unless checkeuid(); @@ -40,6 +41,13 @@ if ( $DRY_RUN ) { dbdef->update_schema( dbdef_dist, $dbh ); } +my $hashref = {}; +$hashref->{dry_run} = 1 if $DRY_RUN; +$hashref->{debug} = 1 if $DEBUG; +print join "\n", prune_applications($hashref); +print "\n" if $DRY_RUN; + + $dbh->commit or die $dbh->errstr; dbdef_create($dbh, $dbdef_file); -- cgit v1.2.1