diff options
author | Ivan Kohler <ivan@freeside.biz> | 2021-08-09 12:49:58 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2021-08-09 12:49:58 -0700 |
commit | 24bb5c61843c8b58bd627674368b56b0bf61875e (patch) | |
tree | 5164c5645db6d86e3f1a3e5268510cb54bad1d66 | |
parent | 73efa3f9ae88599d1c537cb8d050834d0bfcedba (diff) |
bulk change GID, RT#86006
-rwxr-xr-x | FS/bin/freeside-svc_acct-bulk_change | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/FS/bin/freeside-svc_acct-bulk_change b/FS/bin/freeside-svc_acct-bulk_change new file mode 100755 index 0000000..c10d2c1 --- /dev/null +++ b/FS/bin/freeside-svc_acct-bulk_change @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w + +use strict; +use vars qw( $opt_p $opt_g ); +use Getopt::Std; +use FS::UID qw(adminsuidsetup); +use FS::Record qw( qsearch ); #qsearchs ); +use FS::cust_svc; + +my $user = shift or die &usage; +adminsuidsetup $user; + +getopts('p:g:'); + +my @svc_x = (); +if ( $opt_p ) { + push @svc_x, map { $_->svc_acct } qsearch('cust_svc', { svcpart=>$opt_p } ); + die "no services with svcpart $opt_p found\n" unless @svc_x; +} else { + die &usage; +} + +foreach my $svc_x ( @svc_x ) { + next if $opt_g && $svc_x->gid == $opt_g; + $svc_x->gid($opt_g) if $opt_g; + my $error = $svc_x->replace; + die $error if $error; +} + +sub usage { + return "Usage:\n\n freeside-svc_acct-bulk_change user -p svcpart -g gid\n"; +} + +=head1 NAME + +freeside-svc_acct-bulk_change - Command line tool to make bulk changes to svc_acct (account) records + +=head1 SYNOPSIS + + freeside-svc_acct-bulk_change user -p svcpart -g gid + +=head1 DESCRIPTION + + For the servcies of the given svcpart, changes the GID as specified. + + Note: Unless you are changing the GID to match an new, fixed value in the + service definition, you will need to enable the B<svc_acct-edit_gid> + configuration setting prior to running this script. + +=head1 SEE ALSO + +L<FS::svc_acct> + +=cut + +1; |