Initial revision
[freeside.git] / htdocs / edit / part_pkg.cgi
1 #!/usr/bin/perl -Tw
2 #
3 # part_pkg.cgi: Add/Edit package (output form)
4 #
5 # ivan@sisd.com 97-dec-10
6 #
7 # Changes to allow page to work at a relative position in server
8 # Changed to display services 2-wide in table
9 #       bmccane@maxbaud.net     98-apr-3
10 #
11 # use FS::CGI, added inline documentation ivan@sisd.com 98-jul-12
12
13 use strict;
14 use CGI::Base;
15 use CGI::Carp qw(fatalsToBrowser);
16 use FS::UID qw(cgisuidsetup);
17 use FS::Record qw(qsearch qsearchs);
18 use FS::part_pkg;
19 use FS::pkg_svc;
20 use FS::CGI qw(header menubar);
21
22 my($cgi) = new CGI::Base;
23 $cgi->get;
24
25 &cgisuidsetup($cgi);
26
27 SendHeaders(); # one guess.
28
29 my($part_pkg,$action);
30 if ( $cgi->var('QUERY_STRING') =~ /^(\d+)$/ ) { #editing
31   $part_pkg=qsearchs('part_pkg',{'pkgpart'=>$1});
32   $action='Edit';
33 } else { #adding
34   $part_pkg=create FS::part_pkg {};
35   $action='Add';
36 }
37 my($hashref)=$part_pkg->hashref;
38
39 print header("$action Package Definition", menubar(
40   'Main Menu' => '../',
41   'View all packages' => '../browse/part_pkg.cgi',
42 )), '<FORM ACTION="process/part_pkg.cgi" METHOD=POST>';
43
44 print qq!<INPUT TYPE="hidden" NAME="pkgpart" VALUE="$hashref->{pkgpart}">!,
45       "Package Part #", $hashref->{pkgpart} ? $hashref->{pkgpart} : "(NEW)";
46
47 print <<END;
48 <PRE>
49 Package (customer-visable)          <INPUT TYPE="text" NAME="pkg" SIZE=32 VALUE="$hashref->{pkg}">
50 Comment (customer-hidden)           <INPUT TYPE="text" NAME="comment" SIZE=32 VALUE="$hashref->{comment}">
51 Setup fee for this package          <INPUT TYPE="text" NAME="setup" VALUE="$hashref->{setup}">
52 Recurring fee for this package      <INPUT TYPE="text" NAME="recur" VALUE="$hashref->{recur}">
53 Frequency (months) of recurring fee <INPUT TYPE="text" NAME="freq" VALUE="$hashref->{freq}">
54
55 </PRE>
56
57 Enter the quantity of each service this package includes.<BR><BR>
58 <TABLE BORDER><TR><TH><FONT SIZE=-1>Quan.</FONT></TH><TH>Service</TH>
59                   <TH><FONT SIZE=-1>Quan.</FONT></TH><TH>Service</TH></TR>
60 END
61
62 my($part_svc);
63 my($count) = 0 ;
64 foreach $part_svc ( qsearch('part_svc',{}) ) {
65
66   my($svcpart)=$part_svc->getfield('svcpart');
67   my($pkg_svc)=qsearchs('pkg_svc',{
68     'pkgpart'  => $part_pkg->getfield('pkgpart'),
69     'svcpart'  => $svcpart,
70   })  || create FS::pkg_svc({
71     'pkgpart'  => $part_pkg->getfield('pkgpart'),
72     'svcpart'  => $svcpart,
73     'quantity' => 0,
74   });
75   next unless $pkg_svc;
76
77   print qq!<TR>! if $count == 0 ;
78   print qq!<TD><INPUT TYPE="text" NAME="pkg_svc$svcpart" SIZE=3 VALUE="!,
79         $pkg_svc->getfield('quantity') || 0,qq!"></TD>!,
80         qq!<TD><A HREF="part_svc.cgi?!,$part_svc->getfield('svcpart'),
81         qq!">!, $part_svc->getfield('svc'), "</A></TD>";
82   $count ++ ;
83   if ($count == 2)
84   {
85     print qq!</TR>! ;
86     $count = 0 ;
87   }
88 }
89 print qq!</TR>! if ($count != 0) ;
90
91 print "</TABLE>";
92
93 print qq!<BR><INPUT TYPE="submit" VALUE="!,
94       $hashref->{pkgpart} ? "Apply changes" : "Add package",
95       qq!">!;
96
97 print <<END;
98     </FORM>
99   </BODY>
100 </HTML>
101 END
102