RT# 82949 - changes section name from fees to pricing, better opiton
[freeside.git] / bin / cust_pay_batch_refund_delete
1 #!/usr/bin/perl
2
3 use FS::UID qw( adminsuidsetup );
4 use FS::Record qw( qsearch qsearchs );
5 use FS::cust_pay_refund;
6 use Data::Dumper;
7
8 adminsuidsetup shift or die usage();
9
10 ## get a list of all refunds in batches.
11
12 my $extrasql = " LEFT JOIN pay_batch USING ( batchnum ) WHERE cust_pay_batch.paycode = 'C' AND pay_batch.download IS NULL";
13
14 my @batch_refunds = qsearch({
15   'table'   => 'cust_pay_batch',
16   'select'  => 'cust_pay_batch.*',
17   'extra_sql' => $extrasql,
18 });
19
20 warn "found ".scalar @batch_refunds." batch refunds.\n";
21 warn "Searching for their cust refunds...\n" if (scalar @batch_refunds > 0);
22
23
24 ## find the cust_pay_refund for all those
25 foreach (@batch_refunds) {
26         my $extra_batch_refund_sql = " WHERE custnum = '".$_->{Hash}->{custnum}."' AND refund = '".$_->{Hash}->{amount}."' ORDER BY _date DESC LIMIT 1";
27         my $cust_refund = qsearchs({ 
28        'table'  => 'cust_refund',
29        'extra_sql' => $extra_batch_refund_sql,
30         });
31
32         warn "found cust refund number ".$cust_refund->{Hash}->{refundnum}.", now to delete it.\n" if $cust_refund;
33
34         ## delete the cust_pay_refund
35         my $delete_cust_refund_error = $cust_refund->delete if $cust_refund;
36         warn "could not delete cust refund $delete_cust_refund_error\n" if $delete_cust_refund_error;
37
38      ## delete the refund from the batch.
39      unless ($delete_cust_refund_error) {
40         my $delete_cust_pay_batch_error = $_->unbatch_and_delete;
41         warn "could not delete cust refund $delete_cust_pay_batch_error\n" if $delete_cust_pay_batch_error;
42      }
43
44      if ($delete_cust_refund_error || $delete_cust_pay_batch_error) { die "Could no delete cust_pay_batch refund\n"; }
45      else { warn "cust refund ".$cust_refund->{Hash}->{refundnum}." deleted\n"; }
46 }
47
48
49
50 warn "all done!\n";
51
52 sub usage {
53   "Usage: Call script as user freeside\n Example: cust_pay_batch_refund_delete <freeside username> ";
54 }