diff options
author | jeff <jeff> | 2008-04-16 18:32:34 +0000 |
---|---|---|
committer | jeff <jeff> | 2008-04-16 18:32:34 +0000 |
commit | f3547a0b913f2c982df13177240c6c5ba0b29231 (patch) | |
tree | 910331a7d0e01121d98101bb5c283101066568c1 | |
parent | 0309ca1e7a1b4d094bbe10fbc4b8c5d3699fc293 (diff) |
show user who created (cancel/suspend) reason and possibly fix a lingering spurious usergroup bug
-rw-r--r-- | FS/FS/cust_pkg.pm | 25 | ||||
-rw-r--r-- | FS/FS/cust_pkg_reason.pm | 23 | ||||
-rwxr-xr-x | httemplate/view/cust_main/packages.html | 15 |
3 files changed, 54 insertions, 9 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index d6d2dad19..2e23cce26 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -710,6 +710,22 @@ sub last_bill { $cust_bill_pkg ? $cust_bill_pkg->sdate : $self->setup || 0; } +=item last_cust_pkg_reason + +Returns the most recent FS::reason associated with the package. + +=cut + +sub last_cust_pkg_reason { + my $self = shift; + qsearchs( { + 'table' => 'cust_pkg_reason', + 'hashref' => { 'pkgnum' => $self->pkgnum, }, + 'extra_sql'=> "AND date <= ". time, + 'order_by' => 'ORDER BY date DESC LIMIT 1', + } ); +} + =item last_reason Returns the most recent FS::reason associated with the package. @@ -717,13 +733,8 @@ Returns the most recent FS::reason associated with the package. =cut sub last_reason { - my $self = shift; - my $cust_pkg_reason = qsearchs( { - 'table' => 'cust_pkg_reason', - 'hashref' => { 'pkgnum' => $self->pkgnum, }, - 'extra_sql'=> 'ORDER BY date DESC LIMIT 1', - } ); - qsearchs ( 'reason', { 'reasonnum' => $cust_pkg_reason->reasonnum } ) + my $cust_pkg_reason = shift->last_cust_pkg_reason; + $cust_pkg_reason->reason if $cust_pkg_reason; } diff --git a/FS/FS/cust_pkg_reason.pm b/FS/FS/cust_pkg_reason.pm index 2f927401f..24808f944 100644 --- a/FS/FS/cust_pkg_reason.pm +++ b/FS/FS/cust_pkg_reason.pm @@ -106,6 +106,29 @@ sub check { $self->SUPER::check; } +=item reason + +Returns the reason (see L<FS::reason>) associated with this cust_pkg_reason. + +=cut + +sub reason { + my $self = shift; + qsearchs( 'reason', { 'reasonnum' => $self->reasonnum } ); +} + +=item reasontext + +Returns the text of the reason (see L<FS::reason>) associated with this +cust_pkg_reason. + +=cut + +sub reasontext { + my $reason = shift->reason; + $reason ? $reason->reason : ''; +} + =back =head1 BUGS diff --git a/httemplate/view/cust_main/packages.html b/httemplate/view/cust_main/packages.html index 0d36f5b53..0ef9e6c66 100755 --- a/httemplate/view/cust_main/packages.html +++ b/httemplate/view/cust_main/packages.html @@ -125,15 +125,22 @@ Current packages % % % if ( $cust_pkg->get('cancel') ) { #status: cancelled +% my $cpr = $cust_pkg->last_cust_pkg_reason; <% pkg_status_row($cust_pkg, 'Cancelled', 'cancel', 'color'=>'FF0000' ) %> <% pkg_status_row_colspan( - ( $cust_pkg->last_reason ? $cust_pkg->last_reason->reason : '' ), '', + ( ( $cpr && ( $cpr->date == $cust_pkg->get('cancel') || + $cpr->date == $cust_pkg->expire + ) + ) ? $cpr->reasontext. ' by '. $cpr->otaker : '' ), '', 'align' => 'right', 'color' => 'ff0000', 'size' => '-2', ) %> + + <% pkg_status_row( $cust_pkg, 'Suspended', 'susp', 'color'=>'FF9900' ) %> + % unless ( $cust_pkg->get('setup') ) { <% pkg_status_row_colspan('Never billed') %> @@ -150,11 +157,15 @@ Current packages % } else { % % if ( $cust_pkg->get('susp') ) { #status: suspended +% my $cpr = $cust_pkg->last_cust_pkg_reason; <% pkg_status_row( $cust_pkg, 'Suspended', 'susp', 'color'=>'FF9900' ) %> <% pkg_status_row_colspan( - ( $cust_pkg->last_reason ? $cust_pkg->last_reason->reason : '' ), '', + ( ( $cpr && ( $cpr->date == $cust_pkg->susp || + $cpr->date == $cust_pkg->adjourn + ) + ) ? $cpr->reasontext. ' by '. $cpr->otaker : '' ), '', 'align' => 'right', 'color' => 'FF9900', 'size' => '-2', ) %> |