Optimize "Customer has a referring customer" condition, RT#74452
[freeside.git] / httemplate / misc / process / delete-cust_pay_batch.cgi
1 <% $server->process %>
2 <%init>
3
4 my $curuser = $FS::CurrentUser::CurrentUser;
5
6 die "access denied"
7   unless $curuser->access_right('Process batches')
8       || $curuser->access_right('Process global batches');
9
10 # look up paybatch using agentnums_sql & status constraints
11 # to validate access for this particular cust_pay_batch,
12 # similar to how it's done in cust_pay_batch.cgi
13
14 my %arg = $cgi->param('arg');
15 my $paybatchnum = $arg{'paybatchnum'};
16 $paybatchnum =~ /^\d+$/ or die "Illegal paybatchnum";
17 my @search = ();
18 push @search, 'cust_pay_batch.paybatchnum = ' . $paybatchnum;
19 push @search, '(cust_pay_batch.status = \'\' OR cust_pay_batch.status IS NULL)';
20 push @search, 'pay_batch.status = \'O\'';
21 push @search, $curuser->agentnums_sql({ table => 'cust_main' });
22 push @search, $curuser->agentnums_sql({ table      => 'pay_batch',
23                                         null_right => 'Process global batches',
24                                      });
25 my $search = ' WHERE ' . join(' AND ', @search);
26 die "permission denied" unless qsearchs({
27   'table'     => 'cust_pay_batch',
28   'hashref'   => {},
29   'addl_from' => 'LEFT JOIN pay_batch USING ( batchnum ) '.
30                  'LEFT JOIN cust_main USING ( custnum ) '.
31                  'LEFT JOIN cust_pay  USING ( batchnum, custnum ) ',
32   'extra_sql' => $search
33 });
34
35 my $server = new FS::UI::Web::JSRPC 'FS::cust_pay_batch::process_unbatch_and_delete', $cgi; 
36
37 </%init>