diff options
author | mark <mark> | 2012-01-28 23:20:11 +0000 |
---|---|---|
committer | mark <mark> | 2012-01-28 23:20:11 +0000 |
commit | 781f0ffcf560d3df0aec7ae349b57463d1c2518a (patch) | |
tree | 1c1c872d11d69b54370325786b2b2e72e2f009d8 /httemplate | |
parent | 45ecb21934e80c6f1dcc6e26284398995a04a8e6 (diff) |
future package unsuspend date, #14144
Diffstat (limited to 'httemplate')
-rwxr-xr-x | httemplate/edit/REAL_cust_pkg.cgi | 3 | ||||
-rwxr-xr-x | httemplate/edit/process/REAL_cust_pkg.cgi | 3 | ||||
-rw-r--r-- | httemplate/elements/change_history_common.html | 2 | ||||
-rwxr-xr-x | httemplate/misc/cancel_pkg.html | 78 | ||||
-rwxr-xr-x | httemplate/misc/process/cancel_pkg.html | 47 | ||||
-rw-r--r-- | httemplate/view/cust_main/packages/status.html | 17 |
6 files changed, 96 insertions, 54 deletions
diff --git a/httemplate/edit/REAL_cust_pkg.cgi b/httemplate/edit/REAL_cust_pkg.cgi index 170281ba0..0e18a52b2 100755 --- a/httemplate/edit/REAL_cust_pkg.cgi +++ b/httemplate/edit/REAL_cust_pkg.cgi @@ -61,6 +61,7 @@ %#} <& .row_display, cust_pkg=>$cust_pkg, column=>'adjourn', label=>'Adjournment', note=>'(will <b>suspend</b> this package when the date is reached)' &> <& .row_display, cust_pkg=>$cust_pkg, column=>'susp', label=>'Suspension' &> + <& .row_display, cust_pkg=>$cust_pkg, column=>'resume', label=>'Resumption', note=> '(will <b>unsuspend</b> this package when the date is reached' &> <& .row_display, cust_pkg=>$cust_pkg, column=>'expire', label=>'Expiration', note=>'(will <b>cancel</b> this package when the date is reached)' &> <& .row_display, cust_pkg=>$cust_pkg, column=>'cancel', label=>'Cancellation' &> @@ -192,7 +193,7 @@ if ( $cgi->param('error') ) { $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); die "No package!" unless $cust_pkg; - foreach my $col (qw( start_date setup last_bill bill adjourn expire )) { + foreach my $col (qw( start_date setup last_bill bill )) { my $value = $cgi->param($col); $cust_pkg->set( $col, $value ? parse_datetime($value) : '' ); } diff --git a/httemplate/edit/process/REAL_cust_pkg.cgi b/httemplate/edit/process/REAL_cust_pkg.cgi index 3a62ee001..9c36c8b77 100755 --- a/httemplate/edit/process/REAL_cust_pkg.cgi +++ b/httemplate/edit/process/REAL_cust_pkg.cgi @@ -20,7 +20,8 @@ my $pkgnum = $cgi->param('pkgnum') or die; my $old = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); my %hash = $old->hash; $hash{$_}= $cgi->param($_) ? parse_datetime($cgi->param($_)) : '' - foreach qw( start_date setup bill last_bill adjourn expire contract_end ); + foreach qw( start_date setup bill last_bill contract_end ); + # adjourn, expire, resume not editable this way my @errors = (); diff --git a/httemplate/elements/change_history_common.html b/httemplate/elements/change_history_common.html index 9e19539d0..232664e39 100644 --- a/httemplate/elements/change_history_common.html +++ b/httemplate/elements/change_history_common.html @@ -138,7 +138,7 @@ my %action = ( my %cust_pkg_date_fields = map { $_=>1 } qw( start_date setup bill last_bill susp adjourn cancel expire contract_end - change_date + resume change_date ); # finding the other replace row diff --git a/httemplate/misc/cancel_pkg.html b/httemplate/misc/cancel_pkg.html index 6e02e0e39..4b5df8654 100755 --- a/httemplate/misc/cancel_pkg.html +++ b/httemplate/misc/cancel_pkg.html @@ -1,10 +1,5 @@ <& /elements/header-popup.html, mt($title) &> -<LINK REL="stylesheet" TYPE="text/css" HREF="../elements/calendar-win2k-2.css" TITLE="win2k-2"> -<SCRIPT TYPE="text/javascript" SRC="../elements/calendar_stripped.js"></SCRIPT> -<SCRIPT TYPE="text/javascript" SRC="../elements/calendar-en.js"></SCRIPT> -<SCRIPT TYPE="text/javascript" SRC="../elements/calendar-setup.js"></SCRIPT> - <& /elements/error.html &> <FORM NAME="sc_popup" ACTION="<% popurl(1) %>process/cancel_pkg.html" METHOD=POST> @@ -15,37 +10,47 @@ <% emt(ucfirst($method)." [_1]", $part_pkg->pkg_comment) %> <% ntable("#cccccc", 2) %> -% if ($method eq 'expire' || $method eq 'adjourn') { -<TR> -% $submit =~ /^(\w*)\s/; - <TD><% mt("$1 package on") |h %> </TD> - <TD><INPUT TYPE="text" NAME="date" ID="expire_date" VALUE="<% $date |h %>"> - <IMG SRC="<% $p %>images/calendar.png" ID="expire_button" STYLE="cursor:pointer" TITLE="<% mt('Select date') |h %>"> - <BR><I><% mt('m/d/y') |h %></I> - </TD> -</TR> -<SCRIPT TYPE="text/javascript"> - Calendar.setup({ - inputField: "expire_date", - ifFormat: "<% $date_format %>", - button: "expire_button", - align: "BR" - }); -</SCRIPT> -%} -% - +% my $date_init = 0; +% if ($method eq 'expire' || $method eq 'adjourn' || $method eq 'resume') { +% $submit =~ /^(\w*)\s/; +<& /elements/tr-input-date-field.html, { + 'name' => 'date', + 'value' => $date, + 'label' => mt("$1 package on"), + 'format' => $date_format, +} &> +% $date_init = 1; +% } + +% unless ( $method eq 'resume' ) { #the only one that doesn't need a reason <& /elements/tr-select-reason.html, - 'field' => 'reasonnum', - 'reason_class' => $class, - 'curr_value' => $reasonnum, - 'control_button' => "document.getElementById('confirm_cancel_pkg_button')", + 'field' => 'reasonnum', + 'reason_class' => $class, + 'curr_value' => $reasonnum, + 'control_button' => "document.getElementById('confirm_cancel_pkg_button')", &> - +% } + +% if ( ( $method eq 'adjourn' or $method eq 'suspend' ) and +% $curuser->access_right('Unsuspend customer package') ) { #later? +% my $resume_date = $cgi->param('error') +% ? str2time($cgi->param('resume_date')) +% : $cust_pkg->get('resume'); + +<& /elements/tr-input-date-field.html, { + 'name' => 'resume_date', + 'value' => $resume_date, + 'label' => mt('Unsuspend on'), + 'format' => $date_format, + 'noinit' => $date_init, +} &> +% } </TABLE> <BR> -<INPUT TYPE="submit" NAME="submit" ID="confirm_cancel_pkg_button" VALUE="<% mt($submit) |h %>" DISABLED> +<INPUT TYPE="submit" NAME="submit" ID="confirm_cancel_pkg_button" + VALUE="<% mt($submit) |h %>" + <% $method ne 'resume' ? 'DISABLED' : '' %>> </FORM> </BODY> @@ -56,13 +61,13 @@ my $conf = new FS::Conf; my $date_format = $conf->config('date_format') || '%m/%d/%Y'; -my $date = time2str($date_format, time); +my $date; my($pkgnum, $reasonnum); if ( $cgi->param('error') ) { $pkgnum = $cgi->param('pkgnum'); $reasonnum = $cgi->param('reasonnum'); - $date = $cgi->param('date'); + $date = str2time($cgi->param('date')); } elsif ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) { $pkgnum = $1; $reasonnum = ''; @@ -90,6 +95,10 @@ if ($method eq 'cancel') { $class = 'S'; $submit = "Suspend Later"; $right = 'Suspend customer package later'; +} elsif ( $method eq 'resume') { + $class = ''; + $submit = 'Unsuspend Later'; + $right = 'Unsuspend customer package'; #later? } else { die 'illegal query (unknown method param)'; } @@ -104,4 +113,7 @@ my $cust_pkg = qsearchs('cust_pkg', {'pkgnum' => $pkgnum}) my $part_pkg = $cust_pkg->part_pkg; +$date ||= $cust_pkg->get($method); +$date ||= time; + </%init> diff --git a/httemplate/misc/process/cancel_pkg.html b/httemplate/misc/process/cancel_pkg.html index a4371e6f3..662a77670 100755 --- a/httemplate/misc/process/cancel_pkg.html +++ b/httemplate/misc/process/cancel_pkg.html @@ -1,4 +1,4 @@ -<% header(emt("Package $past{$method}")) %> +<% header(emt("Package $past_method")) %> <SCRIPT TYPE="text/javascript"> window.top.location.reload(); </SCRIPT> @@ -10,6 +10,7 @@ my %past = ( 'cancel' => 'cancelled', 'expire' => 'expired', 'suspend' => 'suspended', 'adjourn' => 'adjourned', + 'resume' => 'scheduled to resume', ); #i'm sure this is false laziness with somewhere, at least w/misc/cancel_pkg.html @@ -17,6 +18,7 @@ my %right = ( 'cancel' => 'Cancel customer package immediately', 'expire' => 'Cancel customer package later', 'suspend' => 'Suspend customer package', 'adjourn' => 'Suspend customer package later', + 'resume' => 'Unsuspend customer package', #later? ); </%once> @@ -24,8 +26,9 @@ my %right = ( 'cancel' => 'Cancel customer package immediately', #untaint method my $method = $cgi->param('method'); -$method =~ /^(cancel|expire|suspend|adjourn)$/ or die "Illegal method"; +$method =~ /^(cancel|expire|suspend|adjourn|resume)$/ or die "Illegal method"; $method = $1; +my $past_method = $past{$method}; die "access denied" unless $FS::CurrentUser::CurrentUser->access_right($right{$method}); @@ -35,30 +38,42 @@ my $pkgnum = $cgi->param('pkgnum'); $pkgnum =~ /^(\d+)$/ or die "Illegal pkgnum"; $pkgnum = $1; -#untaint reasonnum -my $reasonnum = $cgi->param('reasonnum'); -$reasonnum =~ /^(-?\d+)$/ or die "Illegal reasonnum"; -$reasonnum = $1; - my $date = time; -if ($method eq 'expire' || $method eq 'adjourn'){ +if ($method eq 'expire' || $method eq 'adjourn' || $method eq 'resume'){ #untaint date - $date = $cgi->param('date'); + $date = $cgi->param('date'); #huh? parse_datetime($cgi->param('date')) =~ /^(\d+)$/ or die "Illegal date"; $date = $1; - $method = ($method eq 'expire') ? 'cancel' : 'suspend'; + $method = 'cancel' if $method eq 'expire'; + $method = 'suspend' if $method eq 'adjourn'; + $method = 'unsuspend' if $method eq 'resume'; +} + +my $resume_date; +if ( $method eq 'suspend' ) { #or 'adjourn' + $resume_date = parse_datetime($cgi->param('resume_date')) + if $cgi->param('resume_date'); } my $cust_pkg = qsearchs( 'cust_pkg', {'pkgnum'=>$pkgnum} ); -if ($reasonnum == -1) { - $reasonnum = { - 'typenum' => scalar( $cgi->param('newreasonnumT') ), - 'reason' => scalar( $cgi->param('newreasonnum' ) ), - }; +#untaint reasonnum +my $reasonnum = $cgi->param('reasonnum'); +if ( $method ne 'unsuspend' ) { #i.e. 'resume' + $reasonnum =~ /^(-?\d+)$/ or die "Illegal reasonnum"; + $reasonnum = $1; + + if ($reasonnum == -1) { + $reasonnum = { + 'typenum' => scalar( $cgi->param('newreasonnumT') ), + 'reason' => scalar( $cgi->param('newreasonnum' ) ), + }; + } } -my $error = $cust_pkg->$method( 'reason' => $reasonnum, 'date' => $date ); +my $error = $cust_pkg->$method( 'reason' => $reasonnum, + 'date' => $date, + 'resume_date' => $resume_date ); if ($error) { $cgi->param('error', $error); diff --git a/httemplate/view/cust_main/packages/status.html b/httemplate/view/cust_main/packages/status.html index a5925491d..28df9da95 100644 --- a/httemplate/view/cust_main/packages/status.html +++ b/httemplate/view/cust_main/packages/status.html @@ -61,6 +61,7 @@ % if ( $part_pkg->option('suspend_bill', 1) ) { <% pkg_status_row_if( $cust_pkg, emt('Next bill'), 'bill', %opt, curuser=>$curuser ) %> % } + <% pkg_status_row_if( $cust_pkg, emt('Will resume'), 'resume', %opt, curuser=>$curuser ) %> <% pkg_status_row_if( $cust_pkg, emt('Expires'), 'expire', %opt, curuser=>$curuser ) %> <% pkg_status_row_if( $cust_pkg, emt('Contract ends'), 'contract_end', %opt ) %> @@ -69,7 +70,8 @@ <FONT SIZE=-1> % if ( $curuser->access_right('Unsuspend customer package') ) { ( <% pkg_unsuspend_link($cust_pkg) %> ) -% } + ( <% pkg_resume_link($cust_pkg) %> ) +% } % if ( $curuser->access_right('Cancel customer package immediately') ) { ( <% pkg_cancel_link($cust_pkg) %> ) % } @@ -179,6 +181,7 @@ <% pkg_status_row_if($cust_pkg, emt('Will automatically suspend by'), 'autosuspend', %opt) %> <% pkg_status_row_if($cust_pkg, emt('Automatic suspension delayed until'), 'dundate', %opt) %> <% pkg_status_row_if( $cust_pkg, emt('Will suspend on'), 'adjourn', %opt, curuser=>$curuser ) %> + <% pkg_status_row_if( $cust_pkg, emt('Will resume on'), 'resume', %opt, curuser=>$curuser ) %> <% pkg_status_row_if( $cust_pkg, emt('Expires'), 'expire', %opt, curuser=>$curuser ) %> <% pkg_status_row_if( $cust_pkg, emt('Contract ends'), 'contract_end', %opt ) %> @@ -440,7 +443,17 @@ sub pkg_delay_link { ) } -sub pkg_unsuspend_link { pkg_link('misc/unsusp_pkg', emt('Unsuspend'), @_ ); } +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_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'), @_ ); } |