summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2017-02-18 14:21:03 -0800
committerIvan Kohler <ivan@freeside.biz>2017-02-18 14:21:03 -0800
commit717ed956e64cfc10f1e78e67b6c82dfcf212a18d (patch)
treec276ff86845aeddf3b5473e3ebe25d4ebaffc1be
parentd500b4af779a13e2fc862637fe67fe9394d5f286 (diff)
fix 4.x upgrades when an invoice with a discount was deleted instead of voided, RT#74611
-rw-r--r--FS/FS/cust_bill_pkg_discount.pm14
1 files changed, 14 insertions, 0 deletions
diff --git a/FS/FS/cust_bill_pkg_discount.pm b/FS/FS/cust_bill_pkg_discount.pm
index 616657a..2a638a9 100644
--- a/FS/FS/cust_bill_pkg_discount.pm
+++ b/FS/FS/cust_bill_pkg_discount.pm
@@ -2,6 +2,7 @@ package FS::cust_bill_pkg_discount;
use base qw( FS::cust_main_Mixin FS::Record );
use strict;
+use FS::Record qw( dbh );
=head1 NAME
@@ -185,6 +186,19 @@ sub description {
return $desc;
}
+sub _upgrade_schema {
+ my ($class, %opts) = @_;
+
+ my $sql = '
+ DELETE FROM cust_bill_pkg_discount WHERE NOT EXISTS
+ ( SELECT 1 FROM cust_bill_pkg WHERE cust_bill_pkg.billpkgnum = cust_bill_pkg_discount.billpkgnum )
+ ';
+
+ my $sth = dbh->prepare($sql) or die dbh->errstr;
+ $sth->execute or die $sth->errstr;
+ '';
+}
+
=back
=head1 BUGS