default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / httemplate / edit / discount.html
1 <% include( 'elements/edit.html',
2                  'name'   => 'Discount',
3                  'table'  => 'discount',
4                  'fields' => [
5                                'name',
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',
13                                },
14                                { field => 'amount',   type => 'money',
15                                  default => '0.00',
16                                  #cell_style => $amount_style,
17                                },
18                                { field => 'percent',  type => 'percentage',
19                                  default => 0,
20                                  #cell_style => $percent_style,
21                                },
22                                { field => 'months', type => 'text', size => 2,
23                                  postfix => '<BR><FONT SIZE="-1"><I>(blank for non-expiring discount)</I></FONT>',
24                                },
25                                { field => 'setup', type => 'checkbox', value=>'Y', },
26                                #{ field => 'linked', type => 'checkbox', value=>'Y', },
27                              ],
28                  'labels' => { 
29                                'discountnum' => 'Discount #',
30                                'name'        => 'Name&nbsp;',
31                                'classnum'    => 'Class',
32                                'disabled'    => 'Disabled&nbsp;',
33                                '_type'       => 'Type&nbsp;',
34                                'amount'      => 'Amount&nbsp;',
35                                'percent'     => 'Percentage&nbsp;',
36                                'months'      => 'Duration (months)',
37                                'setup'       => 'Apply to setup fees',
38                                #'linked'      => 'Apply to add-on packages',
39                              },
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)"',
46            )
47 %>
48 <%init>
49
50 die "access denied"
51   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
52
53 my @_type_options = ( 'Amount', 'Percentage' );
54
55 #my $amount_style = '';
56 #my $percent_style = '';
57
58 #my $hide = 'display:none;visibility:hidden';
59 my $select = 'Select discount type';
60
61 my $new_callback = sub {
62   #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
63
64   #$amount_style  = $hide;
65   #$percent_style = $hide;
66   unshift @_type_options, $select;
67 };
68
69 my $edit_callback = sub {
70   #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
71   my( $cgi, $object ) = @_;
72
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;
83   } else {
84     die "discount.amount and discount.percent not yet handled by web UI";
85   }
86
87 };
88
89 my $error_callback = sub {
90   #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
91   my( $cgi, $object ) = @_;
92
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;
99   } else {
100     #$amount_style  = $hide;
101     #$percent_style = $hide;
102     unshift @_type_options, $select;
103   }
104
105 };
106
107 my $javascript = <<END;
108   <SCRIPT TYPE="text/javascript">
109     function _type_changed(what) {
110       var _type = what.options[what.selectedIndex].value;
111
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 = '';
151      }
152
153     }
154   </SCRIPT>
155 END
156
157 </%init>