Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / httemplate / view / cust_main / packages / status.html
index 8057d8c..7e125f7 100644 (file)
       </TR>
 %   }
 %
-% } else {
+% } else { # not canceled
 %
 %   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->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 ) %>
@@ -79,7 +79,7 @@
 %     } else { 
         <% pkg_status_row($cust_pkg, emt('Setup'), 'setup', %opt ) %>
 %     }
-%   } 
+%   }
 
     <% pkg_status_row_if($cust_pkg, emt('Un-cancelled'), 'uncancel', %opt ) %>
 
     <% pkg_status_row_expire($cust_pkg, %opt, curuser=>$curuser) %>
     <% pkg_status_row_if( $cust_pkg, emt('Contract ends'), 'contract_end', %opt ) %>
 
-% if ( !$supplemental && ! $opt{no_links} && !$change_from ) {
+%   # Status changes for suspended packages: can unsuspend, future-unsuspend,
+%   # or future-change. If this package is a future change or is supplemental
+%   # disable them all.
+%   if ( !$supplemental && ! $opt{no_links} && !$change_from ) {
       <TR>
         <TD COLSPAN=<%$opt{colspan}%>>
           <FONT SIZE=-1>
 
           <% pkg_status_row_if($cust_pkg, emt('Un-cancelled'), 'uncancel', %opt ) %>
 
-%       } else { 
+%       } else { # recurring package
 %
 %         my $num_cust_svc = $cust_pkg->num_cust_svc;
 %         my $summarize = $opt{'cust_pkg-large_pkg_size'} > 0
       <% pkg_status_row_expire($cust_pkg, %opt, curuser=>$curuser) %>
       <% pkg_status_row_if( $cust_pkg, emt('Contract ends'), 'contract_end', %opt ) %>
 
-%     if ( $part_pkg->freq and !$supplemental && ! $opt{no_links} ) { 
+%     # Status changes for active recurring packages. If it has a future
+%     # package change scheduled, let that be modified. If it's supplemental,
+%     # then that's the only allowed action. Otherwise allow suspend, future
+%     # suspend, do-not-suspend, and immediate and future cancel.
+%     if ( $part_pkg->freq and ! $opt{no_links} ) { 
 
         <TR>
           <TD COLSPAN=<%$opt{colspan}%>>
 %               }
 %           }
 
+%           if ( !$supplemental ) {
 %           # suspension actions--always available
-%           if ( $curuser->access_right('Suspend customer package') ) { 
-              (&nbsp;<% pkg_suspend_link($cust_pkg) %>&nbsp;)
-%           
-%           if ( $curuser->access_right('Suspend customer package later') ) { 
-              (&nbsp;<% pkg_adjourn_link($cust_pkg) %>&nbsp;)
-%           
-%           if ( $curuser->access_right('Delay suspension events') ) { 
-              (&nbsp;<% pkg_delay_link($cust_pkg) %>&nbsp;)
-%           }
+%             if ( $curuser->access_right('Suspend customer package') ) {
+                (&nbsp;<% pkg_suspend_link($cust_pkg) %>&nbsp;)
+%             }
+%             if ( $curuser->access_right('Suspend customer package later') ) {
+                (&nbsp;<% pkg_adjourn_link($cust_pkg) %>&nbsp;)
+%             }
+%             if ( $curuser->access_right('Delay suspension events') ) { 
+                (&nbsp;<% pkg_delay_link($cust_pkg) %>&nbsp;)
+%             }
 %
-%           if ( $change_from or $cust_pkg->change_to_pkgnum ) {
-%               # you can't cancel the package while in this state
-%           } else { # the normal case: links to cancel the package
-              <BR>
-%             if ( $curuser->access_right('Cancel customer package immediately') ) { 
-                (&nbsp;<% pkg_cancel_link($cust_pkg) %>&nbsp;)
+%             if ( $change_from or $cust_pkg->change_to_pkgnum ) {
+%                 # you can't cancel the package while in this state
+%             } else { # the normal case: links to cancel the package
+                <BR>
+%               if ( $curuser->access_right('Cancel customer package immediately') ) {
+                  (&nbsp;<% pkg_cancel_link($cust_pkg) %>&nbsp;)
+%               }
+%               if ( $curuser->access_right('Cancel customer package later') ) {
+                  (&nbsp;<% pkg_expire_link($cust_pkg) %>&nbsp;)
+%               }
 %             }
-%             if ( $curuser->access_right('Cancel customer package later') ) { 
-                (&nbsp;<% pkg_expire_link($cust_pkg) %>&nbsp;)
-%             } 
 %           }
 
             <FONT>
@@ -417,6 +426,10 @@ sub pkg_status_row_expire {
     } elsif ( $cust_pkg->change_to_pkg->locationnum != $cust_pkg->locationnum )
     {
       $title = mt('Will <b>change location</b> on');
+    } elsif (( $cust_pkg->change_to_pkg->quantity != $cust_pkg->quantity ) ||
+             ( $cust_pkg->change_to_pkg->contract_end != $cust_pkg->contract_end ))
+    {
+      $title = mt('Will change on');
     } else {
       # FS::cust_pkg->change_later should have prevented this, but 
       # just so that we can display _something_