summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/23commit2
-rwxr-xr-xbin/cust_pkg-revert118
-rwxr-xr-xbin/part_pkg-bulk_change72
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;
+