summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2017-03-08 20:38:18 -0800
committerIvan Kohler <ivan@freeside.biz>2017-03-08 20:38:18 -0800
commitdacdaebc0eeacb4705dd5d5f09563d711e81dfd3 (patch)
tree7e690842dff5fb4f82ea3ff7d156f6a0bcd786ed
parent492d9aec5230e9c562a7d1a78f4f24d7a27aceb8 (diff)
fix upgrade for cust_msg when a customer was deleted, RT#74298
-rw-r--r--FS/FS/Upgrade.pm1
-rw-r--r--FS/FS/cust_msg.pm23
2 files changed, 20 insertions, 4 deletions
diff --git a/FS/FS/Upgrade.pm b/FS/FS/Upgrade.pm
index 628b6f2bb..727663893 100644
--- a/FS/FS/Upgrade.pm
+++ b/FS/FS/Upgrade.pm
@@ -567,6 +567,7 @@ sub upgrade_schema_data {
#remove records referencing removed things with their FKs
'pkg_referral' => [],
'cust_bill_pkg_discount' => [],
+ 'cust_msg' => [],
#update records referencing removed things with their FKs
'cust_pkg' => [],
;
diff --git a/FS/FS/cust_msg.pm b/FS/FS/cust_msg.pm
index 5309e2533..2f78f3945 100644
--- a/FS/FS/cust_msg.pm
+++ b/FS/FS/cust_msg.pm
@@ -1,10 +1,9 @@
package FS::cust_msg;
+use base qw( FS::cust_main_Mixin FS::Record );
use strict;
-use base qw( FS::cust_main_Mixin FS::Record );
-use FS::Record qw( qsearch qsearchs );
+use FS::Record qw( dbh );
use MIME::Parser;
-use vars qw( @statuses );
=head1 NAME
@@ -72,7 +71,7 @@ sub table { 'cust_msg'; }
sub nohistory_fields { ('header', 'body'); }
# history is kind of pointless on this table
-@statuses = qw( prepared sent failed );
+our @statuses = qw( prepared sent failed );
=item insert
@@ -225,6 +224,22 @@ sub process_send {
die $error if $error;
}
+sub _upgrade_schema {
+ my ($class, %opts) = @_;
+
+ my $sql = '
+ DELETE FROM cust_msg WHERE NOT EXISTS
+ ( SELECT 1 FROM cust_main WHERE cust_main.custnum = cust_msg.custnum )
+ ';
+
+ my $sth = dbh->prepare($sql) or die dbh->errstr;
+ $sth->execute or die $sth->errstr;
+ '';
+
+}
+
+=back
+
=head1 SEE ALSO
L<FS::msg_template>, L<FS::cust_main>, L<FS::Record>.