4 my $curuser = $FS::CurrentUser::CurrentUser;
7 unless $curuser->access_right('Process batches')
8 || $curuser->access_right('Process global batches');
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
14 my %arg = $cgi->param('arg');
15 my $paybatchnum = $arg{'paybatchnum'};
16 $paybatchnum =~ /^\d+$/ or die "Illegal paybatchnum";
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',
25 my $search = ' WHERE ' . join(' AND ', @search);
26 die "permission denied" unless qsearchs({
27 'table' => 'cust_pay_batch',
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
35 my $server = new FS::UI::Web::JSRPC 'FS::cust_pay_batch::process_unbatch_and_delete', $cgi;