diff options
Diffstat (limited to 'FS/bin/freeside-setinvoice')
| -rw-r--r-- | FS/bin/freeside-setinvoice | 42 | 
1 files changed, 42 insertions, 0 deletions
| diff --git a/FS/bin/freeside-setinvoice b/FS/bin/freeside-setinvoice new file mode 100644 index 000000000..708e2fa30 --- /dev/null +++ b/FS/bin/freeside-setinvoice @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +use strict; +use FS::UID qw(adminsuidsetup); +use FS::Conf; +use FS::Record qw(qsearch qsearchs); +use FS::cust_main; +use FS::svc_acct; + +&untaint_argv;  #what it sounds like  (eww) +my $user = shift or die &usage; + +adminsuidsetup $user; + +foreach my $cust_main ( +   grep { ! scalar($_->invoicing_list) } +     qsearch( 'cust_main', {} ) +) { +  my @dest; +  my @cust_pkg = $cust_main->ncancelled_pkgs; +  foreach my $cust_pkg ( @cust_pkg ) { +    foreach my $cust_svc ( $cust_pkg->cust_svc ) { +      my $svc_acct = qsearchs( 'svc_acct', { 'svcnum' => $cust_svc->svcnum } ); +      push @dest, $svc_acct->svcnum if $svc_acct; +    } +  } +  push @dest, 'POST' unless @dest; +  $cust_main->invoicing_list(\@dest); +} + +sub untaint_argv { +  foreach $_ ( $[ .. $#ARGV ) { #untaint @ARGV +    $ARGV[$_] =~ /^(.*)$/ || die "Illegal arguement \"$ARGV[$_]\""; +    $ARGV[$_]=$1; +  } +} + +sub usage { +  die "Usage:\n\n  freeside-setinvoice user\n"; +} + + | 
