1 <!-- $Id: part_pkg.cgi,v 1.3 2001-10-11 17:44:33 ivan Exp $ -->
3 <% my $plan = 'flat'; %>
6 function visualize(what) {
7 if (document.getElementById) {
8 document.getElementById('d<%= $plan %>').style.visibility = "visible";
10 document.l<%= $plan %>.visibility = "visible";
21 if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {
22 $cgi->param('clone', $1);
24 $cgi->param('clone', '');
26 if ( $cgi->param('pkgnum') && $cgi->param('pkgnum') =~ /^(\d+)$/ ) {
27 $cgi->param('pkgnum', $1);
29 $cgi->param('pkgnum', '');
32 my ($query) = $cgi->keywords;
35 if ( $cgi->param('error') ) {
36 $part_pkg = new FS::part_pkg ( {
37 map { $_, scalar($cgi->param($_)) } fields('part_pkg')
40 if ( $cgi->param('clone') ) {
41 $action='Custom Pricing';
43 qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } );
44 $part_pkg ||= $old_part_pkg->clone;
45 } elsif ( $query && $query =~ /^(\d+)$/ ) {
46 $part_pkg ||= qsearchs('part_pkg',{'pkgpart'=>$1});
48 $part_pkg ||= new FS::part_pkg {};
50 $action ||= $part_pkg->pkgpart ? 'Edit' : 'Add';
51 my $hashref = $part_pkg->hashref;
53 print header("$action Package Definition", menubar(
54 'Main Menu' => popurl(2),
55 'View all packages' => popurl(2). 'browse/part_pkg.cgi',
58 print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
60 if $cgi->param('error');
62 #print '<FORM ACTION="', popurl(1), 'process/part_pkg.cgi" METHOD=POST>';
63 print '<FORM NAME="dummy">';
65 #if ( $cgi->param('clone') ) {
66 # print qq!<INPUT TYPE="hidden" NAME="clone" VALUE="!, $cgi->param('clone'), qq!">!;
68 #if ( $cgi->param('pkgnum') ) {
69 # print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="!, $cgi->param('pkgnum'), qq!">!;
72 #print qq!<INPUT TYPE="hidden" NAME="pkgpart" VALUE="$hashref->{pkgpart}">!,
73 print "Package Part #", $hashref->{pkgpart} ? $hashref->{pkgpart} : "(NEW)";
77 Package (customer-visable) <INPUT TYPE="text" NAME="pkg" SIZE=32 VALUE="$hashref->{pkg}">
78 Comment (customer-hidden) <INPUT TYPE="text" NAME="comment" SIZE=32 VALUE="$hashref->{comment}">
80 Frequency (months) of recurring fee <INPUT TYPE="text" NAME="freq" VALUE="$hashref->{freq}">
86 unless ( $cgi->param('clone') ) {
88 Enter the quantity of each service this package includes.<BR><BR>
89 <TABLE BORDER><TR><TH><FONT SIZE=-1>Quan.</FONT></TH><TH>Service</TH>
90 <TH><FONT SIZE=-1>Quan.</FONT></TH><TH>Service</TH></TR>
96 foreach my $part_svc ( ( qsearch( 'part_svc', {} ) ) ) {
97 my $svcpart = $part_svc->svcpart;
98 my $pkg_svc = qsearchs( 'pkg_svc', {
99 'pkgpart' => $cgi->param('clone') || $part_pkg->pkgpart,
100 'svcpart' => $svcpart,
101 } ) || new FS::pkg_svc ( {
102 'pkgpart' => $cgi->param('clone') || $part_pkg->pkgpart,
103 'svcpart' => $svcpart,
106 #? #next unless $pkg_svc;
108 push @fixups, "pkg_svc$svcpart";
110 unless ( defined ($cgi->param('clone')) && $cgi->param('clone') ) {
111 print '<TR>' if $count == 0 ;
112 print qq!<TD><INPUT TYPE="text" NAME="pkg_svc$svcpart" SIZE=3 VALUE="!,
113 $cgi->param("pkg_svc$svcpart") || $pkg_svc->quantity || 0,
114 qq!"></TD><TD><A HREF="part_svc.cgi?!,$part_svc->svcpart,
115 qq!">!, $part_svc->getfield('svc'), "</A></TD>";
123 print qq!<INPUT TYPE="hidden" NAME="pkg_svc$svcpart" VALUE="!,
124 $cgi->param("pkg_svc$svcpart") || $pkg_svc->quantity || 0, qq!">\n!;
128 unless ( $cgi->param('clone') ) {
129 print qq!</TR>! if ($count != 0) ;
133 # prolly should be in database
137 'name' => 'Flat rate',
139 'setup_fee' => { 'name' => 'Setup fee for this package' },
140 'recur_fee' => { 'name' => 'Recurring fee for this package' },
142 'setup' => 'what.setup_fee.value',
143 'recur' => 'what.recur_fee.value',
146 'flat_comission' => {
147 'name' => 'Flat rate with recurring referral comission as credit',
149 'setup_fee' => { 'name' => 'Setup fee for this package' },
150 'recur_fee' => { 'name' => 'Recurring fee for this package' },
151 'comission_amount' => { 'name' => 'Comission amount' },
152 'comission_depth' => { 'name' => 'Number of layers' },
154 'setup' => 'what.setup_fee.value',
155 'recur' => '\'$cust_pkg->cust_main->credit( \' + what.comission_amount.value + \' * scalar($cust_pkg->cust_main->referral_cust_pkg(\' + what.comission_depth.value+ \')), "commission" ) ; \' + what.recur_fee.value + \';\'',
164 var something = null;
166 function changed(what) {
167 layer = what.options[what.selectedIndex].value;
168 <% foreach my $layer ( keys %plans ) { %>
169 if (layer == "<%= $layer %>" ) {
170 <% foreach my $not ( grep { $_ ne $layer } keys %plans ) { %>
171 if (document.getElementById) {
172 document.getElementById('d<%= $not %>').style.visibility = "hidden";
174 document.l<%= $not %>.visibility = "hidden";
177 if (document.getElementById) {
178 document.getElementById('d<%= $layer %>').style.visibility = "visible";
180 document.l<%= $layer %>.visibility = "visible";
188 Price plan <SELECT NAME="plan" SIZE=1 onChange="changed(this)">
189 <% foreach my $layer (keys %plans ) { %>
190 <OPTION VALUE="<%= $layer %>"<%= ' SELECTED'x($layer eq $plan) %>><%= $plans{$layer}->{'name'} %>
195 function fchanged(what) {
199 function fixup(what) {
200 <% foreach my $f ( qw( pkg comment freq ), @fixups ) { %>
201 what.<%= $f %>.value = document.dummy.<%= $f %>.value;
203 what.plan.value = document.dummy.plan.options[document.dummy.plan.selectedIndex].value;
204 <% foreach my $p ( keys %plans ) { %>
205 if ( what.plan.value == "<%= $p %>" ) {
206 what.setup.value = <%= $plans{$p}->{setup} %>;
207 what.recur.value = <%= $plans{$p}->{recur} %>;
213 <% #foreach my $layer ( 'konq_kludge', keys %plans ) {
214 foreach my $layer ( 'konq_kludge', keys %plans ) {
215 my $visibility = "hidden";
218 if (document.getElementById) {
219 document.write("<DIV ID=\"d<%= $layer %>\" STYLE=\"visibility: <%= $visibility %>; position: absolute\">");
221 <% $visibility="show" if $visibility eq "visible"; %>
222 document.write("<LAYER ID=\"l<%= $layer %>\" VISIBILITY=\"<%= $visibility %>\">");
226 <FORM NAME="<%= $layer %>" ACTION="process/part_pkg.cgi" METHOD=POST onSubmit="fixup(this)">
227 <INPUT TYPE="hidden" NAME="plan" VALUE="<%= $plan %>">
228 <INPUT TYPE="hidden" NAME="pkg" VALUE="<%= $hashref->{pkg} %>">
229 <INPUT TYPE="hidden" NAME="comment" VALUE="$<%= hashref->{comment} %>">
230 <INPUT TYPE="hidden" NAME="freq" VALUE="<%= $hashref->{freq} %>">
231 <% foreach my $f ( @fixups ) { %>
232 <INPUT TYPE="hidden" NAME="<%= $f %>" VALUE="">
236 if ( $cgi->param('clone') ) {
237 print qq!<INPUT TYPE="hidden" NAME="clone" VALUE="!, $cgi->param('clone'), qq!">!;
239 if ( $cgi->param('pkgnum') ) {
240 print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="!, $cgi->param('pkgnum'), qq!">!;
242 print qq!<INPUT TYPE="hidden" NAME="pkgpart" VALUE="$hashref->{pkgpart}">!,
245 <% my $href = $plans{$layer}->{'fields'};
246 foreach my $field ( keys %{ $href } ) { %>
247 <%= $href->{$field}{'name'} %>:
248 <INPUT TYPE="text" NAME="<%= $field %>" VALUE="<%= $ref->{$field}{'default'} %>" onChange="fchanged(this)"><BR>
252 Setup expression <INPUT TYPE="text" NAME="setup" SIZE="100%" VALUE="<%= $hashref->{setup} %>"><BR>
253 Recurring espression <INPUT TYPE="text" NAME="recur" SIZE="100%" VALUE="<%= $hashref->{recur} %>"><BR>
257 print qq!<BR><INPUT TYPE="submit" VALUE="!,
258 $hashref->{pkgpart} ? "Apply changes" : "Add package",
259 qq!" onClick="fchanged(this)">!;
265 if (document.getElementById) {
266 document.write("</DIV>");
268 document.write("</LAYER>");
275 if (document.getElementById) {
276 document.getElementById('d<%= $plan %>').style.visibility = 'visible';
278 document.l<%= $plan %>.visibility = 'visible';