ignore discount duration when applying to setup fee, #38489
[freeside.git] / httemplate / elements / tr-select-discount.html
1 % if ( scalar(@{ $opt{'discount'} }) == 0
2 %      && ! $curuser->access_right('Custom discount customer package') ) { 
3
4   <INPUT TYPE="hidden" NAME="<% $name %>" VALUE="<% $discountnum %>">
5
6 % } else { 
7
8   <TR>
9     <TD ALIGN="right" WIDTH="275"><% $opt{'label'} || '<B>'.emt('Discount').'</B>' %></TD>
10     <TD <% $colspan %>>
11       <% include( '/elements/select-discount.html',
12                     'curr_value' => $discountnum,
13                     'onchange'   => $onchange,
14                     %opt,
15                 )
16       %>
17     </TD>
18   </TR>
19
20 % # a weird kind of false laziness w/edit/discount.html
21
22 % #  <INPUT TYPE="hidden" NAME="<% $name %>_disabled" VALUE="Y">
23
24
25   <% include( '/elements/tr-select.html',
26                 'label'      => '<B>Discount Type</B>',
27                 'field'      => $name. '__type',
28                 'id'         => $name. '__type',
29                 'options'    => \@_type_options,
30                 'curr_value' => scalar($cgi->param($name.'__type')),
31                 'onchange'   => $name.'__type_changed',
32                 'colspan'    => $opt{'colspan'},
33             )
34   %>
35
36   <% include( '/elements/tr-input-money.html',
37                 'label'      => '<B>Discount Amount&nbsp;</B>',
38                 'field'      => $name. '_amount',
39                 'id'         => $name. '_amount',
40                 'default'    => '0.00',
41                 'curr_value' => scalar($cgi->param($name.'_amount')),
42                 'colspan'    => $opt{'colspan'},
43             )
44   %>
45
46   <% include( '/elements/tr-input-percentage.html',
47                 'label'      => '<B>Discount Percentage</B>',
48                 'field'      => $name. '_percent',
49                 'id'         => $name. '_percent',
50                 'default'    => '0',
51                 'curr_value' => scalar($cgi->param($name.'_percent')),
52                 'colspan'    => $opt{'colspan'},
53             )
54   %>
55
56 % if ( $opt{'setup_only'} ) {
57   <& /elements/hidden.html,
58     'field' => $name.'_setup',
59     'id'    => $name.'_setup',
60     'value' => 'Y'
61   &>
62 % } else { # normal case, allow the user to choose
63   <% include( '/elements/tr-input-text.html',
64                 'label'   => '<B>Discount duration (months)</B>',
65                 'field'   => $name. '_months',
66                 'id'      => $name. '_months',
67                 'size'    => 2,
68                 'postfix' => qq(<FONT SIZE="-1" ID="${name}_months_postfix"><I>(blank for non-expiring discount)</I></FONT>),
69                 'curr_value' => scalar($cgi->param($name.'_months')),
70                 'colspan'    => $opt{'colspan'},
71            )
72   %>
73
74   <% include( '/elements/tr-checkbox.html',
75                 'label'     => '<B>Apply discount to setup fee</B>',
76                 'field'     => $name.'_setup',
77                 'id'        => $name.'_setup',
78                 'curr_value' => scalar($cgi->param($name.'_setup')),
79                 'value'     => 'Y',
80                 'colspan'    => $opt{'colspan'},
81             )
82   %>
83 % }
84
85 %#  <% include( '/elements/tr-checkbox.html',
86 %#                'label'     => '<B>Apply discount to add-on packages</B>',
87 %#                'field'     => $name.'_linked',
88 %#                'id'        => $name.'_linked',
89 %#                'curr_value' => scalar($cgi->param($name.'_linked')),
90 %#                'value'     => 'Y',
91 %#                'colspan'    => $opt{'colspan'},
92 %#            )
93 %#  %>
94
95   <SCRIPT TYPE="text/javascript">
96
97 %   my $ge = 'document.getElementById';
98
99     function <% $name %>_changed(what) {
100       var <% $name %> = what.options[what.selectedIndex].value;
101
102       if ( <% $name %> == '-1' && ! what.disabled ) {
103         <% $ge %>('<% $name %>__type_label0').style.display = '';
104         <% $ge %>('<% $name %>__type_label0').style.visibility = '';
105         <% $ge %>('<% $name %>__type').style.display = '';
106         <% $ge %>('<% $name %>__type').style.visibility = '';
107
108         <% $name %>__type_changed( <% $ge %>('<% $name %>__type') );
109
110         <% $ge %>('<% $name %>_months_label0').style.display = '';
111         <% $ge %>('<% $name %>_months_label0').style.visibility = '';
112         <% $ge %>('<% $name %>_months').style.display = '';
113         <% $ge %>('<% $name %>_months').style.visibility = '';
114         <% $ge %>('<% $name %>_months_postfix').style.display = '';
115         <% $ge %>('<% $name %>_months_postfix').style.visibility = '';
116         <% $ge %>('<% $name %>_setup_label0').style.display = '';
117         <% $ge %>('<% $name %>_setup_label0').style.visibility = '';
118         <% $ge %>('<% $name %>_setup').style.display = '';
119         <% $ge %>('<% $name %>_setup').style.visibility = '';
120       } else {
121
122         <% $ge %>('<% $name %>__type_label0').style.display = 'none';
123         <% $ge %>('<% $name %>__type_label0').style.visibility = 'hidden';
124         <% $ge %>('<% $name %>__type').style.display = 'none';
125         <% $ge %>('<% $name %>__type').style.visibility = 'hidden';
126
127         <% $name %>__type_changed( <% $ge %>('<% $name %>__type') );
128
129         <% $ge %>('<% $name %>_months_label0').style.display = 'none';
130         <% $ge %>('<% $name %>_months_label0').style.visibility = 'hidden';
131         <% $ge %>('<% $name %>_months').style.display = 'none';
132         <% $ge %>('<% $name %>_months').style.visibility = 'hidden';
133         <% $ge %>('<% $name %>_months_postfix').style.display = 'none';
134         <% $ge %>('<% $name %>_months_postfix').style.visibility = 'hidden';
135         
136         <% $ge %>('<% $name %>_setup_label0').style.display = 'none';
137         <% $ge %>('<% $name %>_setup_label0').style.visibility = 'hidden';
138         <% $ge %>('<% $name %>_setup').style.display = 'none';
139         <% $ge %>('<% $name %>_setup').style.visibility = 'hidden';
140
141       }
142
143     }
144
145     function <% $name %>__type_changed(what) {
146       var <% $name %>__type = what.options[what.selectedIndex].value;
147
148       if ( <% $name %>__type == '<% $select %>' || what.style.display == 'none' ) {
149         <% $ge %>('<% $name %>_amount_label0').style.display = 'none';
150         <% $ge %>('<% $name %>_amount_label0').style.visibility = 'hidden';
151         <% $ge %>('<% $name %>_amount_input0').style.display = 'none';
152         <% $ge %>('<% $name %>_amount_input0').style.visibility = 'hidden';
153         <% $ge %>('<% $name %>_percent_label0').style.display = 'none';
154         <% $ge %>('<% $name %>_percent_label0').style.visibility = 'hidden';
155         <% $ge %>('<% $name %>_percent_input0').style.display = 'none';
156         <% $ge %>('<% $name %>_percent_input0').style.visibility = 'hidden';
157 //        <% $ge %>('<% $name %>_linked_label0').style.display = 'none';
158 //        <% $ge %>('<% $name %>_linked_label0').style.visibility = 'hidden';
159 //        <% $ge %>('<% $name %>_linked').style.display = 'none';
160 //        <% $ge %>('<% $name %>_linked').style.visibility = 'hidden';
161       } else if ( <% $name %>__type == 'Amount' ) {
162         <% $ge %>('<% $name %>_amount_label0').style.display = '';
163         <% $ge %>('<% $name %>_amount_label0').style.visibility = '';
164         <% $ge %>('<% $name %>_amount_input0').style.display = '';
165         <% $ge %>('<% $name %>_amount_input0').style.visibility = '';
166         <% $ge %>('<% $name %>_percent_label0').style.display = 'none';
167         <% $ge %>('<% $name %>_percent_label0').style.visibility = 'hidden';
168         <% $ge %>('<% $name %>_percent_input0').style.display = 'none';
169         <% $ge %>('<% $name %>_percent_input0').style.visibility = 'hidden';
170         <% $ge %>('<% $name %>_percent_input0').style.visibility = 'hidden';
171 //        <% $ge %>('<% $name %>_linked_label0').style.display = 'none';
172 //        <% $ge %>('<% $name %>_linked_label0').style.visibility = 'hidden';
173 //        <% $ge %>('<% $name %>_linked').style.display = 'none';
174 //        <% $ge %>('<% $name %>_linked').style.visibility = 'hidden';
175       } else if ( <% $name %>__type == 'Percentage' ) {
176         <% $ge %>('<% $name %>_amount_label0').style.display = 'none';
177         <% $ge %>('<% $name %>_amount_label0').style.visibility = 'hidden';
178         <% $ge %>('<% $name %>_amount_input0').style.display = 'none';
179         <% $ge %>('<% $name %>_amount_input0').style.visibility = 'hidden';
180         <% $ge %>('<% $name %>_percent_label0').style.display = '';
181         <% $ge %>('<% $name %>_percent_label0').style.visibility = '';
182         <% $ge %>('<% $name %>_percent_input0').style.display = '';
183         <% $ge %>('<% $name %>_percent_input0').style.visibility = '';
184         <% $ge %>('<% $name %>_percent_input0').style.visibility = '';
185 //        <% $ge %>('<% $name %>_linked_label0').style.display = '';
186 //        <% $ge %>('<% $name %>_linked_label0').style.visibility = '';
187 //        <% $ge %>('<% $name %>_linked').style.display = '';
188 //        <% $ge %>('<% $name %>_linked').style.visibility = '';
189      }
190
191     }
192
193     <% $name %>_changed(<% $ge %>('<% $name %>'));
194
195   </SCRIPT>
196
197 % } 
198 <%init>
199
200 my %opt = @_;
201 my $cgi = $opt{'cgi'};
202 my $discountnum = $opt{'curr_value'} || $opt{'value'};
203
204 $opt{'discount'} ||= [ qsearch( 'discount', { disabled=>'' } ) ];
205
206 my $curuser = $FS::CurrentUser::CurrentUser;
207
208 my $name = $opt{'element_name'} || $opt{'field'} || 'discountnum';
209
210 my $select = 'Select discount type';
211
212 my @_type_options = ( 'Amount', 'Percentage' );
213 unshift @_type_options, $select;
214
215 my $colspan = $opt{'colspan'} ? 'COLSPAN="'.$opt{'colspan'}.'"' : '';
216
217 my $onchange = ( $opt{'onchange'} ? delete($opt{'onchange'}).';' : '' ).
218                $name.'_changed(this);';
219
220 </%init>