summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2004-02-23 08:12:47 +0000
committerivan <ivan>2004-02-23 08:12:47 +0000
commitb5fa7c0c1953139f1fbe0dabf3930871646016b8 (patch)
tree85577a8c157d845c9d11545d6566c27f069e7158
parented9253ea9ea732fa3c827b10bbadf0ff7784c0b2 (diff)
implement fallback suspension code
-rw-r--r--FS/FS/part_export.pm10
-rw-r--r--FS/FS/svc_Common.pm24
-rw-r--r--FS/FS/svc_acct.pm28
3 files changed, 59 insertions, 3 deletions
diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm
index 0d91961..8423da2 100644
--- a/FS/FS/part_export.pm
+++ b/FS/FS/part_export.pm
@@ -468,18 +468,22 @@ sub _export_delete {
return "_export_delete: unknown export type ". $self->exporttype;
}
-#fallbacks providing null operations
+#call svcdb-specific fallbacks
sub _export_suspend {
my $self = shift;
#warn "warning: _export_suspened unimplemented for". ref($self);
- '';
+ my $svc_x = shift;
+ my $new = $svc_x->clone_suspended;
+ $self->_export_replace( $new, $svc_x );
}
sub _export_unsuspend {
my $self = shift;
#warn "warning: _export_unsuspend unimplemented for ". ref($self);
- '';
+ my $svc_x = shift;
+ my $old = $svc_x->clone_kludge_unsuspend;
+ $self->_export_replace( $svc_x, $old );
}
=back
diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm
index cadb997..a154f3f 100644
--- a/FS/FS/svc_Common.pm
+++ b/FS/FS/svc_Common.pm
@@ -430,6 +430,30 @@ methods. Called by the cancel method of FS::cust_pkg (see L<FS::cust_pkg>).
sub cancel { ''; }
+=item clone_suspended
+
+Constructor used by FS::part_export::_export_suspend fallback. Stub returning
+same object for svc_ classes which don't implement a suspension fallback
+(everything except svc_acct at the moment). Document better.
+
+=cut
+
+sub clone_suspended {
+ shift;
+}
+
+=item clone_kludge_unsuspend
+
+Constructor used by FS::part_export::_export_unsuspend fallback. Stub returning
+same object for svc_ classes which don't implement a suspension fallback
+(everything except svc_acct at the moment). Document better.
+
+=cut
+
+sub clone_kludge_unsuspend {
+ shift;
+}
+
=back
=head1 BUGS
diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm
index 9d8566d..32d8720 100644
--- a/FS/FS/svc_acct.pm
+++ b/FS/FS/svc_acct.pm
@@ -1061,6 +1061,34 @@ sub radius_groups {
}
}
+=item clone_suspended
+
+Constructor used by FS::part_export::_export_suspend fallback. Document
+better.
+
+=cut
+
+sub clone_suspended {
+ my $self = shift;
+ my %hash = $self->hash;
+ $hash{_password} = join('',map($pw_set[ int(rand $#pw_set) ], (0..7) ) );
+ new FS::svc_acct \%hash;
+}
+
+=item clone_kludge_unsuspend
+
+Constructor used by FS::part_export::_export_unsuspend fallback. Document
+better.
+
+=cut
+
+sub clone_kludge_unsuspend {
+ my $self = shift;
+ my %hash = $self->hash;
+ $hash{_password} = '';
+ new FS::svc_acct \%hash;
+}
+
=back
=head1 SUBROUTINES