freeside/bin rollback,NONE,1.1

ivan ivan at pouncequick.420.am
Sun Nov 7 21:33:36 PST 2004


Update of /home/cvs/cvsroot/freeside/bin
In directory pouncequick:/tmp/cvs-serv18466

Added Files:
	rollback 
Log Message:
adding in case this is needed again

--- NEW FILE: rollback ---
#!/usr/bin/perl

use FS::UID qw(adminsuidsetup);
use FS::Record qw(qsearch qsearchs fields);

use FS::svc_acct;

#cust_pkg pkgnum 240133 241206 replace_old
#cust_svc svcnum 31102 32083 delete
#svc_acct svcnum 37162 37652 delete
my($user, $table, $pkey, $start, $end, $action) = @ARGV;

adminsuidsetup $user or die;

#eval "use FS::h_$table;";
#die $@ if $@;
eval "use FS::$table;";
die $@ if $@;

my @history = grep { $_->historynum <= $end } qsearch("h_$table", { 'historynum' => { op=>'>=', value=>$start }, history_action => $action } );

my %seen;
foreach my $h (@history) {
  my $error;
  if ( $action eq 'replace_old' ) {
    my $old = qsearchs($table, { $pkey => $h->get($pkey) } );
    unless ( $old ) { die "can't find $table $pkey ". $h->get($pkey). "\n"; }
    my $new = "FS::$table"->new( { map { $_ => $h->get($_) } fields($table) } );
    $error = $new->replace($old);
  } elsif ( $action eq 'delete' ) {
    next if $seen{$h->get($pkey)}++;
    my $new = "FS::$table"->new( { map { $_ => $h->get($_) } fields($table) } );
    $error = $new->insert;
  } else {
    die "unknown action $action\n";
  }
  die $error if $error;
}




More information about the freeside-commits mailing list