improve unsuspend behavior for packages on hold, #28508
[freeside.git] / httemplate / view / cust_main / packages / status.html
index 70b623c..accdb45 100644 (file)
 %
 % } else {
 %
-%   if ( $cust_pkg->get('susp') ) { #status: suspended
-%     my $cpr = $cust_pkg->last_cust_pkg_reason('susp');
+%   if ( $cust_pkg->get('susp') ) { #suspended or on hold
+%
+%     #if ( $cust_pkg->order_date eq $cust_pkg->get('susp') ) { # inconsistent with FS::cust_pkg::status
+%     if ( ! $cust_pkg->setup ) { #status: on hold
+
+        <% pkg_status_row( $cust_pkg, emt('On Hold'), '', 'color'=>'7E0079', %opt ) %>
 
-    <% pkg_status_row( $cust_pkg, emt('Suspended'), 'susp', 'color'=>'FF9900', %opt ) %>
+%     } else { #status: suspended
 
-    <% pkg_reason_row( $cust_pkg, $cpr, 'color' => 'FF9900', %opt ) %>
+        <% pkg_status_row( $cust_pkg, emt('Suspended'), 'susp', 'color'=>'FF9900', %opt ) %>
+%       my $cpr = $cust_pkg->last_cust_pkg_reason('susp');
+        <% pkg_reason_row( $cust_pkg, $cpr, 'color' => 'FF9900', %opt ) %>
+
+%     }
 
     <% pkg_status_row_noauto( $cust_pkg, %opt ) %>
 
     <% pkg_status_row_discount( $cust_pkg, %opt ) %>
 
-%   unless ( $cust_pkg->get('setup') ) { 
-      <% pkg_status_row_colspan( $cust_pkg, emt('Never billed'), '', %opt ) %>
-%   } else { 
-      <% pkg_status_row($cust_pkg, emt('Setup'), 'setup', %opt ) %>
+%   unless ( $cust_pkg->order_date eq $cust_pkg->get('susp') ) { #on hold
+%     unless ( $cust_pkg->get('setup') ) { 
+        <% pkg_status_row_colspan( $cust_pkg, emt('Never billed'), '', %opt ) %>
+%     } else { 
+        <% pkg_status_row($cust_pkg, emt('Setup'), 'setup', %opt ) %>
+%     }
 %   } 
 
     <% pkg_status_row_if($cust_pkg, emt('Un-cancelled'), 'uncancel', %opt ) %>
 %               }
 %           }
 %           if ( $curuser->access_right('Unsuspend customer package') ) { 
-              (&nbsp;<% pkg_unsuspend_link($cust_pkg) %>&nbsp;)
-              (&nbsp;<% pkg_resume_link($cust_pkg) %>&nbsp;)
+%             if ( $cust_pkg->order_date eq $cust_pkg->get('susp') ) { #on hold
+                (&nbsp;<% pkg_link('misc/unsusp_pkg', emt('Start bililng now'), $cust_pkg) %>&nbsp;)
+%             } else {
+                (&nbsp;<% pkg_unsuspend_link($cust_pkg) %>&nbsp;)
+                (&nbsp;<% pkg_resume_link($cust_pkg) %>&nbsp;)
+%             }
 %           }
 %           if ( !$cust_pkg->change_to_pkgnum and
 %                $curuser->access_right('Cancel customer package immediately')
@@ -416,14 +430,16 @@ sub pkg_status_row_changed {
   my $old = $cust_pkg->old_cust_pkg;
   if ( $old ) {
     my $part_pkg = $old->part_pkg;
-    $html .= pkg_status_row_colspan( $cust_pkg, 
-                                     emt("Changed from [_1]: [_2]",
-                                            $cust_pkg->change_pkgnum,
-                                            $part_pkg->pkg_comment(nopartpkg => 1) ),
-                                     '',
-                                     'size'    => '-1',
-                                     'align'   => 'right',
-                                   );
+    $html .= pkg_status_row_colspan(
+      $cust_pkg, 
+      emt("Changed from [_1]: [_2]",
+             $cust_pkg->change_pkgnum,
+             $part_pkg->pkg_comment(cust_pkg=>$old, nopartpkg=>1)
+         ),
+      '',
+      'size'    => '-1',
+      'align'   => 'right',
+    );
   }
 
   $html;
@@ -479,7 +495,7 @@ sub pkg_status_row_discount {
 
   my $html;
 
-  foreach my $cust_pkg_discount ( $cust_pkg->cust_pkg_discount_active ) {
+  foreach my $cust_pkg_discount (@{ $cust_pkg->{_cust_pkg_discount_active} }) {
 
     my $discount = $cust_pkg_discount->discount;