diff options
author | ivan <ivan> | 2008-04-16 21:12:38 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-04-16 21:12:38 +0000 |
commit | 54e557ff60c8c11f3666c4f6acc33ebe8aa4b8ff (patch) | |
tree | f062aa3f3dd0f490e718c79637ac5d760fcf3a3e | |
parent | 9416ea00fca06f52c71c95968ecf00bfa2a57f1c (diff) |
implement service add-ons
-rw-r--r-- | FS/FS/part_pkg.pm | 36 | ||||
-rwxr-xr-x | httemplate/browse/part_pkg.cgi | 2 |
2 files changed, 33 insertions, 5 deletions
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index 3b5764200..96bd019a6 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -491,18 +491,46 @@ sub agent { qsearchs('agent', { 'agentnum' => $self->agentnum } ); } -=item pkg_svc +=item pkg_svc [ HASHREF | OPTION => VALUE ] Returns all FS::pkg_svc objects (see L<FS::pkg_svc>) for this package definition (with non-zero quantity). +One option is available, I<disable_linked>. If set true it will return the +services for this package definition alone, omitting services from any add-on +packages. + =cut sub pkg_svc { my $self = shift; - #sort { $b->primary cmp $a->primary } - grep { $_->quantity } - qsearch( 'pkg_svc', { 'pkgpart' => $self->pkgpart } ); + +# #sort { $b->primary cmp $a->primary } +# grep { $_->quantity } +# qsearch( 'pkg_svc', { 'pkgpart' => $self->pkgpart } ); + + my $opt = ref($_[0]) ? $_[0] : { @_ }; + my %pkg_svc = map { $_->svcpart => $_ } + grep { $_->quantity } + qsearch( 'pkg_svc', { 'pkgpart' => $self->pkgpart } ); + + unless ( $opt->{disable_linked} ) { + foreach my $dst_pkg ( map $_->dst_pkg, $self->svc_part_pkg_link ) { + my @pkg_svc = grep { $_->quantity } + qsearch( 'pkg_svc', { pkgpart=>$dst_pkg->pkgpart } ); + foreach my $pkg_svc ( @pkg_svc ) { + if ( $pkg_svc{$pkg_svc->svcpart} ) { + my $quantity = $pkg_svc{$pkg_svc->svcpart}->quantity; + $pkg_svc{$pkg_svc->svcpart}->quantity($quantity + $pkg_svc->quantity); + } else { + $pkg_svc{$pkg_svc->svcpart} = $pkg_svc; + } + } + } + } + + values(%pkg_svc); + } =item svcpart [ SVCDB ] diff --git a/httemplate/browse/part_pkg.cgi b/httemplate/browse/part_pkg.cgi index 45fa8f216..478d4a6d4 100755 --- a/httemplate/browse/part_pkg.cgi +++ b/httemplate/browse/part_pkg.cgi @@ -278,7 +278,7 @@ push @fields, sort { $b->primary_svc =~ /^Y/i <=> $a->primary_svc =~ /^Y/i } - $part_pkg->pkg_svc + $part_pkg->pkg_svc('disable_linked'=>1) ), ( map { my $dst_pkg = $_->dst_pkg; |