From e2d16c850d8857567023f10b8c57daf0570c6a8e Mon Sep 17 00:00:00 2001
From: Mark Wells <mark@freeside.biz>
Date: Thu, 5 Nov 2015 19:55:26 -0800
Subject: [PATCH] ignore discount duration when applying to setup fee, #38489

---
 FS/FS/part_pkg/discount_Mixin.pm            | 8 ++------
 httemplate/edit/cust_pkg_discount.html      | 2 ++
 httemplate/elements/tr-select-discount.html | 8 ++++++++
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/FS/FS/part_pkg/discount_Mixin.pm b/FS/FS/part_pkg/discount_Mixin.pm
index 194479e56..e411c84e8 100644
--- a/FS/FS/part_pkg/discount_Mixin.pm
+++ b/FS/FS/part_pkg/discount_Mixin.pm
@@ -123,17 +123,13 @@ sub calc_discount {
 
         if ( $discount->percent > 0 ) {
             $amount = $discount->percent * $param->{'setup_charge'} / 100;
-        } elsif ( $discount->amount > 0 && ($discount->months || 0) == 1) {
+        } elsif ( $discount->amount > 0 ) {
             # apply the discount amount, up to a maximum of the setup charge
             $amount = min($discount->amount, $param->{'setup_charge'});
             $discount_left = sprintf('%.2f', $discount->amount - $amount);
             # transfer remainder of discount, if any, to recur
             $param->{'discount_left_recur'}{$discount->discountnum} = $discount_left;
-        } else {
-          # I guess we don't allow multiple-month flat amount discounts to
-          # apply to setup?
-            next; 
-        }
+        } 
 
     } else {
       
diff --git a/httemplate/edit/cust_pkg_discount.html b/httemplate/edit/cust_pkg_discount.html
index 0bb84b8f2..e814c96c5 100755
--- a/httemplate/edit/cust_pkg_discount.html
+++ b/httemplate/edit/cust_pkg_discount.html
@@ -30,6 +30,7 @@
              'empty_label' => ( $pkgdiscountnum ? '' : 'Select discount' ),
              'onchange'    => 'enable_discount_pkg()',
              'cgi'         => $cgi,
+             'setup_only'  => $setup_only,
           )
 %>
 
@@ -72,5 +73,6 @@ my $cust_pkg =
 #         " ( pkgnum ". cust_pkg->pkgnum. ")";
 
 my $part_pkg = $cust_pkg->part_pkg;
+my $setup_only = ($part_pkg->freq eq '0') ? 1 : 0;
 
 </%init>
diff --git a/httemplate/elements/tr-select-discount.html b/httemplate/elements/tr-select-discount.html
index ee862519f..faa65e1f7 100644
--- a/httemplate/elements/tr-select-discount.html
+++ b/httemplate/elements/tr-select-discount.html
@@ -53,6 +53,13 @@
             )
   %>
 
+% if ( $opt{'setup_only'} ) {
+  <& /elements/hidden.html,
+    'field' => $name.'_setup',
+    'id'    => $name.'_setup',
+    'value' => 'Y'
+  &>
+% } else { # normal case, allow the user to choose
   <% include( '/elements/tr-input-text.html',
                 'label'   => '<B>Discount duration (months)</B>',
                 'field'   => $name. '_months',
@@ -73,6 +80,7 @@
                 'colspan'    => $opt{'colspan'},
             )
   %>
+% }
 
 %#  <% include( '/elements/tr-checkbox.html',
 %#                'label'     => '<B>Apply discount to add-on packages</B>',
-- 
2.20.1