fix encryption upgrades when a payment is refunded, then deleted. RT#74270, RT#73085
authorIvan Kohler <ivan@freeside.biz>
Wed, 25 Jan 2017 19:26:46 +0000 (11:26 -0800)
committerIvan Kohler <ivan@freeside.biz>
Wed, 25 Jan 2017 19:26:46 +0000 (11:26 -0800)
FS/FS/cust_refund.pm

index 12ab0d6..2d5b3aa 100644 (file)
@@ -472,6 +472,19 @@ sub unapplied_sql {
 
 }
 
+sub _upgrade_schema {
+  #my ($class, %opts) = @_;
+
+  my $sql = 'UPDATE cust_refund SET source_paynum = NULL
+               WHERE source_paynum IS NOT NULL
+                 AND NOT EXISTS ( SELECT 1 FROM cust_pay
+                                    WHERE paynum = cust_refund.source_paynum )
+            ';
+  my $sth = dbh->prepare($sql) or die dbh->errstr;
+  $sth->execute or die $sth->errstr;
+  '';
+}
+
 # Used by FS::Upgrade to migrate to a new database.
 sub _upgrade_data {  # class method
   my ($class, %opts) = @_;