-%# if ( $link eq 'popup' ) {
- <% include('/elements/header-popup.html', $title ) %>
-%# } else {
-%# <% include("/elements/header.html", $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>
-
-% if ( $cgi->param('error') ) {
- <FONT SIZE="+1" COLOR="#ff0000">Error: <% $cgi->param('error') %></FONT>
- <BR><BR>
-% }
+<& /elements/header-popup.html, mt($title) &>
+
+<& /elements/error.html &>
<FORM NAME="sc_popup" ACTION="<% popurl(1) %>process/cancel_pkg.html" METHOD=POST>
<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
<INPUT TYPE="hidden" NAME="method" VALUE="<% $method %>">
-
<BR><BR>
-<% ucfirst($method) . " $pkgnum: " .$part_pkg->pkg. ' - ' .$part_pkg->comment %>
+<% emt(ucfirst($method)." [_1]", $part_pkg->pkg_comment) %>
<% ntable("#cccccc", 2) %>
-% if ($method eq 'expire' || $method eq 'adjourn') {
-<TR>
- <TD><% $submit =~ /^(\w*)\s/ %> package on </TD>
- <TD><INPUT TYPE="text" NAME="date" ID="expire_date" VALUE="<% $date %>">
- <IMG SRC="<% $p %>images/calendar.png" ID="expire_button" STYLE="cursor:pointer" TITLE="Select date">
- <BR><I>m/d/y</I>
- </TD>
-</TR>
-<SCRIPT TYPE="text/javascript">
- Calendar.setup({
- inputField: "expire_date",
- ifFormat: "%m/%d/%Y",
- 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;
+% }
+
+% if ($method eq 'uncancel' ) {
%
-
-<% include('/elements/tr-select-reason.html', 'reasonnum', $class, '', '', '', 'document.sc_popup.submit' ) %>
-
+% #XXX customer also requested setup
+% # setup: what usefulness is changing or blanking this? re-charge setup fee?
+% # an option that says that would be better if that's what we want to do
+
+% # last_bill: isn't this informational? what good would editing it do?
+% # something about invoice display?
+ <& /elements/tr-input-date-field.html, {
+ 'name' => 'last_bill',
+ 'value' => ( $cgi->param('last_bill') || $cust_pkg->get('last_bill') ),
+ 'label' => mt("Last bill date"),
+ 'format' => $date_format,
+ } &>
+
+ <& /elements/tr-input-date-field.html, {
+ 'name' => 'bill',
+ 'value' => ( $cgi->param('bill') || $cust_pkg->get('bill') ),
+ 'label' => mt("Next bill date"),
+ 'format' => $date_format,
+ } &>
+
+ <& /elements/tr-checkbox.html,
+ 'label' => mt("Uncancel even if a service can't be re-provisioned"),
+ 'field' => 'svc_not_fatal',
+ 'value' => 'Y',
+ &>
+
+% $date_init = 1;
+% }
+
+% unless ( $method eq 'resume' || $method eq 'uncancel' ) {
+ <& /elements/tr-select-reason.html,
+ field => 'reasonnum',
+ reason_class => $class,
+ curr_value => $reasonnum,
+ control_button => "document.getElementById('confirm_cancel_pkg_button')",
+ &>
+% }
+
+% if ( $method eq 'adjourn' || $method eq 'suspend' ) {
+ <TR><TD COLSPAN=2>
+% if ( $part_pkg->option('suspend_bill', 1) ) {
+ <& /elements/checkbox.html, name=>'no_suspend_bill', value=>'Y' &>
+ Disable recurring billing while suspended
+% } else {
+ <& /elements/checkbox.html, name=>'suspend_bill', value=>'Y' &>
+ Continue recurring billing while suspended
+% }
+ </TD></TR>
+% }
+
+% if ( ( $method eq 'adjourn' || $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" VALUE="<% $submit %>" disabled='true'>
+<INPUT TYPE="submit" NAME="submit" ID="confirm_cancel_pkg_button"
+ VALUE="<% mt($submit) |h %>"
+ <% $method !~ /^(resume|uncancel)$/ ? 'DISABLED' : '' %>>
</FORM>
</BODY>
</HTML>
<%init>
-my($method, $pkgnum, $reasonnum, $submit, $cust_pkg, $part_pkg,
- $date, $curuser, $class);
-$date = time2str("%m/%d/%Y", time);
+use Date::Parse qw(str2time);
+
+my $conf = new FS::Conf;
+my $date_format = $conf->config('date_format') || '%m/%d/%Y';
+
+my $date;
+
+my($pkgnum, $reasonnum);
if ( $cgi->param('error') ) {
- $method = $cgi->param('method');
- $pkgnum = $cgi->param('pkgnum');
- $reasonnum = $cgi->param('reasonnum');
- $date = $cgi->param('date');
+ $pkgnum = $cgi->param('pkgnum');
+ $reasonnum = $cgi->param('reasonnum');
+ $date = str2time($cgi->param('date'));
} elsif ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) {
- $pkgnum = $1;
+ $pkgnum = $1;
+ $reasonnum = '';
} else {
die "illegal query ". $cgi->keywords;
}
-$method = $cgi->param('method');
+$cgi->param('method') =~ /^(\w+)$/ or die 'illegal method';
+my $method = $1;
+
+my($class, $submit, $right);
if ($method eq 'cancel') {
- $class = 'C';
- $submit = "Cancel Now";
-}elsif ($method eq 'expire') {
- $class = 'C';
- $submit = "Cancel Later";
-}elsif ($method eq 'suspend') {
- $class = 'S';
- $submit = "Suspend Now";
-}elsif ($method eq 'adjourn') {
- $class = 'S';
- $submit = "Suspend Later";
-}else{
- die "illegal query ". $cgi->keywords;
+ $class = 'C';
+ $submit = 'Cancel Now';
+ $right = 'Cancel customer package immediately';
+} elsif ($method eq 'expire') {
+ $class = 'C';
+ $submit = 'Cancel Later';
+ $right = 'Cancel customer package later';
+} elsif ($method eq 'suspend') {
+ $class = 'S';
+ $submit = 'Suspend Now';
+ $right = 'Suspend customer package';
+} elsif ($method eq 'adjourn') {
+ $class = 'S';
+ $submit = "Suspend Later";
+ $right = 'Suspend customer package later';
+} elsif ( $method eq 'resume') {
+ $class = '';
+ $submit = 'Unsuspend Later';
+ $right = 'Unsuspend customer package'; #later?
+} elsif ( $method eq 'uncancel') {
+ $class = '';
+ $submit = 'Un-Cancel';
+ $right = 'Un-cancel customer package'; #later?
+} else {
+ die 'illegal query (unknown method param)';
}
+my $curuser = $FS::CurrentUser::CurrentUser;
+die "access denied" unless $curuser->access_right($right);
+
my $title = ucfirst($method) . ' Package';
+$title =~ s/Uncancel/Un-cancel/;
-$cust_pkg = qsearchs('cust_pkg', {'pkgnum' => $pkgnum});
-die "No such package: $pkgnum" unless $cust_pkg;
+my $cust_pkg = qsearchs('cust_pkg', {'pkgnum' => $pkgnum})
+ or die "Unknown pkgnum: $pkgnum";
-$part_pkg = $cust_pkg->part_pkg;
+my $part_pkg = $cust_pkg->part_pkg;
-$curuser = $FS::CurrentUser::CurrentUser;
+$date ||= $cust_pkg->get($method);
+$date ||= time;
</%init>
-