[freeside-commits] branch master updated. 82e41e360194691a3585bbcebde481c2b20b37c4

Ivan ivan at 420.am
Thu Nov 10 18:06:23 PST 2016


The branch, master has been updated
       via  82e41e360194691a3585bbcebde481c2b20b37c4 (commit)
      from  b5d165e21a606efaa47f4ef4b4a49d96df00361d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 82e41e360194691a3585bbcebde481c2b20b37c4
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Nov 10 18:06:20 2016 -0800

    clean up package list UI: put actions in a dropdown

diff --git a/httemplate/view/cust_main/packages/package.html b/httemplate/view/cust_main/packages/package.html
index ce175a2..9fed5b5 100644
--- a/httemplate/view/cust_main/packages/package.html
+++ b/httemplate/view/cust_main/packages/package.html
@@ -222,6 +222,12 @@
 %                                       && ! $supplemental
 %                                       && ! $cust_pkg->get('cancel')
 %                                 };
+%       my $change_cond = sub { $part_pkg->freq ne '0'
+%                                 && ! $change_from
+%                                 && ! $supplemental
+%                                 && ! $cust_pkg->get('cancel')
+%                                 && $cust_pkg->change_to_pkgnum,
+%                             };
 
         <& /elements/dropdown-menu.html,
              id      => 'cust_pkg'. $cust_pkg->pkgnum. '_menu',
@@ -232,7 +238,10 @@
                  #TODO: order/group these better
 
                  { label => 'Package actions',
-                   content => '<FONT STYLE="text-decoration:underline"><B>Package actions</B></FONT> <IMG SRC="'.$p. 'images/arrow.down.black.png">',
+                   content =>
+                    '<FONT STYLE="text-decoration:underline;font-weight:bold">'.
+                    'Package actions</FONT>'.
+                    ' <IMG SRC="'.$p.'images/arrow.down.black.png">',
                  },
 
                  { label       => 'Modify one-time charge',
@@ -315,9 +324,9 @@
                                        ' invoice details'
                                      ),
                    width       => 768,
-                },
+                 },
 
-                { label       => (@comments ? 'Edit' : 'Add'). ' comments',
+                 { label        => (@comments ? 'Edit' : 'Add'). ' comments',
                    acl         => 'Edit customer package comments',
                    popup       => "edit/cust_pkg_detail.html?$plink".
                                     ';detailtype=C',
@@ -325,12 +334,222 @@
                                        ' comments'
                                      ),
                    width       => 768,
-                },
+                 },
+
+                 { label       => '-',
+                   condition   => sub { $part_pkg->freq ne '0' },
+                   content     => '-',
+                 },
+
+                 { label       => 'Set start date',
+                   acl         => 'Change package start date',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && ! $cust_pkg->get('setup')
+                                      },
+                  popup       => "misc/change_pkg_date.html?$plink".
+                                   ';field=start_date',
+                  actionlabel => emt('Set start of billing for'),
+                  width       => 510,
+                  height      => 310,
+                 },
+
+                 { label       => 'Set contract end',
+                   acl         => 'Change package contract end date',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && ! $cust_pkg->change_to_pkgnum
+                                      },
+                   popup       => "misc/change_pkg_date.html?$plink".
+                                   ';field=contract_end',
+                   actionlabel => emt('Set contract end for'),
+                   width       => 510,
+                   height      => 310,
+                 },
+
+                 { label       => '-',
+                   condition   => sub { $part_pkg->freq ne '0' },
+                   content     => '-',
+                 },
+
+                 { label       => 'Change now',
+                   acl         => 'Change customer package',
+                   condition   => $change_cond,
+                   url         => "misc/change_pkg_now.cgi?$pkgnum",
+                 },
+
+                 { label       => 'Reschedule',
+                   acl         => 'Change customer package',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && $cust_pkg->change_to_pkgnum,
+                                      },
+                   popup       => "misc/change_pkg.html?$plink",
+                   actionlabel => emt('Edit scheduled change for'),
+                   url         => "misc/change_pkg_now.cgi?$pkgnum",
+                   width       => 960,
+                   height      => 490,
+    
+                 },
+
+                 { label       => 'Abort change',
+                   acl         => 'Change customer package',
+                   condition   => $change_cond,
+                   url         => "misc/do_not_change_pkg.cgi?$pkgnum",
+                 },
+
+                 { label       => '-',
+                   acl         => 'Change customer package',
+                   condition   => $change_cond,
+                   content     => '-',
+                 },
+
+                 { label       => 'Suspend now',
+                   acl         => 'Suspend customer package',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && ! $cust_pkg->get('susp')
+                                      },
+                   popup       => "misc/cancel_pkg.html?method=suspend;$plink",
+                   actionlabel => emt('Suspend now'),
+                   color       => '#FF9900',
+                   width       => 768,
+                   height      => 420,
+                 },
 
-                 { label   => '-',
-                   content => '-',
+                 { label       => 'Suspend later',
+                   acl         => 'Suspend customer package later',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && ! $cust_pkg->get('susp')
+                                      },
+                   popup       => "misc/cancel_pkg.html?method=adjourn;$plink",
+                   actionlabel => emt('Suspend later'),
+                   color       => '#CC6600',
+                   width       => 768,
+                   height      => 445,
                  },
 
+                 { label       => $cust_pkg->dundate
+                                    ? 'Edit suspension delay'
+                                    : 'Delay suspend',
+
+                   acl         => 'Delay suspension events',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && ! $cust_pkg->get('susp')
+                                      },
+                   popup       => "misc/delay_susp_pkg.html?$plink",
+                   actionlabel => emt('Delay suspend for'),
+                   width       => 768,
+                 },
+
+                 { label       => 'Start billing',
+                   acl         => 'Unsuspend customer package',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && $cust_pkg->get('susp')
+                                          && $cust_pkg->order_date == $cust_pkg->get('susp')
+                                      },
+                   popup        => "misc/unhold_pkg.html?$plink",
+                   actionlabel  => emt('Start billing'),
+                   color       => '#00CC00',
+                   width       => 510,
+                   height      => 310,
+                 },
+
+                 { label       => 'Unsuspend now',
+                   acl         => 'Unsuspend customer package',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && $cust_pkg->get('susp')
+                                          && $cust_pkg->order_date != $cust_pkg->get('susp')
+                                      },
+                   'url'       => "misc/unsusp_pkg.cgi?$pkgnum",
+                 },
+
+                 { label       => 'Unsuspend later',
+                   acl         => 'Unsuspend customer package',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && $cust_pkg->get('susp')
+                                          && $cust_pkg->order_date != $cust_pkg->get('susp')
+                                      },
+                   popup       => "misc/cancel_pkg.html?method=resume;$plink",
+                   actionlabel => emt('Unsuspend later'),
+                   color       => '#00CC00',
+                   width       => 768,
+                 },
+
+                 { label       => '-',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->get('cancel')
+                                          && ! $cust_pkg->get('susp')
+                                      },
+                   content     => '-',
+                 },
+
+                 { label       => 'Cancel now',
+                   acl         => 'Cancel customer package immediately',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->change_to_pkgnum
+                                          && ! $cust_pkg->get('cancel')
+                                      },
+                   popup       => "misc/cancel_pkg.html?method=cancel;$plink",
+                   actionlabel => emt('Cancel now'),
+                   color       => '#FF0000',
+                   width       => 768,
+                 },
+
+                 { label       => 'Cancel later',
+                   acl         => 'Cancel customer package later',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $change_from
+                                          && ! $supplemental
+                                          && ! $cust_pkg->change_to_pkgnum
+                                          && ! $cust_pkg->get('cancel')
+                                      },
+                   popup       => "misc/cancel_pkg.html?method=expire;$plink",
+                   actionlabel => emt('Cancel later'),
+                   color       => '#CC0000',
+                   width       => 768,
+                 },
+
+                 { label       => 'Un-cancel',
+                   acl         => 'Un-cancel customer package',
+                   condition   => sub { $part_pkg->freq ne '0'
+                                          && ! $supplemental
+                                          && ! $cust_pkg->change_custnum
+                                          && $cust_pkg->get('cancel')
+                                      },
+                   popup       => "misc/cancel_pkg.html?method=uncancel;$plink",
+                   actionlabel => emt('Un-cancel'),
+                   width       => 960,
+                   height      => 740,
+
+                 },
 
                ],
              ],
diff --git a/httemplate/view/cust_main/packages/status.html b/httemplate/view/cust_main/packages/status.html
index 3f629e1..fefeeef 100644
--- a/httemplate/view/cust_main/packages/status.html
+++ b/httemplate/view/cust_main/packages/status.html
@@ -31,18 +31,6 @@
 
 %   } 
 %
-%   if ( $part_pkg->freq && !$supplemental && !$cust_pkg->change_custnum ) { #?
-
-      <TR>
-        <TD COLSPAN=<%$opt{colspan}%>>
-          <FONT SIZE=-1>
-%           if ( $curuser->access_right('Un-cancel customer package') && ! $opt{no_links} ) { 
-              ( <% pkg_uncancel_link($cust_pkg) %> )
-%           } 
-          <FONT>
-        </TD>
-      </TR>
-%   }
 %
 % } else { # not canceled
 %
@@ -97,48 +85,6 @@
     <% pkg_status_row_expire($cust_pkg, %opt, curuser=>$curuser) %>
     <% pkg_status_row_if( $cust_pkg, emt('Contract ends'), 'contract_end', %opt ) %>
 
-%   # 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>
-%           if ( !$cust_pkg->change_to_pkgnum # because on a technical level, change won't propagate,
-%                                             # and there's not really a use case worth making that work
-%                 and $part_pkg->freq # technically possible to have contract_end w/o freq, but nonsensical
-%                 and $curuser->access_right('Change package contract end date')
-%           ) {
-                ( <% pkg_change_contract_end_link($cust_pkg) %> )
-                <BR>
-%           }
-%           if ( $cust_pkg->change_to_pkgnum ) {
-%               # then you can modify the package change
-%               if ( $curuser->access_right('Change customer package') ) {
-                ( <% pkg_change_now_link($cust_pkg) %> )
-                ( <% pkg_change_later_link($cust_pkg) %> )
-                ( <% pkg_unchange_link($cust_pkg) %> )
-                <BR>
-%               }
-%           }
-%           if ( $curuser->access_right('Unsuspend customer package') ) { 
-%             if ( $cust_pkg->order_date eq $cust_pkg->get('susp') ) { #on hold
-                ( <% pkg_unhold_link($cust_pkg) %> )
-%             } else {
-                ( <% pkg_unsuspend_link($cust_pkg) %> )
-                ( <% pkg_resume_link($cust_pkg) %> )
-%             }
-%           }
-%           if ( !$cust_pkg->change_to_pkgnum and
-%                $curuser->access_right('Cancel customer package immediately')
-%           ) {
-              ( <% pkg_cancel_link($cust_pkg) %> )
-%           } 
-          </FONT>
-        </TD>
-      </TR>
-%     }
-%
 %   } else { #status: active
 %
 %     if ( $change_from ) { # future change
@@ -171,18 +117,6 @@
 
           <% pkg_status_row_if($cust_pkg, emt('Un-cancelled'), 'uncancel', %opt ) %>
 
-%         if ( !$supplemental && ! $opt{no_links} ) {
-          <TR>
-            <TD COLSPAN=<%$opt{colspan}%>>
-              <FONT SIZE=-1>
-%               if ( $curuser->access_right('Cancel customer package immediately') ) { 
-                  ( <% pkg_cancel_link($cust_pkg) %> )
-%               } 
-              </FONT>
-            </TD>
-          </TR>
-%         }
-
 %       } else { # recurring package, not yet billed
 
           <% pkg_status_row_colspan($cust_pkg, emt("Not yet billed ($billed_or_prepaid [_1])", myfreq($part_pkg) ), '', %opt ) %>
@@ -270,80 +204,7 @@
       <% pkg_status_row_expire($cust_pkg, %opt, curuser=>$curuser) %>
       <% pkg_status_row_if( $cust_pkg, emt('Contract ends'), 'contract_end', %opt ) %>
 
-%     # 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}%>>
-            <FONT SIZE=-1>
-
-% #change date links
-%           if ( !$change_from and !$supplemental ) {
-%             my $has_date_links = 0;
-%             if ( !$cust_pkg->get('setup')
-%                   and $curuser->access_right('Change package start date')
-%             ) {
-            ( <% pkg_change_start_link($cust_pkg) %> )
-%               $has_date_links = 1;
-%             }
-%             if ( !$cust_pkg->change_to_pkgnum # because on a technical level, change won't propagate,
-%                                               # and there's not really a use case worth making that work
-%                   and $curuser->access_right('Change package contract end date')
-%             ) {
-            ( <% pkg_change_contract_end_link($cust_pkg) %> )
-%               $has_date_links = 1;
-%             }
-%             if ($has_date_links) {
-            <BR>
-%             }
-%           }
-
-% # action links
-%           if ( $change_from ) {
-%               # nothing
-%           } elsif ( $cust_pkg->change_to_pkgnum ) {
-%               # then you can modify the package change
-%               if ( $curuser->access_right('Change customer package') ) {
-                ( <% pkg_change_now_link($cust_pkg) %> )
-                ( <% pkg_change_later_link($cust_pkg) %> )
-                ( <% pkg_unchange_link($cust_pkg) %> )
-                <BR>
-%               }
-%           }
-
-%           if ( !$supplemental ) {
-%           # suspension actions--always available
-%             if ( $curuser->access_right('Suspend customer package') ) {
-                ( <% pkg_suspend_link($cust_pkg) %> )
-%             }
-%             if ( $curuser->access_right('Suspend customer package later') ) {
-                ( <% pkg_adjourn_link($cust_pkg) %> )
-%             }
-%             if ( $curuser->access_right('Delay suspension events') ) { 
-                ( <% pkg_delay_link($cust_pkg) %> )
-%             }
-%
-%             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') ) {
-                  ( <% pkg_cancel_link($cust_pkg) %> )
-%               }
-%               if ( $curuser->access_right('Cancel customer package later') ) {
-                  ( <% pkg_expire_link($cust_pkg) %> )
-%               }
-%             }
-%           }
-
-            <FONT>
-          </TD>
-        </TR>
-%     }
-%
+
 %   } 
 % } 
 
@@ -484,7 +345,7 @@ sub pkg_status_row_changed {
   return '' unless $cust_pkg->change_date;
 
   my $html =
-    pkg_status_row( $cust_pkg, emt('Package changed'), 'change_date', %opt );
+    pkg_status_row( $cust_pkg, emt('Changed'), 'change_date', %opt );
 
   my $old = $cust_pkg->old_cust_pkg;
   if ( $old ) {
@@ -650,136 +511,8 @@ sub pkg_datestr {
   $strip;
 }
 
-sub pkg_suspend_link {
-  include( '/elements/popup_link-cust_pkg.html',
-             'action'      => $p. 'misc/cancel_pkg.html?method=suspend',
-             'label'       => emt('Suspend now'),
-             'actionlabel' => emt('Suspend'),
-             'color'       => '#FF9900',
-             'cust_pkg'    => shift,
-             'height'      => 420,
-         )
-}
-
-sub pkg_adjourn_link {
-  include( '/elements/popup_link-cust_pkg.html',
-             'action'      => $p. 'misc/cancel_pkg.html?method=adjourn',
-             'label'       => emt('Suspend later'),
-             'actionlabel' => emt('Adjourn'),
-             'color'       => '#CC6600',
-             'cust_pkg'    => shift,
-             'height'      => 445,
-         )
-}
-
-sub pkg_delay_link  {
-  my($cust_pkg) = shift;
-  include( '/elements/popup_link-cust_pkg.html',
-             'action'      => $p. 'misc/delay_susp_pkg.html',
-             'label'       => ( $cust_pkg->dundate
-                                  ? emt('Edit suspension delay')
-                                  : emt('Delay suspend')
-                              ),
-             'actionlabel' => emt('Delay suspend for'),
-             'cust_pkg'    => $cust_pkg,
-         )
-}
-
-sub pkg_resume_link {
-  include( '/elements/popup_link-cust_pkg.html',
-             'action'      => $p. 'misc/cancel_pkg.html?method=resume',
-             'label'       => emt('Unsuspend later'),
-             'actionlabel' => emt('Resume'),
-             'color'       => '#00CC00',
-             'cust_pkg'    => shift,
-         )
-}
-
-sub pkg_unhold_link {
-  include( '/elements/popup_link-cust_pkg.html',
-             'action'      => $p. 'misc/unhold_pkg.html',
-             'label'       => emt('Start billing'),
-             'actionlabel' => emt('Start billing'),
-             'color'       => '#00CC00',
-             'width'       => 510,
-             'height'      => 310,
-             'cust_pkg'    => shift,
-         )
-}
-
-sub pkg_unsuspend_link { pkg_link('misc/unsusp_pkg',    emt('Unsuspend now'), @_ ); }
 sub pkg_unadjourn_link { pkg_link('misc/unadjourn_pkg', emt('Abort'),     @_ ); }
 sub pkg_unexpire_link  { pkg_link('misc/unexpire_pkg',  emt('Abort'),     @_ ); }
-sub pkg_unchange_link  { pkg_link('misc/do_not_change_pkg',  emt('Abort change'),     @_ ); }
-sub pkg_change_now_link  { pkg_link('misc/change_pkg_now',  emt('Change now'),     @_ ); }
-
-sub pkg_cancel_link {
-  include( '/elements/popup_link-cust_pkg.html',
-             'action'      => $p. 'misc/cancel_pkg.html?method=cancel',
-             'label'       => emt('Cancel now'),
-             'actionlabel' => emt('Cancel'),
-             'color'       => '#ff0000',
-             'cust_pkg'    => shift,
-         )
-}
-
-sub pkg_uncancel_link {
-  include( '/elements/popup_link-cust_pkg.html',
-             'action'      => $p. 'misc/cancel_pkg.html?method=uncancel',
-             'label'       => emt('Un-cancel'),
-             'actionlabel' => emt('Un-cancel'),
-             #'color'       =>  #?
-             'cust_pkg'    => shift,
-             'width'       => 960,
-             'height'      => 740,
-         )
-}
-
-sub pkg_expire_link {
-  include( '/elements/popup_link-cust_pkg.html',
-             'action'      => $p. 'misc/cancel_pkg.html?method=expire',
-             'label'       => emt('Cancel later'),
-             'actionlabel' => emt('Expire'),
-             'color'       => '#CC0000',
-             'cust_pkg'    => shift,
-         )
-}
-
-sub pkg_change_later_link {
-  my $cust_pkg = shift;
-  include( '/elements/popup_link-cust_pkg.html',
-    'action'      => $p . 'misc/change_pkg.cgi',
-    'label'       => emt('Reschedule'),
-    'actionlabel' => emt('Edit scheduled change for'),
-    'cust_pkg'    => $cust_pkg,
-    'width'       => 960,
-    'height'      => 490,
-  )
-}
-
-sub pkg_change_start_link {
-  my $cust_pkg = shift;
-  include( '/elements/popup_link-cust_pkg.html',
-    'action'      => $p . 'misc/change_pkg_date.html?field=start_date',
-    'label'       => emt('Set start date'),
-    'actionlabel' => emt('Set start of billing for'),
-    'cust_pkg'    => $cust_pkg,
-    'width'       => 510,
-    'height'      => 310,
-  )
-}
-
-sub pkg_change_contract_end_link {
-  my $cust_pkg = shift;
-  include( '/elements/popup_link-cust_pkg.html',
-    'action'      => $p . 'misc/change_pkg_date.html?field=contract_end',
-    'label'       => emt('Set contract end'),
-    'actionlabel' => emt('Set contract end for'),
-    'cust_pkg'    => $cust_pkg,
-    'width'       => 510,
-    'height'      => 310,
-  )
-}
 
 sub svc_recharge_link {
   include( '/elements/popup_link-cust_svc.html',

-----------------------------------------------------------------------

Summary of changes:
 httemplate/view/cust_main/packages/package.html |  231 ++++++++++++++++++-
 httemplate/view/cust_main/packages/status.html  |  271 +----------------------
 2 files changed, 227 insertions(+), 275 deletions(-)




More information about the freeside-commits mailing list