[freeside-commits] branch master updated. d2b55d07a9e6e64a38877136d7974ab93e14f1ed

Mitch Jackson mitch at freeside.biz
Tue Feb 13 16:14:58 PST 2018


The branch, master has been updated
       via  d2b55d07a9e6e64a38877136d7974ab93e14f1ed (commit)
      from  908b5627cc5899b00d3b9e83602403eb956dd038 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d2b55d07a9e6e64a38877136d7974ab93e14f1ed
Author: Mitch Jackson <mitch at freeside.biz>
Date:   Tue Feb 13 18:11:03 2018 -0600

    RT# 79284 Updated discounts UI for Change Package screen

diff --git a/httemplate/elements/select-table.html b/httemplate/elements/select-table.html
index 6fb6b388b..a52fdfaaa 100644
--- a/httemplate/elements/select-table.html
+++ b/httemplate/elements/select-table.html
@@ -195,13 +195,22 @@ if ( ref( $value ) eq 'ARRAY' ) {
   $value = { map { $_ => 1 } @$value };
 }
 
-unless (    !ref($value) && $value < 1 # !$value #ignore negatives too
-         or ! exists( $opt{hashref}->{disabled} ) #??
-         #or grep { $value == $_->$key() } @records
-       ) {
+
+if (
+     (ref $value && $value)
+  or (ref $opt{hashref} && exists $opt{hashref}->{disabled})
+  or $opt{also_show_option}
+) {
+
   delete $opt{hashref}->{disabled};
 
-  foreach my $v ( ref($value) ? keys %$value : ($value) ) {
+  # also_show_option: (hack for change_pkg form):
+  #   Include an absent select option, without selecting it
+  #   as the curr_value
+  my @also_show = ref($value) ? keys %$value : ($value);
+  push @also_show, $opt{also_show_option} if $opt{also_show_option};
+
+  foreach my $v ( @also_show ) {
     next if grep { $v == $_->$key() } @records;
 
     $opt{hashref}->{$key} = $v;
diff --git a/httemplate/elements/tr-select-pkg-discount.html b/httemplate/elements/tr-select-pkg-discount.html
index 39b0ff31f..810e46230 100644
--- a/httemplate/elements/tr-select-pkg-discount.html
+++ b/httemplate/elements/tr-select-pkg-discount.html
@@ -7,7 +7,9 @@ In order_pkg.html or similar:
   curr_value_recur    => ($cgi->param('recur_discountnum') || ''),
   disable_setup       => 0,
   disable_recur       => 0,
-  disable_waive_setup => 0
+  disable_waive_setup => 0,
+  carry_value_setup   => $carry_setup_discountnum,
+  carry_value_recur   => $carry_recur_discountnum,
 &>
 
 This provides the following:
@@ -20,6 +22,8 @@ This provides the following:
   checkbox to waive setup fee.
 - Same for recurring fee, but without the "waive setup fee" stuff, obviously.
 - Custom recurring discounts also have an option for a duration in months.
+- When changing a package, the original package's discount option is
+  labeled in the select options
 
 "disable_setup" locks the setup discount, but will still show a static
 description if curr_value_setup is set. Likewise "disable_recur".
@@ -47,6 +51,8 @@ description if curr_value_setup is set. Likewise "disable_recur".
       curr_value  => $opt{'curr_value_setup'},
       disable_empty => 1,
       pre_options => $pre_options,
+      also_show_option => $opt{carry_value_setup},
+      label_callback   => $opt{carry_value_setup} ? $carry_setup_sub : undef,
     &>
   </td>
 </tr>
@@ -107,6 +113,8 @@ description if curr_value_setup is set. Likewise "disable_recur".
       id          => 'recur_discountnum',
       hashref     =>  { disabled => '' },
       curr_value  => $opt{'curr_value_recur'},
+      also_show_option => $opt{carry_value_recur},
+      label_callback   => $opt{carry_value_recur} ? $carry_recur_sub : undef,
     &>
 
   </td>
@@ -196,4 +204,18 @@ my %opt = (
 my $curuser = $FS::CurrentUser::CurrentUser;
 my $money_char = FS::Conf->new->config('money_char') || '$';
 
+# Change the label for the select-option when it matches the carryover
+# discountnum
+my $carry_recur_sub =  sub {
+  my ($rec) = @_;
+  $rec->discountnum eq $opt{carry_value_recur}
+    ? $rec->description() . ' [Continues existing discount]'
+    : $rec->description();
+};
+my $carry_setup_sub =  sub {
+  my ($rec) = @_;
+  $rec->discountnum eq $opt{carry_value_setup}
+    ? $rec->description() . ' [Continues existing discount]'
+    : $rec->description();
+};
 </%init>
diff --git a/httemplate/misc/change_pkg.cgi b/httemplate/misc/change_pkg.cgi
index 2470ee135..c588c9e6c 100755
--- a/httemplate/misc/change_pkg.cgi
+++ b/httemplate/misc/change_pkg.cgi
@@ -91,11 +91,13 @@
   <FONT CLASS="fsinnerbox-title"><% mt('Discounting') |h %></FONT>
   <TABLE CLASS="fsinnerbox">
     <& /elements/tr-select-pkg-discount.html,
-      curr_value_setup    => $discount{setup},
-      curr_value_recur    => $discount{recur},
+      # curr_value_setup    => $discount{setup},
+      # curr_value_recur    => $discount{recur},
       disable_setup       => 0,
       disable_recur       => 0,
-      disable_waive_setup => 0
+      disable_waive_setup => 0,
+      carry_value_setup   => $discount{setup},
+      carry_value_recur   => $discount{recur},
     &>
   </TABLE><BR>
 

-----------------------------------------------------------------------

Summary of changes:
 httemplate/elements/select-table.html           | 19 ++++++++++++++-----
 httemplate/elements/tr-select-pkg-discount.html | 24 +++++++++++++++++++++++-
 httemplate/misc/change_pkg.cgi                  |  8 +++++---
 3 files changed, 42 insertions(+), 9 deletions(-)




More information about the freeside-commits mailing list