summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorivan <ivan>2011-08-05 19:27:01 +0000
committerivan <ivan>2011-08-05 19:27:01 +0000
commitea4fcd69d517caea9b223996332727607649ea3a (patch)
tree2aa7c166f3e7409cc61fcdb8e2ac7236da49ea67 /FS
parentb7d483c833537c23e031a222f72cc48edf15f349 (diff)
fix double display of service links in bundled packages (and mis-alignment in customer search?), RT#13966
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/cust_pkg.pm16
-rw-r--r--FS/FS/part_pkg.pm4
2 files changed, 14 insertions, 6 deletions
diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index b9b58e537..08e8b2b09 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -1931,7 +1931,7 @@ sub extra_part_svc {
my $self = shift;
my $pkgnum = $self->pkgnum;
- my $pkgpart = $self->pkgpart;
+ #my $pkgpart = $self->pkgpart;
# qsearch( {
# 'table' => 'part_svc',
@@ -1950,23 +1950,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 66ce36e03..f658dcf99 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -975,6 +975,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 ||= '';