1 <& /elements/header-popup.html, mt($title) &>
3 <& /elements/error.html &>
5 <FORM NAME="sc_popup" ACTION="<% popurl(1) %>process/cancel_pkg.html" METHOD=POST>
6 <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<% $pkgnum %>">
7 <INPUT TYPE="hidden" NAME="method" VALUE="<% $method %>">
10 <% emt(ucfirst($method)." [_1]", $part_pkg->pkg_comment(cust_pkg=>$cust_pkg) ) %>
11 <table style="background-color: #cccccc; border-spacing: 2; width: 100%">
14 % if ($method eq 'expire' || $method eq 'adjourn' || $method eq 'resume') {
15 % $submit =~ /^(\w*)\s/;
16 <& /elements/tr-input-date-field.html, {
19 'label' => mt("$1 package on"),
20 'format' => $date_format,
25 % if ($method eq 'uncancel' ) {
27 % #XXX customer also requested setup
28 % # setup: what usefulness is changing or blanking this? re-charge setup fee?
29 % # an option that says that would be better if that's what we want to do
31 % # last_bill: isn't this informational? what good would editing it do?
32 % # something about invoice display?
33 <& /elements/tr-input-date-field.html, {
34 'name' => 'last_bill',
35 'value' => ( $cgi->param('last_bill') || $cust_pkg->get('last_bill') ),
36 'label' => mt("Last bill date"),
37 'format' => $date_format,
40 <& /elements/tr-input-date-field.html, {
42 'value' => ( $cgi->param('bill') || $cust_pkg->get('bill') ),
43 'label' => mt("Next bill date"),
44 'format' => $date_format,
47 <& /elements/tr-checkbox.html,
48 'label' => mt("Uncancel even if a service can't be re-provisioned"),
49 'field' => 'svc_not_fatal',
56 % unless ( $method eq 'resume' || $method eq 'uncancel' ) {
57 <& /elements/tr-select-reason.html,
59 reason_class => $class,
60 curr_value => $reasonnum,
61 control_button => "confirm_cancel_pkg_button",
65 % if ( $method eq 'adjourn' || $method eq 'suspend' ) {
67 % if ( $part_pkg->option('suspend_bill', 1) ) {
68 <& /elements/checkbox.html, name=>'no_suspend_bill', value=>'Y' &>
69 Disable recurring billing while suspended
71 <& /elements/checkbox.html, name=>'suspend_bill', value=>'Y' &>
72 Continue recurring billing while suspended
77 % if ( ( $method eq 'adjourn' || $method eq 'suspend' ) and
78 % $curuser->access_right('Unsuspend customer package') ) { #later?
79 % my $resume_date = $cgi->param('error')
80 % ? str2time($cgi->param('resume_date'))
81 % : $cust_pkg->get('resume');
83 <& /elements/tr-input-date-field.html, {
84 'name' => 'resume_date',
85 'value' => $resume_date,
86 'label' => mt('Unsuspend on'),
87 'format' => $date_format,
88 'noinit' => $date_init,
94 <INPUT TYPE="submit" NAME="submit" ID="confirm_cancel_pkg_button"
95 VALUE="<% mt($submit) |h %>"
96 <% $method !~ /^(resume|uncancel)$/ ? 'DISABLED' : '' %>>
103 use Date::Parse qw(str2time);
105 my $conf = new FS::Conf;
106 my $date_format = $conf->config('date_format') || '%m/%d/%Y';
110 my($pkgnum, $reasonnum);
111 if ( $cgi->param('error') ) {
112 $pkgnum = $cgi->param('pkgnum');
113 $reasonnum = $cgi->param('reasonnum');
114 $date = str2time($cgi->param('date'));
115 } elsif ( $cgi->param('pkgnum') =~ /^(\d+)$/ ) {
119 die "illegal query ". $cgi->keywords;
122 $cgi->param('method') =~ /^(\w+)$/ or die 'illegal method';
125 my($class, $submit, $right);
126 if ($method eq 'cancel') {
128 $submit = 'Cancel Now';
129 $right = 'Cancel customer package immediately';
130 } elsif ($method eq 'expire') {
132 $submit = 'Cancel Later';
133 $right = 'Cancel customer package later';
134 } elsif ($method eq 'suspend') {
136 $submit = 'Suspend Now';
137 $right = 'Suspend customer package';
138 } elsif ($method eq 'adjourn') {
140 $submit = "Suspend Later";
141 $right = 'Suspend customer package later';
142 } elsif ( $method eq 'resume') {
144 $submit = 'Unsuspend Later';
145 $right = 'Unsuspend customer package'; #later?
146 } elsif ( $method eq 'uncancel') {
148 $submit = 'Un-Cancel';
149 $right = 'Un-cancel customer package'; #later?
151 die 'illegal query (unknown method param)';
154 my $curuser = $FS::CurrentUser::CurrentUser;
155 die "access denied" unless $curuser->access_right($right);
157 my $title = ucfirst($method) . ' Package';
158 $title =~ s/Uncancel/Un-cancel/;
160 my $cust_pkg = qsearchs('cust_pkg', {'pkgnum' => $pkgnum})
161 or die "Unknown pkgnum: $pkgnum";
163 my $part_pkg = $cust_pkg->part_pkg;
165 $date ||= $cust_pkg->get($method);