summaryrefslogtreecommitdiff
path: root/httemplate/edit/part_pkg.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/edit/part_pkg.cgi')
-rwxr-xr-xhttemplate/edit/part_pkg.cgi218
1 files changed, 181 insertions, 37 deletions
diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi
index 4813fdf8b..b7707f3e8 100755
--- a/httemplate/edit/part_pkg.cgi
+++ b/httemplate/edit/part_pkg.cgi
@@ -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
-
-%>