X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fcust_pkg.cgi;h=7ffbb1fc0e2da2fe81b40ed6523af6ce04ae8685;hp=174d4dde171027b87bd5d93cc846d67a68a27575;hb=5f563d5ac7e6e1e93cca382baa42ee106f3db5a0;hpb=2c757d7db4cb6a7b9655de13206fcc84fb7ce61f diff --git a/httemplate/edit/cust_pkg.cgi b/httemplate/edit/cust_pkg.cgi index 174d4dde1..7ffbb1fc0 100755 --- a/httemplate/edit/cust_pkg.cgi +++ b/httemplate/edit/cust_pkg.cgi @@ -1,50 +1,13 @@ -<% +<% include('/elements/header.html', "Add/Edit Packages", '') %> -my %pkg = (); -my %comment = (); -my %all_pkg = (); -my %all_comment = (); -#foreach (qsearch('part_pkg', { 'disabled' => '' })) { -# $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); -# $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); -#} -foreach (qsearch('part_pkg', {} )) { - $all_pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); - $all_comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); - next if $_->disabled; - $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); - $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); -} - -my($custnum, %remove_pkg); -if ( $cgi->param('error') ) { - $custnum = $cgi->param('custnum'); - %remove_pkg = map { $_ => 1 } $cgi->param('remove_pkg'); -} else { - my($query) = $cgi->keywords; - $query =~ /^(\d+)$/; - $custnum = $1; - %remove_pkg = (); -} - -my $p1 = popurl(1); - -%><%= include('/elements/header.html', "Add/Edit Packages", '') %> +<% include('/elements/error.html') %> -<% if ( $cgi->param('error') ) { %> - Error: <%= $cgi->param('error') %> -<% } %> +
+ + - - - - -<% -#current packages -my @cust_pkg = qsearch('cust_pkg', { 'custnum' => $custnum, 'cancel' => '' } ); - -if (@cust_pkg) { -%> +%#current packages +%if (@cust_pkg) { Current packages - select to remove (services are moved to a new package below) @@ -53,98 +16,155 @@ if (@cust_pkg) {

+% +% foreach ( @main_pkgs ) { +% my($pkgnum,$pkgpart)=( $_->getfield('pkgnum'), $_->getfield('pkgpart') ); +% my $checked = $remove_pkg{$pkgnum} ? ' CHECKED' : ''; +% +% - <% - - foreach ( sort { $all_pkg{ $a->getfield('pkgpart') } - cmp $all_pkg{ $b->getfield('pkgpart') } - } - @cust_pkg - ) - { - my($pkgnum,$pkgpart)=( $_->getfield('pkgnum'), $_->getfield('pkgpart') ); - my $checked = $remove_pkg{$pkgnum} ? ' CHECKED' : ''; - - %> - - - + + + + +% foreach my $supp_pkg ( @{ $supp_pkgs_of{$pkgnum} } ) { + + + + +% } +% } - <% } %>
Package description
><%= $pkgnum %>:<%= $all_pkg{$pkgpart} %> - <%= $all_comment{$pkgpart} %>><% $pkgnum %>:<% $all_pkg{$pkgpart} |h %> - <% $all_comment{$pkgpart} |h %>
+ <% $all_pkg{$supp_pkg->pkgpart} |h %> - <% $all_comment{$supp_pkg->pkgpart} |h %>


+% } -<% } %> Order new packages

-<% -my $cust_main = qsearchs('cust_main',{'custnum'=>$custnum}); -my $agent = qsearchs('agent',{'agentnum'=> $cust_main->agentnum }); - -my %agent_pkgs = map { ( $_->pkgpart , $all_pkg{$_->pkgpart} ) } - qsearch('type_pkgs',{'typenum'=> $agent->typenum }); - -my $count = 0; -my $pkgparts = 0; -%> +%my $cust_main = qsearchs('cust_main',{'custnum'=>$custnum}); +%my $agent = qsearchs('agent',{'agentnum'=> $cust_main->agentnum }); +% +%my %agent_pkgs = map { ( $_->pkgpart => $all_pkg{$_->pkgpart} ) } +% ( qsearch('type_pkgs',{ typenum => $agent->typenum }), +% qsearch('part_pkg', { agentnum => $cust_main->agentnum }), +% ); +% +%my $count = 0; +%my $pkgparts = 0; +% +%#foreach my $type_pkgs ( qsearch('type_pkgs',{'typenum'=> $agent->typenum }) ) { +%foreach my $pkgpart ( sort { $agent_pkgs{$a} cmp $agent_pkgs{$b} } +% keys(%agent_pkgs) ) { +% $pkgparts++; +% next unless exists $pkg{$pkgpart}; #skip disabled ones +% #print qq!! if ( $count == 0 ); +% my $value = $cgi->param("pkg$pkgpart") || 0; +% -<% -#foreach my $type_pkgs ( qsearch('type_pkgs',{'typenum'=> $agent->typenum }) ) { -foreach my $pkgpart ( sort { $agent_pkgs{$a} cmp $agent_pkgs{$b} } - keys(%agent_pkgs) ) { - $pkgparts++; - next unless exists $pkg{$pkgpart}; #skip disabled ones - #print qq!! if ( $count == 0 ); - my $value = $cgi->param("pkg$pkgpart") || 0; -%> - - + + +% +% $count ++ ; +% #if ( $count == 2 ) { +% # print qq!\n! ; +% # $count = 0; +% #} +%} +% -<% - $count ++ ; - #if ( $count == 2 ) { - # print qq!\n! ; - # $count = 0; - #} -} -%>
Qty. Package Description
- " VALUE="<%= $value %>" SIZE="2" MAXLENGTH="2"> + " VALUE="<% $value %>" SIZE="2" MAXLENGTH="2"> <%= $pkgpart %>:<%= $pkg{$pkgpart} %> - <%= $comment{$pkgpart}%><% $pkgpart %>:<% $pkg{$pkgpart} |h %> - <% $comment{$pkgpart} |h %>
+% unless ( $pkgparts ) { +% my $p2 = popurl(2); +% my $typenum = $agent->typenum; +% my $agent_type = qsearchs( 'agent_type', { 'typenum' => $typenum } ); +% my $atype = $agent_type->atype; +% -<% unless ( $pkgparts ) { - my $p2 = popurl(2); - my $typenum = $agent->typenum; - my $agent_type = qsearchs( 'agent_type', { 'typenum' => $typenum } ); - my $atype = $agent_type->atype; -%> - (No package definitions, + (No package definitions, or agent type - <%= $atype %> + <% $atype %> is not allowed to purchase any packages.) +% } -<% } %>

-<%= include('/elements/footer.html') %> +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Bulk change customer packages'); + +my %pkg = (); +my %comment = (); +my %all_pkg = (); +my %all_comment = (); +#foreach (qsearch('part_pkg', { 'disabled' => '' })) { +# $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); +# $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment'); +#} +foreach (qsearch('part_pkg', {} )) { + $all_pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); + $all_comment{ $_ -> getfield('pkgpart') } = $_->custom_comment; + next if $_->disabled; + $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg'); + $comment{ $_ -> getfield('pkgpart') } = $_->custom_comment; +} + +my($custnum, %remove_pkg); +if ( $cgi->param('error') ) { + $custnum = $cgi->param('custnum'); + %remove_pkg = map { $_ => 1 } $cgi->param('remove_pkg'); +} else { + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/; + $custnum = $1; + %remove_pkg = (); +} + +my $p1 = popurl(1); + +my @cust_pkg = qsearch('cust_pkg', { 'custnum' => $custnum, 'cancel' => '' } ); +my @main_pkgs; +my %supp_pkgs_of; # main pkgnum => arrayref of cust_pkgs + + +foreach my $cust_pkg + ( sort { $all_pkg{ $a->pkgpart } cmp $all_pkg{ $b->getfield('pkgpart') } } + @cust_pkg + ) + # XXX does not properly handle recursive supplemental links +{ + if ( my $main_pkgnum = $cust_pkg->main_pkgnum ) { + $supp_pkgs_of{$main_pkgnum} ||= []; + push @{ $supp_pkgs_of{$main_pkgnum} }, $cust_pkg; + } else { + push @main_pkgs, $cust_pkg; + $supp_pkgs_of{$cust_pkg->pkgnum} ||= []; + } +} + +