[freeside-commits] branch master updated. 0549def83bcba56e53482ea0f33472e18b215649
Ivan
ivan at 420.am
Tue Jan 31 18:47:42 PST 2017
The branch, master has been updated
via 0549def83bcba56e53482ea0f33472e18b215649 (commit)
from ed33058882b17e252dba3bd27051daeb0773f02b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 0549def83bcba56e53482ea0f33472e18b215649
Author: Ivan Kohler <ivan at freeside.biz>
Date: Tue Jan 31 18:45:44 2017 -0800
add condition_sql optimization to "Customer does not have uncancelled package of specified definitions, RT#74449
diff --git a/FS/FS/part_event/Condition/hasnt_pkgpart.pm b/FS/FS/part_event/Condition/hasnt_pkgpart.pm
index 421d023..79104eb 100644
--- a/FS/FS/part_event/Condition/hasnt_pkgpart.pm
+++ b/FS/FS/part_event/Condition/hasnt_pkgpart.pm
@@ -22,19 +22,30 @@ sub option_fields {
);
}
+#false laziness w/has_pkgpart.pm
+
sub condition {
my( $self, $object ) = @_;
my $cust_main = $self->cust_main($object);
- #XXX test
my $unless_pkgpart = $self->option('unless_pkgpart') || {};
! grep $unless_pkgpart->{ $_->pkgpart }, $cust_main->ncancelled_pkgs;
}
-#XXX
-#sub condition_sql {
-#
-#}
+sub condition_sql {
+ my( $self, $table ) = @_;
+
+ 'NOT '.
+ 'ARRAY'. $self->condition_sql_option_option_integer('unless_pkgpart').
+ ' && '. #overlap (have elements in common)
+ 'ARRAY( SELECT pkgpart FROM cust_pkg AS has_pkgpart_cust_pkg
+ WHERE has_pkgpart_cust_pkg.custnum = cust_main.custnum
+ AND ( has_pkgpart_cust_pkg.cancel IS NULL
+ OR has_pkgpart_cust_pkg.cancel = 0
+ )
+ )
+ ';
+}
1;
-----------------------------------------------------------------------
Summary of changes:
FS/FS/part_event/Condition/hasnt_pkgpart.pm | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
More information about the freeside-commits
mailing list