<& /elements/header-popup.html, mt($title) &> <& /elements/error.html &>


<% emt(ucfirst($method)." [_1]", $part_pkg->pkg_comment(cust_pkg=>$cust_pkg) ) %> <% ntable("#cccccc", 2) %> % 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' ) { % % #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' ) { % 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 % } % } % 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, } &> % }
>
<%init> 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') ) { $pkgnum = $cgi->param('pkgnum'); $reasonnum = $cgi->param('reasonnum'); $date = str2time($cgi->param('date')); } elsif ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) { $pkgnum = $1; $reasonnum = ''; } else { die "illegal query ". $cgi->keywords; } $cgi->param('method') =~ /^(\w+)$/ or die 'illegal method'; my $method = $1; my($class, $submit, $right); if ($method eq 'cancel') { $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/; my $cust_pkg = qsearchs('cust_pkg', {'pkgnum' => $pkgnum}) or die "Unknown pkgnum: $pkgnum"; my $part_pkg = $cust_pkg->part_pkg; $date ||= $cust_pkg->get($method); $date ||= time;