diff options
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/23commit | 2 | ||||
| -rwxr-xr-x | bin/cust_pkg-revert | 118 | ||||
| -rwxr-xr-x | bin/part_pkg-bulk_change | 72 |
3 files changed, 191 insertions, 1 deletions
diff --git a/bin/23commit b/bin/23commit index b7b0c1e57..d64459cf0 100755 --- a/bin/23commit +++ b/bin/23commit @@ -19,7 +19,7 @@ die "no files!" unless @ARGV; #print <<END; system join('', "( cd /home/$USER/freeside2.3/$prefix; git pull ) && ", - "git diff -u @ARGV | ( cd /home/$USER/freeside2.3/$prefix; patch ) ", + "git diff -u @ARGV | ( cd /home/$USER/freeside2.3/$prefix; patch -p1 ) ", " && ( ( git pull && git commit -m $desc @ARGV && git push ); ", "( cd /home/$USER/freeside2.3/$prefix; git commit -m $desc @ARGV && git push ) )" ); diff --git a/bin/cust_pkg-revert b/bin/cust_pkg-revert new file mode 100755 index 000000000..1a4d456f5 --- /dev/null +++ b/bin/cust_pkg-revert @@ -0,0 +1,118 @@ +#!/usr/bin/perl + +use strict; +use vars qw( $opt_d $opt_u $opt_r ); +use Getopt::Std; +use Date::Parse qw(str2time); +use FS::UID qw(adminsuidsetup dbh); +use FS::Record qw(qsearch qsearchs); +use FS::cust_pkg; +use FS::h_cust_pkg; + +getopts('d:u:r'); + +my $user = shift or &usage; +adminsuidsetup $user; + +my $sdate = str2time($opt_d); +my $edate = $sdate + 86399; + +my $oldAutoCommit = $FS::UID::AutoCommit; +local $FS::UID::AutoCommit = 0; +my $dbh = dbh; + +my $fuzz = 1; + +my $changed = 0; + +foreach my $h_cust_pkg ( + qsearch({ table => 'h_cust_pkg', + hashref => { history_user => $opt_u, + history_action => 'replace_new', + }, + extra_sql => ' AND history_date >= ? AND history_date <= ? ', + extra_param => [ [$sdate,'int'], [$edate,'int'] ], + #order_by => 'ORDER BY history_date asc', + }) +) { + my $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $h_cust_pkg->pkgnum } ); + next if $cust_pkg->get('cancel'); + + my($s, $e) = ($h_cust_pkg->history_date-$fuzz, $h_cust_pkg->history_date+$fuzz); + + my $old = qsearchs({ + table => 'h_cust_pkg', + hashref => { history_user => $opt_u, + history_action => 'replace_old', + pkgnum => $h_cust_pkg->pkgnum, + }, + extra_sql => ' AND history_date >= ? AND history_date <= ? ', + extra_param => [ [$s,'int'], [$e,'int'] ], + }); + + my $diff = $h_cust_pkg->get('bill') - $old->get('bill'); + if ( $diff < 0 ) { + warn "next bill date was decremented (not incremented) for pkgnum ". $cust_pkg->pkgnum. "; skipping\n"; + next; + } elsif ( $diff == 0 ) { + warn "next bill date was not changed for pkgnum ". $cust_pkg->pkgnum. "; skipping\n"; + next; + } + + $changed++; + + #if ( $opt_r ) { + my $days = ($diff / 86400); + print "decrementing next bill for pkgnum ". $cust_pkg->pkgnum. + " (custnum ". $cust_pkg->custnum. ") by $days days\n"; + #} + + $cust_pkg->set('bill', $cust_pkg->get('bill') - $diff ); + my $error = $cust_pkg->replace; + die $error if $error; + +} + +if ( $opt_r ) { + $dbh->rollback or die $dbh->errstr; #if $oldAutoCommit; +} else { + $dbh->commit or die $dbh->errstr; #if $oldAutoCommit; +} + +print "changed $changed packages\n"; + +sub usage { + die "usage: cust_pkg-revert -d date -u history_username [ -r ] employee_username\n"; +} + +=head1 NAME + +cust_pkg-revert + +=head1 SYNOPSIS + + cust_pkg-revert -d date -u history_username [ -r ] employee_username + +=head1 DESCRIPTION + +Command-line tool to revert customer package changes from a specific day and user. +Currently only incrementing the next bill date (cust_pkg.bill) is reverted. + +-d: Date of the changes to revert + +-u: Username of the changes to revert + +-r: dRy run + +employee_username + +=head1 BUGS + +=head1 SEE ALSO + +L<FS::part_pkg> + +=cut + +1; + diff --git a/bin/part_pkg-bulk_change b/bin/part_pkg-bulk_change new file mode 100755 index 000000000..64670debc --- /dev/null +++ b/bin/part_pkg-bulk_change @@ -0,0 +1,72 @@ +#!/usr/bin/perl + +use strict; +use vars qw( $opt_r $opt_o $opt_v ); +use Getopt::Std; +use FS::UID qw(adminsuidsetup); +use FS::Record qw(qsearch qsearchs); +use FS::part_pkg; +use FS::part_pkg_option; + +getopts('ro:v:'); + +my $user = shift or &usage; +adminsuidsetup $user; + +foreach my $part_pkg ( qsearch('part_pkg', {}) ) { + next if ! $part_pkg->freq && $opt_r; + + my %hash = ( + 'pkgpart' => $part_pkg->pkgpart, + 'optionname' => $opt_o, + ); + + my $part_pkg_option = qsearchs('part_pkg_option', \%hash); + + if ( $part_pkg_option ) { + next if $part_pkg_option->optionvalue eq $opt_v; + $part_pkg_option->optionvalue($opt_v); + my $error = $part_pkg_option->replace; + die $error if $error; + } else { + $part_pkg_option = new FS::part_pkg_option { %hash, 'optionvalue'=>$opt_v }; + my $error = $part_pkg_option->insert; + die $error if $error; + } + +} + +sub usage { + die "usage: part_pkg-bulk_change [ -r ] -o option_name -v option_value employee_username\n"; +} + +=head1 NAME + +cust_main-bulk_change + +=head1 SYNOPSIS + + part_pkg-bulk_change [ -r ] -o option_name -v option_value employee_username + +=head1 DESCRIPTION + +Command-line tool to change a set of package definitions. + +-r: recurring package definitions only + +-o: part_pkg_option optionname + +-v: part_pkg_option optionvalue + +employee_username + +=head1 BUGS + +=head1 SEE ALSO + +L<FS::part_pkg> + +=cut + +1; + |
