diff options
| author | ivan <ivan> | 2011-08-05 19:26:57 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2011-08-05 19:26:57 +0000 | 
| commit | 6e2d87efaf0e4a77d883c48779204b1750dacc35 (patch) | |
| tree | a13d0931d1d201b2322503d0646cc167602bf0b2 /FS | |
| parent | 8b5523620f408c72a3e0fac002d3135839f3c959 (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.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 ||= '';  | 
