From: Christopher Burger Date: Fri, 1 Mar 2019 07:05:51 +0000 (-0500) Subject: RT# 82955 - add script to un refund electronic refunds in batch file X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=ae27246c0cab56f6935c47148e6ae54ec25b2238;hp=8b2094d8837af641d3d28b7a76fa460c7d85456e RT# 82955 - add script to un refund electronic refunds in batch file --- diff --git a/bin/cust_pay_batch_refund_delete b/bin/cust_pay_batch_refund_delete new file mode 100755 index 000000000..c1ddba449 --- /dev/null +++ b/bin/cust_pay_batch_refund_delete @@ -0,0 +1,54 @@ +#!/usr/bin/perl + +use FS::UID qw( adminsuidsetup ); +use FS::Record qw( qsearch qsearchs ); +use FS::cust_pay_refund; +use Data::Dumper; + +adminsuidsetup shift or die usage(); + +## get a list of all refunds in batches. + +my $extrasql = " LEFT JOIN pay_batch USING ( batchnum ) WHERE cust_pay_batch.paycode = 'C' AND pay_batch.download IS NULL"; + +my @batch_refunds = qsearch({ + 'table' => 'cust_pay_batch', + 'select' => 'cust_pay_batch.*', + 'extra_sql' => $extrasql, +}); + +warn "found ".scalar @batch_refunds." batch refunds.\n"; +warn "Searching for their cust refunds...\n" if (scalar @batch_refunds > 0); + + +## find the cust_pay_refund for all those +foreach (@batch_refunds) { + my $extra_batch_refund_sql = " WHERE custnum = '".$_->{Hash}->{custnum}."' AND refund = '".$_->{Hash}->{amount}."' ORDER BY _date DESC LIMIT 1"; + my $cust_refund = qsearchs({ + 'table' => 'cust_refund', + 'extra_sql' => $extra_batch_refund_sql, + }); + + warn "found cust refund number ".$cust_refund->{Hash}->{refundnum}.", now to delete it.\n"; + + ## delete the cust_pay_refund + my $delete_cust_refund_error = $cust_refund->delete; + warn "could not delete cust refund $delete_cust_refund_error\n" if $delete_cust_refund_error; + + ## delete the refund from the batch. + unless ($delete_cust_refund_error) { + my $delete_cust_pay_batch_error = $_->delete; + warn "could not delete cust refund $delete_cust_pay_batch_error\n" if $delete_cust_pay_batch_error; + } + + if ($delete_cust_refund_error || $delete_cust_pay_batch_error) { die "Could no delete cust_pay_batch refund\n"; } + else { warn "cust refund ".$cust_refund->{Hash}->{refundnum}." deleted\n"; } +} + + + +warn "all done!\n"; + +sub usage { + "Usage: Call script as user freeside\n Example: cust_pay_batch_refund_delete "; +} \ No newline at end of file