"price plans" UP support.CVS: --------------------------------------------------...
authorivan <ivan>
Thu, 11 Oct 2001 17:44:33 +0000 (17:44 +0000)
committerivan <ivan>
Thu, 11 Oct 2001 17:44:33 +0000 (17:44 +0000)
httemplate/edit/part_pkg.cgi

index 4813fdf..b7707f3 100755 (executable)
@@ -1,16 +1,18 @@
+<!-- $Id: part_pkg.cgi,v 1.3 2001-10-11 17:44:33 ivan Exp $ -->
+
+<% my $plan = 'flat'; %>
+
+<SCRIPT>
+function visualize(what) {
+  if (document.getElementById) {
+    document.getElementById('d<%= $plan %>').style.visibility = "visible";
+  } else {
+    document.l<%= $plan %>.visibility = "visible";
+  }
+}
+</SCRIPT>
+
 <%
-#<!-- $Id: part_pkg.cgi,v 1.2 2001-08-21 02:31:56 ivan Exp $ -->
-
-use strict;
-use vars qw( $cgi $part_pkg $action $query $hashref $part_svc $count );
-use CGI;
-use CGI::Carp qw(fatalsToBrowser);
-use FS::UID qw(cgisuidsetup);
-use FS::Record qw(qsearch qsearchs fields);
-use FS::part_pkg;
-use FS::part_svc;
-use FS::pkg_svc;
-use FS::CGI qw(header menubar popurl);
 
 $cgi = new CGI;
 
@@ -27,9 +29,9 @@ if ( $cgi->param('pkgnum') && $cgi->param('pkgnum') =~ /^(\d+)$/ ) {
   $cgi->param('pkgnum', '');
 }
 
-($query) = $cgi->keywords;
-$action = '';
-$part_pkg = '';
+my ($query) = $cgi->keywords;
+my $action = '';
+my $part_pkg = '';
 if ( $cgi->param('error') ) {
   $part_pkg = new FS::part_pkg ( {
     map { $_, scalar($cgi->param($_)) } fields('part_pkg')
@@ -46,9 +48,9 @@ if ( $cgi->param('clone') ) {
   $part_pkg ||= new FS::part_pkg {};
 }
 $action ||= $part_pkg->pkgpart ? 'Edit' : 'Add';
-$hashref = $part_pkg->hashref;
+my $hashref = $part_pkg->hashref;
 
-print $cgi->header( '-expires' => 'now' ), header("$action Package Definition", menubar(
+print header("$action Package Definition", menubar(
   'Main Menu' => popurl(2),
   'View all packages' => popurl(2). 'browse/part_pkg.cgi',
 ));
@@ -57,24 +59,24 @@ print qq!<FONT SIZE="+1" COLOR="#ff0000">Error: !, $cgi->param('error'),
       "</FONT>"
   if $cgi->param('error');
 
-print '<FORM ACTION="', popurl(1), 'process/part_pkg.cgi" METHOD=POST>';
-
-if ( $cgi->param('clone') ) {
-  print qq!<INPUT TYPE="hidden" NAME="clone" VALUE="!, $cgi->param('clone'), qq!">!;
-}
-if ( $cgi->param('pkgnum') ) {
-  print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="!, $cgi->param('pkgnum'), qq!">!;
-}
+#print '<FORM ACTION="', popurl(1), 'process/part_pkg.cgi" METHOD=POST>';
+print '<FORM NAME="dummy">';
 
-print qq!<INPUT TYPE="hidden" NAME="pkgpart" VALUE="$hashref->{pkgpart}">!,
-      "Package Part #", $hashref->{pkgpart} ? $hashref->{pkgpart} : "(NEW)";
+#if ( $cgi->param('clone') ) {
+#  print qq!<INPUT TYPE="hidden" NAME="clone" VALUE="!, $cgi->param('clone'), qq!">!;
+#}
+#if ( $cgi->param('pkgnum') ) {
+#  print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="!, $cgi->param('pkgnum'), qq!">!;
+#}
+#
+#print qq!<INPUT TYPE="hidden" NAME="pkgpart" VALUE="$hashref->{pkgpart}">!,
+print "Package Part #", $hashref->{pkgpart} ? $hashref->{pkgpart} : "(NEW)";
 
 print <<END;
 <PRE>
 Package (customer-visable)          <INPUT TYPE="text" NAME="pkg" SIZE=32 VALUE="$hashref->{pkg}">
 Comment (customer-hidden)           <INPUT TYPE="text" NAME="comment" SIZE=32 VALUE="$hashref->{comment}">
-Setup fee for this package          <INPUT TYPE="text" NAME="setup" VALUE="$hashref->{setup}">
-Recurring fee for this package      <INPUT TYPE="text" NAME="recur" VALUE="$hashref->{recur}">
+
 Frequency (months) of recurring fee <INPUT TYPE="text" NAME="freq" VALUE="$hashref->{freq}">
 
 </PRE>
@@ -89,8 +91,9 @@ Enter the quantity of each service this package includes.<BR><BR>
 END
 }
 
-$count = 0;
-foreach $part_svc ( ( qsearch( 'part_svc', {} ) ) ) {
+my $count = 0;
+my @fixups = ();
+foreach my $part_svc ( ( qsearch( 'part_svc', {} ) ) ) {
   my $svcpart = $part_svc->svcpart;
   my $pkg_svc = qsearchs( 'pkg_svc', {
     'pkgpart'  => $cgi->param('clone') || $part_pkg->pkgpart,
@@ -102,6 +105,8 @@ foreach $part_svc ( ( qsearch( 'part_svc', {} ) ) ) {
   });
   #? #next unless $pkg_svc;
 
+  push @fixups, "pkg_svc$svcpart";
+
   unless ( defined ($cgi->param('clone')) && $cgi->param('clone') ) {
     print '<TR>' if $count == 0 ;
     print qq!<TD><INPUT TYPE="text" NAME="pkg_svc$svcpart" SIZE=3 VALUE="!,
@@ -125,14 +130,153 @@ unless ( $cgi->param('clone') ) {
   print "</TABLE>";
 }
 
+# prolly should be in database
+my %plans = (
+
+  'flat' => {
+    'name' => 'Flat rate',
+    'fields' => {
+      'setup_fee' => { 'name' => 'Setup fee for this package' },
+      'recur_fee' => { 'name' => 'Recurring fee for this package' },
+    },
+    'setup' => 'what.setup_fee.value',
+    'recur' => 'what.recur_fee.value',
+  },
+
+  'flat_comission' => {
+    'name' => 'Flat rate with recurring referral comission as credit',
+    'fields' => {
+      'setup_fee' => { 'name' => 'Setup fee for this package' },
+      'recur_fee' => { 'name' => 'Recurring fee for this package' },
+      'comission_amount' => { 'name' => 'Comission amount' },
+      'comission_depth' => { 'name' => 'Number of layers' },
+    },
+    'setup' => 'what.setup_fee.value',
+    '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 + \';\'',
+  },
+
+);
+
+%>
+
+<SCRIPT>
+var svcdb = null;
+var something = null;
+
+function changed(what) {
+  layer = what.options[what.selectedIndex].value;
+<% foreach my $layer ( keys %plans ) { %>
+  if (layer == "<%= $layer %>" ) {
+    <% foreach my $not ( grep { $_ ne $layer } keys %plans ) { %>
+      if (document.getElementById) {
+        document.getElementById('d<%= $not %>').style.visibility = "hidden";
+      } else {
+        document.l<%= $not %>.visibility = "hidden";
+      }
+    <% } %>
+    if (document.getElementById) {
+      document.getElementById('d<%= $layer %>').style.visibility = "visible";
+    } else {
+      document.l<%= $layer %>.visibility = "visible";
+    }
+  }
+<% } %>
+}
+
+</SCRIPT>
+<BR>
+Price plan <SELECT NAME="plan" SIZE=1 onChange="changed(this)">
+<% foreach my $layer (keys %plans ) { %>
+<OPTION VALUE="<%= $layer %>"<%= ' SELECTED'x($layer eq $plan) %>><%= $plans{$layer}->{'name'} %>
+<% } %>
+</SELECT></FORM>
+
+<SCRIPT>
+function fchanged(what) {
+  fixup(what.form);
+}
+
+function fixup(what) {
+<% foreach my $f ( qw( pkg comment freq ), @fixups ) { %>
+  what.<%= $f %>.value = document.dummy.<%= $f %>.value;
+<% } %>
+  what.plan.value = document.dummy.plan.options[document.dummy.plan.selectedIndex].value;
+<% foreach my $p ( keys %plans ) { %>
+  if ( what.plan.value == "<%= $p %>" ) {
+    what.setup.value = <%= $plans{$p}->{setup} %>;
+    what.recur.value = <%= $plans{$p}->{recur} %>;
+  }
+<% } %>
+}
+</SCRIPT>
+
+<% #foreach my $layer ( 'konq_kludge', keys %plans ) { 
+   foreach my $layer ( 'konq_kludge', keys %plans ) {
+     my $visibility = "hidden";
+%>
+<SCRIPT>
+if (document.getElementById) {
+    document.write("<DIV ID=\"d<%= $layer %>\" STYLE=\"visibility: <%= $visibility %>; position: absolute\">");
+} else {
+<% $visibility="show" if $visibility eq "visible"; %>
+    document.write("<LAYER ID=\"l<%= $layer %>\" VISIBILITY=\"<%= $visibility %>\">");
+}
+</SCRIPT>
+
+<FORM NAME="<%= $layer %>" ACTION="process/part_pkg.cgi" METHOD=POST onSubmit="fixup(this)">
+<INPUT TYPE="hidden" NAME="plan" VALUE="<%= $plan %>">
+<INPUT TYPE="hidden" NAME="pkg" VALUE="<%= $hashref->{pkg} %>">
+<INPUT TYPE="hidden" NAME="comment" VALUE="$<%= hashref->{comment} %>">
+<INPUT TYPE="hidden" NAME="freq" VALUE="<%= $hashref->{freq} %>">
+<% foreach my $f ( @fixups ) { %>
+<INPUT TYPE="hidden" NAME="<%= $f %>" VALUE="">
+<% } %>
+
+<%
+if ( $cgi->param('clone') ) {
+  print qq!<INPUT TYPE="hidden" NAME="clone" VALUE="!, $cgi->param('clone'), qq!">!;
+}
+if ( $cgi->param('pkgnum') ) {
+  print qq!<INPUT TYPE="hidden" NAME="pkgnum" VALUE="!, $cgi->param('pkgnum'), qq!">!;
+}
+print qq!<INPUT TYPE="hidden" NAME="pkgpart" VALUE="$hashref->{pkgpart}">!,
+%>
+
+<% my $href = $plans{$layer}->{'fields'};
+   foreach my $field ( keys %{ $href } ) { %>
+<%= $href->{$field}{'name'} %>: 
+<INPUT TYPE="text" NAME="<%= $field %>" VALUE="<%= $ref->{$field}{'default'} %>" onChange="fchanged(this)"><BR>
+<% } %>
+
+<FONT SIZE="-2">
+Setup expression                    <INPUT TYPE="text" NAME="setup" SIZE="100%" VALUE="<%= $hashref->{setup} %>"><BR>
+Recurring espression                <INPUT TYPE="text" NAME="recur" SIZE="100%" VALUE="<%= $hashref->{recur} %>"><BR>
+</FONT>
+
+<%
 print qq!<BR><INPUT TYPE="submit" VALUE="!,
       $hashref->{pkgpart} ? "Apply changes" : "Add package",
-      qq!">!;
+      qq!" onClick="fchanged(this)">!;
+%>
 
-print <<END;
-    </FORM>
+</FORM>
+
+<SCRIPT>
+if (document.getElementById) {
+  document.write("</DIV>");
+} else {
+  document.write("</LAYER>");
+}
+</SCRIPT>
+
+<% } %>
+
+<TAG onLoad="
+    if (document.getElementById) {
+      document.getElementById('d<%= $plan %>').style.visibility = 'visible';
+    } else {
+      document.l<%= $plan %>.visibility = 'visible';
+    }
+">
   </BODY>
 </HTML>
-END
-
-%>