summaryrefslogtreecommitdiff
path: root/httemplate/elements
diff options
context:
space:
mode:
authorMitch Jackson <mitch@freeside.biz>2018-02-13 18:11:03 -0600
committerMitch Jackson <mitch@freeside.biz>2018-02-13 18:11:03 -0600
commitd2b55d07a9e6e64a38877136d7974ab93e14f1ed (patch)
treeefd6794f4d996ea4dca931578fd581fc5ecefed6 /httemplate/elements
parent908b5627cc5899b00d3b9e83602403eb956dd038 (diff)
RT# 79284 Updated discounts UI for Change Package screen
Diffstat (limited to 'httemplate/elements')
-rw-r--r--httemplate/elements/select-table.html19
-rw-r--r--httemplate/elements/tr-select-pkg-discount.html24
2 files changed, 37 insertions, 6 deletions
diff --git a/httemplate/elements/select-table.html b/httemplate/elements/select-table.html
index 6fb6b38..a52fdfa 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 39b0ff3..810e462 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>