service and package disable!
[freeside.git] / httemplate / edit / cust_pkg.cgi
1 <%
2 #<!-- $Id: cust_pkg.cgi,v 1.5 2001-12-27 09:26:14 ivan Exp $ -->
3
4 use strict;
5 use vars qw( $cgi %pkg %comment $custnum $p1 @cust_pkg 
6              $cust_main $agent $type_pkgs $count %remove_pkg $pkgparts );
7 use CGI;
8 use CGI::Carp qw(fatalsToBrowser);
9 use FS::UID qw(cgisuidsetup);
10 use FS::Record qw(qsearch qsearchs);
11 use FS::CGI qw(header popurl);
12 use FS::part_pkg;
13 use FS::type_pkgs;
14
15 $cgi = new CGI;
16 &cgisuidsetup($cgi);
17
18 %pkg = ();
19 %comment = ();
20 foreach (qsearch('part_pkg', { 'disabled' => '' })) {
21   $pkg{ $_ -> getfield('pkgpart') } = $_->getfield('pkg');
22   $comment{ $_ -> getfield('pkgpart') } = $_->getfield('comment');
23 }
24
25 if ( $cgi->param('error') ) {
26   $custnum = $cgi->param('custnum');
27   %remove_pkg = map { $_ => 1 } $cgi->param('remove_pkg');
28 } else {
29   my($query) = $cgi->keywords;
30   $query =~ /^(\d+)$/;
31   $custnum = $1;
32   undef %remove_pkg;
33 }
34
35 $p1 = popurl(1);
36 print header("Add/Edit Packages", '');
37
38 print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
39       "</FONT>"
40   if $cgi->param('error');
41
42 print qq!<FORM ACTION="${p1}process/cust_pkg.cgi" METHOD=POST>!;
43
44 print qq!<INPUT TYPE="hidden" NAME="custnum" VALUE="$custnum">!;
45
46 #current packages
47 @cust_pkg = qsearch('cust_pkg',{ 'custnum' => $custnum, 'cancel' => '' } );
48
49 if (@cust_pkg) {
50   print <<END;
51 Current packages - select to remove (services are moved to a new package below)
52 <BR><BR>
53 END
54
55   my ($count) = 0 ;
56   print qq!<TABLE>! ;
57   foreach (@cust_pkg) {
58     print '<TR>' if $count == 0;
59     my($pkgnum,$pkgpart)=( $_->getfield('pkgnum'), $_->getfield('pkgpart') );
60     print qq!<TD><INPUT TYPE="checkbox" NAME="remove_pkg" VALUE="$pkgnum"!;
61     print " CHECKED" if $remove_pkg{$pkgnum};
62     print qq!>$pkgnum: $pkg{$pkgpart} - $comment{$pkgpart}</TD>\n!;
63     $count ++ ;
64     if ($count == 2)
65     {
66       $count = 0 ;
67       print qq!</TR>\n! ;
68     }
69   }
70   print qq!</TABLE><BR><BR>!;
71 }
72
73 print <<END;
74 Order new packages<BR><BR>
75 END
76
77 $cust_main = qsearchs('cust_main',{'custnum'=>$custnum});
78 $agent = qsearchs('agent',{'agentnum'=> $cust_main->agentnum });
79
80 $count = 0;
81 $pkgparts = 0;
82 print qq!<TABLE>!;
83 foreach $type_pkgs ( qsearch('type_pkgs',{'typenum'=> $agent->typenum }) ) {
84   $pkgparts++;
85   my($pkgpart)=$type_pkgs->pkgpart;
86   next unless exists $pkg{$pkgpart}; #skip disabled ones
87   print qq!<TR>! if ( $count == 0 );
88   my $value = $cgi->param("pkg$pkgpart") || 0;
89   print <<END;
90   <TD>
91   <INPUT TYPE="text" NAME="pkg$pkgpart" VALUE="$value" SIZE="2" MAXLENGTH="2">
92   $pkgpart: $pkg{$pkgpart} - $comment{$pkgpart}</TD>\n
93 END
94   $count ++ ;
95   if ( $count == 2 ) {
96     print qq!</TR>\n! ;
97     $count = 0;
98   }
99 }
100 print qq!</TABLE>!;
101
102 unless ( $pkgparts ) {
103   my $p2 = popurl(2);
104   my $typenum = $agent->typenum;
105   my $agent_type = qsearchs( 'agent_type', { 'typenum' => $typenum } );
106   my $atype = $agent_type->atype;
107   print <<END;
108 (No <a href="${p2}browse/part_pkg.cgi">package definitions</a>, or agent type
109 <a href="${p2}edit/agent_type.cgi?$typenum">$atype</a> not allowed to purchase
110 any packages.)
111 END
112 }
113
114 #submit
115 print <<END;
116 <P><INPUT TYPE="submit" VALUE="Order">
117     </FORM>
118   </BODY>
119 </HTML>
120 END
121 %>