package FS::reason;
use strict;
-use vars qw( @ISA );
+use vars qw( @ISA $DEBUG $me );
+use DBIx::DBSchema;
+use DBIx::DBSchema::Table;
+use DBIx::DBSchema::Column;
+use FS::Record qw( qsearch qsearchs dbh dbdef );
use FS::reason_type;
-use FS::Record qw( qsearch qsearchs );
@ISA = qw(FS::Record);
+$DEBUG = 0;
+$me = '[FS::reason]';
=head1 NAME
=item disabled - 'Y' or ''
+=item unsuspend_pkgpart - for suspension reasons only, the pkgpart (see
+L<FS::part_pkg>) of a package to be ordered when the package is unsuspended.
+Typically this will be some kind of reactivation fee. Attaching it to
+a suspension reason allows the reactivation fee to be charged for some
+suspensions but not others.
+
+=item unsuspend_hold - 'Y' or ''. If unsuspend_pkgpart is set, this tells
+whether to bill the unsuspend package immediately ('') or to wait until
+the customer's next invoice ('Y').
=back
my $error =
$self->ut_numbern('reasonnum')
+ || $self->ut_number('reason_type')
+ || $self->ut_foreign_key('reason_type', 'reason_type', 'typenum')
|| $self->ut_text('reason')
+ || $self->ut_flag('disabled')
;
return $error if $error;
+ if ( $self->reasontype->class eq 'S' ) {
+ $error = $self->ut_numbern('unsuspend_pkgpart')
+ || $self->ut_foreign_keyn('unsuspend_pkgpart', 'part_pkg', 'pkgpart')
+ || $self->ut_flag('unsuspend_hold')
+ ;
+ return $error if $error;
+ } else {
+ $self->set('unsuspend_pkgpart' => '');
+ $self->set('unsuspend_hold' => '');
+ }
+
$self->SUPER::check;
}
=item reasontype
-Returns the reason_type (see <I>FS::reason_type</I>) associated with this reason.
+Returns the reason_type (see L<FS::reason_type>) associated with this reason.
=cut
=head1 BUGS
-Here be termintes. Don't use on wooden computers.
+Here by termintes. Don't use on wooden computers.
=head1 SEE ALSO