[freeside-commits] branch master updated. f0264bb8437b5ea5775c99a85efefc3e535b1822

Ivan ivan at 420.am
Tue Mar 5 04:09:56 PST 2013


The branch, master has been updated
       via  f0264bb8437b5ea5775c99a85efefc3e535b1822 (commit)
      from  0e3d3f5ac1f1169a92ac41c063df85f0cabf441d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit f0264bb8437b5ea5775c99a85efefc3e535b1822
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Tue Mar 5 04:09:53 2013 -0800

    add -a and -k options to cust_main-bulk_change script, RT#21728

diff --git a/bin/cust_main-bulk_change b/bin/cust_main-bulk_change
index 02931ab..32a6d7b 100755
--- a/bin/cust_main-bulk_change
+++ b/bin/cust_main-bulk_change
@@ -1,14 +1,15 @@
 #!/usr/bin/perl
 
 use strict;
-use vars qw( $opt_p $opt_t );
+use vars qw( $opt_a $opt_p $opt_t $opt_k );
 use Getopt::Std;
 use FS::UID qw(adminsuidsetup);
-use FS::Record qw(qsearchs);
+use FS::Record qw(qsearch qsearchs);
 use FS::cust_main;
 use FS::cust_tag;
+use FS::cust_pkg;
 
-getopts('p:t:');
+getopts('a:p:t:k:');
 
 my $user = shift or &usage;
 adminsuidsetup $user;
@@ -39,17 +40,34 @@ while (<STDIN>) {
     die "$error\n" if $error;
   }
 
-  if ( $opt_p ) {
-    $cust_main->payby($opt_p);
+  if ( $opt_p || $opt_a ) {
+    $cust_main->agentnum($opt_a) if $opt_a;
+    $cust_main->payby($opt_p)    if $opt_p;
 
     my $error = $cust_main->replace;
     die "$error\n" if $error;
   }
 
+  if ( $opt_k ) {
+    foreach my $k (split(/\s*,\s*/, $opt_k)) {
+      my($old, $new) = split(/\s*:\s*/, $k);
+      foreach my $cust_pkg ( qsearch('cust_pkg', {
+                                       'custnum' => $cust_main->custnum,
+                                       'pkgpart' => $old,
+                                    })
+                           )
+      {
+        $cust_pkg->pkgpart($new);
+        my $error = $cust_pkg->replace;
+        die "$error\n" if $error;
+      }
+    }
+  }
+
 }
 
 sub usage {
-  die "usage: cust_main-bulk_change [ -p NEW_PAYBY ] [ -t tagnum ] employee_username <custnums.txt\n";
+  die "usage: cust_main-bulk_change [ -a agentnum ] [ -p NEW_PAYBY ] [ -t tagnum ] [ -k old_pkgpart:new_pkgpart,... ] employee_username <custnums.txt\n";
 }
 
 =head1 NAME
@@ -58,16 +76,20 @@ cust_main-bulk_change
 
 =head1 SYNOPSIS
 
-  cust_main-bulk_change [ -p NEW_PAYBY ] [ -t tagnum ] username <custnums.txt
+  cust_main-bulk_change [ -a agentnum ] [ -p NEW_PAYBY ] [ -t tagnum ] [ -k old_pkgpart:new_pkgpart,... ] username <custnums.txt
 
 =head1 DESCRIPTION
 
 Command-line tool to make bulk changes to a group of customers.
 
+-a: new agentnum
+
 -p: new payby, for example, I<CARD> or I<DCRD>
 
 -t: tagnum to add if not present
 
+-k: old_pkgpart:new_pkgpart, for example, I<5:4>.  Multiple entries can be comma-separated.
+
 user: Employee username
 
 =head1 BUGS

-----------------------------------------------------------------------

Summary of changes:
 bin/cust_main-bulk_change |   36 +++++++++++++++++++++++++++++-------
 1 files changed, 29 insertions(+), 7 deletions(-)




More information about the freeside-commits mailing list