summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Burger <burgerc@freeside.biz>2019-03-01 02:05:51 -0500
committerChristopher Burger <burgerc@freeside.biz>2019-03-01 02:05:51 -0500
commitae27246c0cab56f6935c47148e6ae54ec25b2238 (patch)
treee582c85c9f15993d57ae4a4706cf3359e5a41f14
parent8b2094d8837af641d3d28b7a76fa460c7d85456e (diff)
RT# 82955 - add script to un refund electronic refunds in batch file
-rwxr-xr-xbin/cust_pay_batch_refund_delete54
1 files changed, 54 insertions, 0 deletions
diff --git a/bin/cust_pay_batch_refund_delete b/bin/cust_pay_batch_refund_delete
new file mode 100755
index 0000000..c1ddba4
--- /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 <freeside username> ";
+} \ No newline at end of file