default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / httemplate / edit / process / change-cust_pkg.html
index 54cafbf..c8c6236 100644 (file)
@@ -3,7 +3,7 @@
 %   $cgi->redirect(popurl(3). 'misc/change_pkg.cgi?'. $cgi->query_string );
 % } else {
 
-    <% header(emt("Package changed")) %>
+    <& /elements/header-popup.html, emt("Package changed") &>
       <SCRIPT TYPE="text/javascript">
         topreload();
       </SCRIPT>
@@ -41,6 +41,54 @@ if ( $cgi->param('locationnum') == -1 ) {
 }
 
 my $error;
+
+# Discounts:
+# setup_discountnum and change_discountnum may contain one of the following:
+# - "-1" Represents the 'other' option.  Results in a new entry to the
+#        discount table.
+# - "-2" Represents the "waive setup fee" option. Sets cust_pkg.waive_setup = Y
+# - int  Represents the id for a discount row: discount.discountnum
+# my %discount;
+# $change{waive_setup} = '';
+# for my $type (qw|setup recur|) {
+#   my $dnum = $cgi->param("${type}_discountnum");
+
+#   if ($dnum eq '-2' && $type eq 'setup') {
+#     $change{waive_setup} = 'Y';
+#   } elsif ($val =~ /^-?\d+$/) {
+#     $discount{$type} = {discountnum => $dnum};
+#     if ($dnum eq '-1') {
+#       $discount{$type}->{amount}  = $cgi->param("${type}_discountnum_amount");
+#       $discount{$type}->{percent} = $cgi->param("${type}_discountnum_percent");
+#     }
+#   } else {
+#     # Shouldn't happen without funny business
+#     $error = "Bad value ${type}_discountnum ($val)";
+#   }
+# }
+
+
+$change{waive_setup} = '';
+for my $type (qw|setup_discountnum recur_discountnum|) {
+  my $dnum = $cgi->param($type);
+
+  if ($dnum eq '-2' && $type eq 'setup_discountnum') {
+    # Waive Discount
+    $change{waive_setup} = 'Y';
+  } elsif ($dnum =~ /^-?\d+$/) {
+    # Set discountnum
+    $change{$type} = $dnum;
+    $change{"${type}_amount"}  = $cgi->param("${type}_amount");
+    $change{"${type}_percent"} = $cgi->param("${type}_percent");
+    $change{"${type}_months"}  = $cgi->param("${type}_months");
+  } elsif ($dnum eq '') {
+    # Set discount as no discount
+    $change{"${type}"} = 0;
+  } else {
+    $error = "Bad value ${type}_discountnum ($dnum)";
+  }
+}
+
 my $now = time;
 if (defined($cgi->param('contract_end'))) {
   $change{'contract_end'} = parse_datetime($cgi->param('contract_end'));
@@ -103,6 +151,7 @@ unless ($error) {
         $change_to->locationnum  == $change{'locationnum'} and
         $change_to->quantity     == $change{'quantity'} and
         $change_to->contract_end == $change{'contract_end'} and
+        $change_to->waive_setup  == $change{'waive_setup'} and
         !$usagechanged
       ) {
         %change = ( 'cust_pkg' => $change_to );