UX: acknowledge actions instead of silently redirecting
[freeside.git] / httemplate / misc / cust_main-unsuspend.cgi
1 <& /elements/header-popup.html, mt("Customer unsuspended") &>
2   <SCRIPT TYPE="text/javascript">
3     Cookies.set('freeside_status', <% mt("Customer unsuspended") |js_string %>,{
4                   expires: 0.0035
5     });
6     topreload();
7   </SCRIPT>
8   </BODY>
9 </HTML>
10 <%init>
11
12 #false laziness w/cust_main-cancel.cgi
13
14 die "access denied"
15   unless $FS::CurrentUser::CurrentUser->access_right('Unsuspend customer');
16
17 my $custnum;
18 my $resume = '';
19 if ( $cgi->param('custnum') =~ /^(\d+)$/ ) {
20   $custnum = $1;
21   $resume = $cgi->param('resume');
22 } else {
23   my($query) = $cgi->keywords;
24   $query =~ /^(\d+)$/ || die "Illegal custnum";
25   $custnum = $1;
26 }
27
28 my $cust_main = qsearchs( {
29   'table'     => 'cust_main',
30   'hashref'   => { 'custnum' => $custnum },
31   'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql,
32 } );
33
34 my @errors;
35 if($cgi->param('now_or_later')) {
36   $resume = parse_datetime($resume);
37   if($resume) {
38     #warn "setting resume dates on custnum#$custnum\n";
39     my @pkgs = $cust_main->suspended_pkgs;
40     if (!$cgi->param('release_hold')) {
41       # then avoid packages that are on hold
42       @pkgs = grep { $_->get('setup') } @pkgs;
43     }
44     @errors = grep {$_} map { $_->unsuspend(
45       'date'    => $resume,
46     ) } @pkgs;
47   }
48   else {
49     @errors = ("error parsing adjourn date: ".$cgi->param('adjourn'));
50   }
51 }
52 else { # unsuspending now
53   warn "unsuspending $cust_main";
54   @errors = $cust_main->unsuspend;
55
56   if ( $cgi->param('release_hold') ) {
57     push @errors, $cust_main->release_hold;
58   }
59 }
60 my $error = join(' / ', @errors) if scalar(@errors);
61
62 if ( $error ) {
63   $cgi->param('error', $error);
64   print $cgi->redirect(popurl(1). "unsuspend_cust.html?". $cgi->query_string );
65 }
66
67 </%init>