diff options
Diffstat (limited to 'httemplate/misc/process')
| -rw-r--r-- | httemplate/misc/process/bulk_suspend_pkg.cgi | 106 | ||||
| -rw-r--r-- | httemplate/misc/process/bulk_unsuspend_pkg.cgi | 91 | 
2 files changed, 197 insertions, 0 deletions
| diff --git a/httemplate/misc/process/bulk_suspend_pkg.cgi b/httemplate/misc/process/bulk_suspend_pkg.cgi new file mode 100644 index 000000000..2ac9c212f --- /dev/null +++ b/httemplate/misc/process/bulk_suspend_pkg.cgi @@ -0,0 +1,106 @@ +% if ($error) { +<% $cgi->redirect(popurl(2)."bulk_suspend_pkg.cgi?".$cgi->query_string ) %> +% } +<% include('/elements/popup-topreload.html', "Packages Suspended") %> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Bulk change customer packages'); + +my $error; + +if (!$error) { + +  my %search_hash = (); + +  $search_hash{'query'} = $cgi->param('query'); + +  #scalars +  for (qw( agentnum cust_status cust_main_salesnum salesnum custnum magic status +         custom cust_fields pkgbatch zip reasonnum +         477part 477rownum date  +      ))  +  { +    $search_hash{$_} = $cgi->param($_) if length($cgi->param($_)); +  } + +  #arrays +  for my $param (qw( pkgpart classnum refnum towernum )) { +    $search_hash{$param} = [ $cgi->param($param) ] +      if grep { $_ eq $param } $cgi->param; +  } + +  #scalars that need to be passed if empty +  for my $param (qw( censustract censustract2 )) { +    $search_hash{$param} = $cgi->param($param) || '' +      if grep { $_ eq $param } $cgi->param; +  } + +  #location flags (checkboxes) +  my @loc = grep /^\w+$/, $cgi->param('loc'); +  $search_hash{"location_$_"} = 1 foreach @loc; + +  my $report_option = $cgi->param('report_option'); +  $search_hash{report_option} = $report_option if $report_option; + +  for my $param (grep /^report_option_any/, $cgi->param) { +    $search_hash{$param} = $cgi->param($param); +  } + +  ### +  # parse dates +  ### + +  #false laziness w/report_cust_pkg.html and bulk_pkg_increment_bill.cgi +  my %disable = ( +    'all'             => {}, +    'one-time charge' => { 'last_bill'=>1, 'bill'=>1, 'adjourn'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, }, +    'active'          => { 'susp'=>1, 'cancel'=>1 }, +    'suspended'       => { 'cancel' => 1 }, +    'cancelled'       => {}, +    ''                => {}, +  ); + +  foreach my $field (qw( setup last_bill bill adjourn susp expire contract_end change_date cancel active )) { + +    $search_hash{$field.'_null'} = scalar( $cgi->param($field.'_null') ); + +    my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, $field); + +    next if $beginning == 0 && $ending == 4294967295 +       or $disable{$cgi->param('status')}->{$field}; + +    $search_hash{$field} = [ $beginning, $ending ]; + +  } + +  my $sql_query = FS::cust_pkg->search(\%search_hash); +  $sql_query->{'select'} = 'cust_pkg.pkgnum'; + +  ## set suspend info +  $cgi->param('suspend_reasonnum') =~ /^(\d+)$/ or die "Illegal Reason"; +  my $suspend_reasonnum = $1; + +  my $suspend_date = time; +  parse_datetime($cgi->param('suspend_date')) =~ /^(\d+)$/ or die "Illegal date"; +  $suspend_date = $1; + +  my $suspend_resume_date = ''; +  (parse_datetime($cgi->param('suspend_resume_date')) =~ /^(\d+)$/ or die "Illegal resume date") if $cgi->param('suspend_resume_date'); +  $suspend_resume_date = $1; + +  foreach my $pkgnum (map { $_->pkgnum } qsearch($sql_query)) { +    my $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); + +    $error = $cust_pkg->suspend('reason'      => $suspend_reasonnum, +                                'date'        => $suspend_date, +                                'resume_date' => $suspend_resume_date, +                              ); +  } + +} + +$cgi->param("error", substr($error, 0, 512)); # arbitrary length believed +                                              # suited for all supported +                                              # browsers +</%init>
\ No newline at end of file diff --git a/httemplate/misc/process/bulk_unsuspend_pkg.cgi b/httemplate/misc/process/bulk_unsuspend_pkg.cgi new file mode 100644 index 000000000..13389f43a --- /dev/null +++ b/httemplate/misc/process/bulk_unsuspend_pkg.cgi @@ -0,0 +1,91 @@ +% if ($error) { +<% $cgi->redirect(popurl(2)."bulk_unsuspend_pkg.cgi?".$cgi->query_string ) %> +% } +<% include('/elements/popup-topreload.html', "Packages Unsuspended") %> +<%init> + +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Bulk change customer packages'); + +my $error; +$error = 'Unsuspend packages not confirmed' if !$cgi->param('confirm'); + +if (!$error) { + +  my %search_hash = (); + +  $search_hash{'query'} = $cgi->param('query'); + +  #scalars +  for (qw( agentnum cust_status cust_main_salesnum salesnum custnum magic status +         custom cust_fields pkgbatch zip reasonnum +         477part 477rownum date  +      ))  +  { +    $search_hash{$_} = $cgi->param($_) if length($cgi->param($_)); +  } + +  #arrays +  for my $param (qw( pkgpart classnum refnum towernum )) { +    $search_hash{$param} = [ $cgi->param($param) ] +      if grep { $_ eq $param } $cgi->param; +  } + +  #scalars that need to be passed if empty +  for my $param (qw( censustract censustract2 )) { +    $search_hash{$param} = $cgi->param($param) || '' +      if grep { $_ eq $param } $cgi->param; +  } + +  #location flags (checkboxes) +  my @loc = grep /^\w+$/, $cgi->param('loc'); +  $search_hash{"location_$_"} = 1 foreach @loc; + +  my $report_option = $cgi->param('report_option'); +  $search_hash{report_option} = $report_option if $report_option; + +  for my $param (grep /^report_option_any/, $cgi->param) { +    $search_hash{$param} = $cgi->param($param); +  } + +  ### +  # parse dates +  ### + +  #false laziness w/report_cust_pkg.html and bulk_pkg_increment_bill.cgi +  my %disable = ( +    'all'             => {}, +    'one-time charge' => { 'last_bill'=>1, 'bill'=>1, 'adjourn'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, }, +    'active'          => { 'susp'=>1, 'cancel'=>1 }, +    'suspended'       => { 'cancel' => 1 }, +    'cancelled'       => {}, +    ''                => {}, +  ); + +  foreach my $field (qw( setup last_bill bill adjourn susp expire contract_end change_date cancel active )) { + +    $search_hash{$field.'_null'} = scalar( $cgi->param($field.'_null') ); + +    my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, $field); + +    next if $beginning == 0 && $ending == 4294967295 +       or $disable{$cgi->param('status')}->{$field}; + +    $search_hash{$field} = [ $beginning, $ending ]; + +  } + +  my $sql_query = FS::cust_pkg->search(\%search_hash); +  $sql_query->{'select'} = 'cust_pkg.pkgnum'; + +  foreach my $pkgnum (map { $_->pkgnum } qsearch($sql_query)) { +    my $cust_pkg = qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); +    $error = $cust_pkg->unsuspend; +  } + +} + +$cgi->param("error", substr($error, 0, 512)); # arbitrary length believed +                                              # suited for all supported +                                              # browsers +</%init>
\ No newline at end of file | 
