correctly disable/enable accounts @ CP
[freeside.git] / FS / bin / freeside-setinvoice
1 #!/usr/bin/perl
2
3 use strict;
4 use FS::UID qw(adminsuidsetup);
5 use FS::Conf;
6 use FS::Record qw(qsearch qsearchs);
7 use FS::cust_main;
8 use FS::svc_acct;
9
10 &untaint_argv;  #what it sounds like  (eww)
11 my $user = shift or die &usage;
12
13 adminsuidsetup $user;
14
15 foreach my $cust_main (
16    grep { ! scalar($_->invoicing_list) }
17      qsearch( 'cust_main', {} )
18 ) {
19   my @dest;
20   my @cust_pkg = $cust_main->ncancelled_pkgs;
21   foreach my $cust_pkg ( @cust_pkg ) {
22     foreach my $cust_svc ( $cust_pkg->cust_svc ) {
23       my $svc_acct = qsearchs( 'svc_acct', { 'svcnum' => $cust_svc->svcnum } );
24       push @dest, $svc_acct->svcnum if $svc_acct;
25     }
26   }
27   push @dest, 'POST' unless @dest;
28   $cust_main->invoicing_list(\@dest);
29 }
30
31 sub untaint_argv {
32   foreach $_ ( $[ .. $#ARGV ) { #untaint @ARGV
33     $ARGV[$_] =~ /^(.*)$/ || die "Illegal arguement \"$ARGV[$_]\"";
34     $ARGV[$_]=$1;
35   }
36 }
37
38 sub usage {
39   die "Usage:\n\n  freeside-setinvoice user\n";
40 }
41
42