better solution to ticket 1455
authorjeff <jeff>
Thu, 1 Feb 2007 02:13:58 +0000 (02:13 +0000)
committerjeff <jeff>
Thu, 1 Feb 2007 02:13:58 +0000 (02:13 +0000)
FS/FS/part_export/sqlradius.pm
FS/FS/svc_acct.pm

index c2a1dab..5bf9b7a 100644 (file)
@@ -31,10 +31,7 @@ tie %options, 'Tie::IxHash',
     type  => 'checkbox',
     label => 'Show the Called-Station-ID on session reports',
   },
-  'keep_password' => {
-    type  => 'checkbox',
-    label => 'Do not change the password on suspend and unsuspend events',
-  },
+  'overlimit_groups' => { label => 'Radius groups to assign to svc_acct which has exceeded its bandwidth or time limit', } ,
   'groups_susp_reason' => { label =>
                              'Radius group mapping to reason (via template user)',
                             type  => 'textarea',
@@ -205,9 +202,8 @@ sub _export_replace {
 sub _export_suspend {
   my( $self, $svc_acct ) = (shift, shift);
 
-  my $new = $self->option('keep_password') ? $svc_acct
-                            : $svc_acct->clone_suspended;
-
+  my $new = $svc_acct->clone_suspended;
+  
   local $SIG{HUP} = 'IGNORE';
   local $SIG{INT} = 'IGNORE';
   local $SIG{QUIT} = 'IGNORE';
index 6a681ca..0015140 100644 (file)
@@ -1518,6 +1518,29 @@ sub _op_usage {
 
   my $action = $op2action{$op};
 
+  if ( &{$op2condition{$op}}($self, $column, $amount) ) {
+    my $cust_pkg = $self->cust_svc->cust_pkg;
+    foreach my $part_export ( $self->cust_svc->part_svc->part_export ) {
+      if ($part_export->option('overlimit_groups')) {
+        my ($new,$old);
+        my $other = new FS::svc_acct $self->hashref;
+        my $groups = &{ $self->_fieldhandlers->{'usergroup'} }
+                       ($self, $part_export->option('overlimit_groups'));
+        $other->usergroup( $groups );
+        if ($action eq 'suspend'){
+          $new = $other; $old = $self;
+        }else{
+          $new = $self; $old = $other;
+        }
+        my $error = $part_export->export_replace($new, $old);
+        if ( $error ) {
+          $dbh->rollback if $oldAutoCommit;
+          return "Error replacing radius groups in export, ${op}: $error";
+        }
+      }
+    }
+  }
+
   if ( $conf->exists("svc_acct-usage_$action")
        && &{$op2condition{$op}}($self, $column, $amount)    ) {
     #my $error = $self->$action();