From: Ivan Kohler Date: Fri, 11 Nov 2016 02:06:20 +0000 (-0800) Subject: clean up package list UI: put actions in a dropdown X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=82e41e360194691a3585bbcebde481c2b20b37c4 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 ce175a27e..9fed5b581 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 => 'Package actions ', + content => + ''. + 'Package actions'. + ' ', }, { 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 3f629e12f..fefeeef84 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 ) { #? - - - > - -% if ( $curuser->access_right('Un-cancel customer package') && ! $opt{no_links} ) { - ( <% pkg_uncancel_link($cust_pkg) %> ) -% } - - - -% } % % } 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 ) { - - > - -% 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) %> ) -
-% } -% 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) %> ) -
-% } -% } -% 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) %> ) -% } -
- - -% } -% % } 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} ) { - - > - -% if ( $curuser->access_right('Cancel customer package immediately') ) { - ( <% pkg_cancel_link($cust_pkg) %> ) -% } - - - -% } - % } 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} ) { - - - > - - -% #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) { -
-% } -% } - -% # 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) %> ) -
-% } -% } - -% 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 -
-% 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) %> ) -% } -% } -% } - - - - -% } -% + % } % } @@ -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',