correct agent_defaultpkg handling
[freeside.git] / httemplate / edit / process / svc_acct.cgi
index 247a5b4..d9aac9f 100755 (executable)
 %#unmunge usergroup
 %$cgi->param('usergroup', [ $cgi->param('radius_usergroup') ] );
 %
-%my $new = new FS::svc_acct ( {
-%  map {
-%    $_, scalar($cgi->param($_));
+%#unmunge bytecounts
+%foreach (map { $_,$_."_threshold" } qw( upbytes downbytes totalbytes )) {
+%  $cgi->param($_, FS::UI::bytecount::parse_bytecount($cgi->param($_)) );
+%}
+%
+%my %hash = $svcnum ? $old->hash : ();
+%map {
+%    $hash{$_} = scalar($cgi->param($_));
 %  #} qw(svcnum pkgnum svcpart username _password popnum uid gid finger dir
 %  #  shell quota slipip)
-%  } ( fields('svc_acct'), qw( pkgnum svcpart usergroup ) )
-%} );
+%  } (fields('svc_acct'), qw ( pkgnum svcpart usergroup ));
+%my $new = new FS::svc_acct ( \%hash );
 %
 %my $error;
 %if ( $svcnum ) {
-%  $error = $new->replace($old);
+%  foreach (grep { $old->$_ != $new->$_ } qw( seconds upbytes downbytes totalbytes )) {
+%    my %hash = map { $_ => $new->$_ } 
+%               grep { $new->$_ }
+%               qw( seconds upbytes downbytes totalbytes );
+%
+%    $error = $new->set_usage(\%hash);  #unoverlimit and trigger radius changes
+%    last;                              #once is enough
+%  }
+%  $error ||= $new->replace($old);
 %} else {
 %  $error = $new->insert;
 %  $svcnum = $new->svcnum;