1 <% include( 'elements/edit.html',
6 { field => 'disabled', type => 'checkbox', value=>'Y', },
7 # a weird kind of false laziness
8 # w/elements/tr-select-discount.html
9 { field => '_type', type => 'select',
10 options => \@_type_options,
11 onchange => '_type_changed',
13 { field => 'amount', type => 'money',
15 #cell_style => $amount_style,
17 { field => 'percent', type => 'percentage',
19 #cell_style => $percent_style,
21 { field => 'months', type => 'text', size => 2,
22 postfix => '<BR><FONT SIZE="-1"><I>(blank for non-expiring discount)</I></FONT>',
24 { field => 'setup', type => 'checkbox', value=>'Y', },
27 'discountnum' => 'Discount #',
28 'name' => 'Name ',
29 'disabled' => 'Disabled ',
30 '_type' => 'Type ',
31 'amount' => 'Amount ',
32 'percent' => 'Percentage ',
33 'months' => 'Duration (months)',
34 'setup' => 'Apply to setup fees',
36 'viewall_dir' => 'browse',
37 'new_callback' => $new_callback,
38 'edit_callback' => $edit_callback,
39 'error_callback' => $error_callback,
40 'html_init' => $javascript,
41 'body_etc' => 'onLoad="_type_changed(document.edit_topform._type)"',
47 unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
49 my @_type_options = ( 'Amount', 'Percentage' );
51 #my $amount_style = '';
52 #my $percent_style = '';
54 #my $hide = 'display:none;visibility:hidden';
55 my $select = 'Select discount type';
57 my $new_callback = sub {
58 #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
60 #$amount_style = $hide;
61 #$percent_style = $hide;
62 unshift @_type_options, $select;
65 my $edit_callback = sub {
66 #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
67 my( $cgi, $object ) = @_;
69 if ( $object->amount > 0 && $object->percent == 0 ) {
70 $object->set('_type', 'Amount');
71 #$percent_style = $hide;
72 } elsif ( $object->amount == 0 && $object->percent > 0 ) {
73 $object->set('_type', 'Percentage');
74 #$amount_style = $hide;
75 } elsif ( $object->amount == 0 && $object->percent == 0 ) {
76 #$amount_style = $hide;
77 #$percent_style = $hide;
78 unshift @_type_options, $select;
80 die "discount.amount and discount.percent not yet handled by web UI";
85 my $error_callback = sub {
86 #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
87 my( $cgi, $object ) = @_;
89 if ( $cgi->param('_type') eq 'Amount' ) {
90 $object->set('_type', 'Amount');
91 #A$percent_style = $hide;
92 } elsif ( $cgi->param('_type') eq 'Percentage' ) {
93 $object->set('_type', 'Percentage');
94 #$amount_style = $hide;
96 #$amount_style = $hide;
97 #$percent_style = $hide;
98 unshift @_type_options, $select;
103 my $javascript = <<END;
104 <SCRIPT TYPE="text/javascript">
105 function _type_changed(what) {
106 var _type = what.options[what.selectedIndex].value;
108 if ( _type == '$select' ) {
109 document.getElementById('amount_label').style.display = 'none';
110 document.getElementById('amount_label').style.visibility = 'hidden';
111 document.getElementById('amount_input0').style.display = 'none';
112 document.getElementById('amount_input0').style.visibility = 'hidden';
113 document.getElementById('percent_label').style.display = 'none';
114 document.getElementById('percent_label').style.visibility = 'hidden';
115 document.getElementById('percent_input0').style.display = 'none';
116 document.getElementById('percent_input0').style.visibility = 'hidden';
117 } else if ( _type == 'Amount' ) {
118 document.getElementById('amount_label').style.display = '';
119 document.getElementById('amount_label').style.visibility = '';
120 document.getElementById('amount_input0').style.display = '';
121 document.getElementById('amount_input0').style.visibility = '';
122 document.getElementById('percent_label').style.display = 'none';
123 document.getElementById('percent_label').style.visibility = 'hidden';
124 document.getElementById('percent_input0').style.display = 'none';
125 document.getElementById('percent_input0').style.visibility = 'hidden';
126 } else if ( _type == 'Percentage' ) {
127 document.getElementById('amount_label').style.display = 'none';
128 document.getElementById('amount_label').style.visibility = 'hidden';
129 document.getElementById('amount_input0').style.display = 'none';
130 document.getElementById('amount_input0').style.visibility = 'hidden';
131 document.getElementById('percent_label').style.display = '';
132 document.getElementById('percent_label').style.visibility = '';
133 document.getElementById('percent_input0').style.display = '';
134 document.getElementById('percent_input0').style.visibility = '';