1 <% include( 'elements/edit.html',
6 { field => 'classnum', type => 'select-discount_class' },
7 { field => 'disabled', type => 'checkbox', value=>'Y', },
8 # a weird kind of false laziness
9 # w/elements/tr-select-discount.html
10 { field => '_type', type => 'select',
11 options => \@_type_options,
12 onchange => '_type_changed',
14 { field => 'amount', type => 'money',
16 #cell_style => $amount_style,
18 { field => 'percent', type => 'percentage',
20 #cell_style => $percent_style,
22 { field => 'months', type => 'text', size => 2,
23 postfix => '<BR><FONT SIZE="-1"><I>(blank for non-expiring discount)</I></FONT>',
25 { field => 'setup', type => 'checkbox', value=>'Y', },
26 #{ field => 'linked', type => 'checkbox', value=>'Y', },
29 'discountnum' => 'Discount #',
30 'name' => 'Name ',
31 'classnum' => 'Class',
32 'disabled' => 'Disabled ',
33 '_type' => 'Type ',
34 'amount' => 'Amount ',
35 'percent' => 'Percentage ',
36 'months' => 'Duration (months)',
37 'setup' => 'Apply to setup fees',
38 #'linked' => 'Apply to add-on packages',
40 'viewall_dir' => 'browse',
41 'new_callback' => $new_callback,
42 'edit_callback' => $edit_callback,
43 'error_callback' => $error_callback,
44 'html_init' => $javascript,
45 'body_etc' => 'onLoad="_type_changed(document.edit_topform._type)"',
51 unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
53 my @_type_options = ( 'Amount', 'Percentage' );
55 #my $amount_style = '';
56 #my $percent_style = '';
58 #my $hide = 'display:none;visibility:hidden';
59 my $select = 'Select discount type';
61 my $new_callback = sub {
62 #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
64 #$amount_style = $hide;
65 #$percent_style = $hide;
66 unshift @_type_options, $select;
69 my $edit_callback = sub {
70 #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
71 my( $cgi, $object ) = @_;
73 if ( $object->amount > 0 && $object->percent == 0 ) {
74 $object->set('_type', 'Amount');
75 #$percent_style = $hide;
76 } elsif ( $object->amount == 0 && $object->percent > 0 ) {
77 $object->set('_type', 'Percentage');
78 #$amount_style = $hide;
79 } elsif ( $object->amount == 0 && $object->percent == 0 ) {
80 #$amount_style = $hide;
81 #$percent_style = $hide;
82 unshift @_type_options, $select;
84 die "discount.amount and discount.percent not yet handled by web UI";
89 my $error_callback = sub {
90 #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
91 my( $cgi, $object ) = @_;
93 if ( $cgi->param('_type') eq 'Amount' ) {
94 $object->set('_type', 'Amount');
95 #A$percent_style = $hide;
96 } elsif ( $cgi->param('_type') eq 'Percentage' ) {
97 $object->set('_type', 'Percentage');
98 #$amount_style = $hide;
100 #$amount_style = $hide;
101 #$percent_style = $hide;
102 unshift @_type_options, $select;
107 my $javascript = <<END;
108 <SCRIPT TYPE="text/javascript">
109 function _type_changed(what) {
110 var _type = what.options[what.selectedIndex].value;
112 if ( _type == '$select' ) {
113 document.getElementById('amount_label').style.display = 'none';
114 document.getElementById('amount_label').style.visibility = 'hidden';
115 document.getElementById('amount_input0').style.display = 'none';
116 document.getElementById('amount_input0').style.visibility = 'hidden';
117 document.getElementById('percent_label').style.display = 'none';
118 document.getElementById('percent_label').style.visibility = 'hidden';
119 document.getElementById('percent_input0').style.display = 'none';
120 document.getElementById('percent_input0').style.visibility = 'hidden';
121 // document.getElementById('linked_label').style.display = 'none';
122 // document.getElementById('linked_label').style.visibility = 'hidden';
123 // document.getElementById('linked').style.display = 'none';
124 // document.getElementById('linked').style.visibility = 'hidden';
125 } else if ( _type == 'Amount' ) {
126 document.getElementById('amount_label').style.display = '';
127 document.getElementById('amount_label').style.visibility = '';
128 document.getElementById('amount_input0').style.display = '';
129 document.getElementById('amount_input0').style.visibility = '';
130 document.getElementById('percent_label').style.display = 'none';
131 document.getElementById('percent_label').style.visibility = 'hidden';
132 document.getElementById('percent_input0').style.display = 'none';
133 document.getElementById('percent_input0').style.visibility = 'hidden';
134 // document.getElementById('linked_label').style.display = 'none';
135 // document.getElementById('linked_label').style.visibility = 'hidden';
136 // document.getElementById('linked').style.display = 'none';
137 // document.getElementById('linked').style.visibility = 'hidden';
138 } else if ( _type == 'Percentage' ) {
139 document.getElementById('amount_label').style.display = 'none';
140 document.getElementById('amount_label').style.visibility = 'hidden';
141 document.getElementById('amount_input0').style.display = 'none';
142 document.getElementById('amount_input0').style.visibility = 'hidden';
143 document.getElementById('percent_label').style.display = '';
144 document.getElementById('percent_label').style.visibility = '';
145 document.getElementById('percent_input0').style.display = '';
146 document.getElementById('percent_input0').style.visibility = '';
147 // document.getElementById('linked_label').style.display = '';
148 // document.getElementById('linked_label').style.visibility = '';
149 // document.getElementById('linked').style.display = '';
150 // document.getElementById('linked').style.visibility = '';