% if ( $cgi->param('lock_pkgpart') =~ /^([\d, ]+)$/ ) { % } % % if ( @part_pkg ) {

<% mt('First package') |h %> <% ntable("#cccccc") %> <& first_pkg/select-part_pkg.html, 'part_pkg' => \@part_pkg, 'first_svc' => \@first_svc, %opt, &> % } <%init> my( $cust_main, %opt ) = @_; # pry the wrong place for this logic. also pretty expensive #false laziness, copied from FS::cust_pkg::order my $pkgpart; my $agentnum = ''; my @agents = $FS::CurrentUser::CurrentUser->agents; if ( scalar(@agents) == 1 ) { # $pkgpart->{PKGPART} is true iff $custnum may purchase PKGPART $pkgpart = $agents[0]->pkgpart_hashref; $agentnum = $agents[0]->agentnum; } elsif ( $cgi->param('lock_agentnum') =~ /^(\d+)$/ && $FS::CurrentUser::CurrentUser->agentnum($1) ) { $agentnum = $1; my $agent = (grep { $_->agentnum == $agentnum } @agents)[0]; $pkgpart = $agent->pkgpart_hashref; } else { #can't know (agent not chosen), so, allow all $agentnum = 'all'; my %typenum; foreach my $agent ( @agents ) { next if $typenum{$agent->typenum}++; $pkgpart->{$_}++ foreach keys %{ $agent->pkgpart_hashref } } } #eslaf my @part_pkg = (); if ( $cgi->param('lock_pkgpart') =~ /^([\d, ]+)$/ ) { my $lock_pkgpart = $1; @part_pkg = qsearch({ 'table' => 'part_pkg', 'hashref' => { 'disabled' => '' }, 'extra_sql' => "AND pkgpart IN ($lock_pkgpart)", 'order_by' => 'ORDER BY pkg', # case? }); } else { @part_pkg = qsearch( 'part_pkg', { 'disabled' => '' }, '', 'ORDER BY pkg' ); # case? } my @first_svc = ( 'svc_acct', 'svc_phone', 'svc_dsl' ); @part_pkg = grep { $_->svcpart(\@first_svc) && ( $pkgpart->{ $_->pkgpart } || $agentnum eq 'all' || ( $agentnum ne 'all' && $agentnum && $_->agentnum && $_->agentnum == $agentnum ) ) } @part_pkg;