summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2016-11-10 18:06:26 -0800
committerIvan Kohler <ivan@freeside.biz>2016-11-10 18:06:26 -0800
commitac5d60b9226178a10eb0e680bcbadb9be02b4fa4 (patch)
tree02059f59e3756518baf912dc79c611f1ccdf83b3
parent8c842e33466e953710168bb65c2bbb5765dc537f (diff)
clean up package list UI: put actions in a dropdown
-rw-r--r--httemplate/view/cust_main/packages/package.html231
-rw-r--r--httemplate/view/cust_main/packages/status.html271
2 files changed, 227 insertions, 275 deletions
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 9951681..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} ) {
- (&nbsp;<% pkg_uncancel_link($cust_pkg) %>&nbsp;)
-% }
- <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')
-% ) {
- (&nbsp;<% pkg_change_contract_end_link($cust_pkg) %>&nbsp;)
- <BR>
-% }
-% if ( $cust_pkg->change_to_pkgnum ) {
-% # then you can modify the package change
-% if ( $curuser->access_right('Change customer package') ) {
- (&nbsp;<% pkg_change_now_link($cust_pkg) %>&nbsp;)
- (&nbsp;<% pkg_change_later_link($cust_pkg) %>&nbsp;)
- (&nbsp;<% pkg_unchange_link($cust_pkg) %>&nbsp;)
- <BR>
-% }
-% }
-% if ( $curuser->access_right('Unsuspend customer package') ) {
-% if ( $cust_pkg->order_date eq $cust_pkg->get('susp') ) { #on hold
- (&nbsp;<% pkg_unhold_link($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')
-% ) {
- (&nbsp;<% pkg_cancel_link($cust_pkg) %>&nbsp;)
-% }
- </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') ) {
- (&nbsp;<% pkg_cancel_link($cust_pkg) %>&nbsp;)
-% }
- </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')
-% ) {
- (&nbsp;<% pkg_change_start_link($cust_pkg) %>&nbsp;)
-% $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')
-% ) {
- (&nbsp;<% pkg_change_contract_end_link($cust_pkg) %>&nbsp;)
-% $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') ) {
- (&nbsp;<% pkg_change_now_link($cust_pkg) %>&nbsp;)
- (&nbsp;<% pkg_change_later_link($cust_pkg) %>&nbsp;)
- (&nbsp;<% pkg_unchange_link($cust_pkg) %>&nbsp;)
- <BR>
-% }
-% }
-
-% 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 ( $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;)
-% }
-% }
-% }
-
- <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',