X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct.pm;h=0d612612b4936c2234f77df9b9dbb5b2facb13b7;hp=a06f4d797eadd0aea698356c845e7fb6de11769f;hb=3f0a5f441a8b3c9b503e0f0e1f2a6d565baa8965;hpb=80d9bab5b9e16abfd7af996c79511bbf0c4a833b diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index a06f4d797..0d612612b 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -41,7 +41,7 @@ use FS::cdr; @ISA = qw( FS::svc_Common ); -$DEBUG = 0; +$DEBUG = 1; $me = '[FS::svc_acct]'; #ask FS::UID to run this stuff for us later @@ -1671,6 +1671,7 @@ sub set_usage { my $dbh = dbh; my $reset = 0; + my %handyhash = (); foreach my $field (keys %$valueref){ $reset = 1 if $valueref->{$field}; $self->setfield($field, $valueref->{$field}); @@ -1682,9 +1683,28 @@ sub set_usage { ) ) ); + $handyhash{$field} = $self->getfield($field); + $handyhash{$field.'_threshold'} = $self->getfield($field.'_threshold'); + } + #my $error = $self->replace; #NO! we avoid the call to ->check for + #die $error if $error; #services not explicity changed via the UI + + my $sql = "UPDATE svc_acct SET " . + join (',', map { "$_ = ?" } (keys %handyhash) ). + " WHERE svcnum = ?"; + + warn "$me $sql\n" + if $DEBUG; + + if (scalar(keys %handyhash)) { + my $sth = $dbh->prepare( $sql ) + or die "Error preparing $sql: ". $dbh->errstr; + my $rv = $sth->execute((grep{$_} values %handyhash), $self->svcnum); + die "Error executing $sql: ". $sth->errstr + unless defined($rv); + die "Can't update usage for svcnum ". $self->svcnum + if $rv == 0; } - my $error = $self->replace; - die $error if $error; if ( $conf->exists("svc_acct-usage_unsuspend") && $reset ) { my $error = $self->cust_svc->cust_pkg->unsuspend;