diff options
author | ivan <ivan> | 2011-08-05 19:26:53 +0000 |
---|---|---|
committer | ivan <ivan> | 2011-08-05 19:26:53 +0000 |
commit | f0f31ac563d2e3a4e70092845ee635eab0ee30c9 (patch) | |
tree | 812a166b55e89837e811573b809fba5f9b0527ec | |
parent | 044023db4dadfd8c12638d95bf775203a8c47396 (diff) |
fix double display of service links in bundled packages (and mis-alignment in customer search?), RT#13966
-rw-r--r-- | FS/FS/cust_pkg.pm | 16 | ||||
-rw-r--r-- | FS/FS/part_pkg.pm | 4 |
2 files changed, 14 insertions, 6 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index fba2de1e0..81800559c 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -1937,7 +1937,7 @@ sub extra_part_svc { my $self = shift; my $pkgnum = $self->pkgnum; - my $pkgpart = $self->pkgpart; + #my $pkgpart = $self->pkgpart; # qsearch( { # 'table' => 'part_svc', @@ -1956,23 +1956,27 @@ sub extra_part_svc { # 'extra_param' => [ [$self->pkgpart=>'int'], [$self->pkgnum=>'int'] ], # } ); -#seems to benchmark slightly faster... +#seems to benchmark slightly faster... (or did?) + + my @pkgparts = map $_->pkgpart, $self->part_pkg->self_and_svc_linked; + my $pkgparts = join(',', @pkgparts); + qsearch( { #'select' => 'DISTINCT ON (svcpart) part_svc.*', #MySQL doesn't grok DISINCT ON 'select' => 'DISTINCT part_svc.*', 'table' => 'part_svc', 'addl_from' => - 'LEFT JOIN pkg_svc ON ( pkg_svc.svcpart = part_svc.svcpart - AND pkg_svc.pkgpart = ? + "LEFT JOIN pkg_svc ON ( pkg_svc.svcpart = part_svc.svcpart + AND pkg_svc.pkgpart IN ($pkgparts) AND quantity > 0 ) LEFT JOIN cust_svc ON ( cust_svc.svcpart = part_svc.svcpart ) LEFT JOIN cust_pkg USING ( pkgnum ) - ', + ", 'hashref' => {}, 'extra_sql' => "WHERE pkgsvcnum IS NULL AND cust_pkg.pkgnum = ? ", - 'extra_param' => [ [$self->pkgpart=>'int'], [$self->pkgnum=>'int'] ], + 'extra_param' => [ [$self->pkgnum=>'int'] ], } ); } diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index 4a0d157ca..c4859476f 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -1067,6 +1067,10 @@ sub self_and_bill_linked { shift->_self_and_linked('bill', @_); } +sub self_and_svc_linked { + shift->_self_and_linked('svc', @_); +} + sub _self_and_linked { my( $self, $type, $hidden ) = @_; $hidden ||= ''; |