This commit was generated by cvs2svn to compensate for changes in r11022,
[freeside.git] / httemplate / edit / discount.html
1 <% include( 'elements/edit.html',
2                  'name'   => 'Discount',
3                  'table'  => 'discount',
4                  'fields' => [
5                                'name',
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',
12                                },
13                                { field => 'amount',   type => 'money',
14                                  default => '0.00',
15                                  #cell_style => $amount_style,
16                                },
17                                { field => 'percent',  type => 'percentage',
18                                  default => 0,
19                                  #cell_style => $percent_style,
20                                },
21                                { field => 'months', type => 'text', size => 2,
22                                  postfix => '<BR><FONT SIZE="-1"><I>(blank for non-expiring discount)</I></FONT>',
23                                },
24                              ],
25                  'labels' => { 
26                                'discountnum' => 'Discount #',
27                                'name'        => 'Name&nbsp;',
28                                'disabled'    => 'Disabled&nbsp;',
29                                '_type'       => 'Type&nbsp;',
30                                'amount'      => 'Amount&nbsp;',
31                                'percent'     => 'Percentage&nbsp;',
32                                'months'      => 'Duration (months)',
33                              },
34                  'viewall_dir' => 'browse',
35                  'new_callback' => $new_callback,
36                  'edit_callback' => $edit_callback,
37                  'error_callback' => $error_callback,
38                  'html_init' => $javascript,
39                  'body_etc' => 'onLoad="_type_changed(document.edit_topform._type)"',
40            )
41 %>
42 <%init>
43
44 die "access denied"
45   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
46
47 my @_type_options = ( 'Amount', 'Percentage' );
48
49 #my $amount_style = '';
50 #my $percent_style = '';
51
52 #my $hide = 'display:none;visibility:hidden';
53 my $select = 'Select discount type';
54
55 my $new_callback = sub {
56   #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
57
58   #$amount_style  = $hide;
59   #$percent_style = $hide;
60   unshift @_type_options, $select;
61 };
62
63 my $edit_callback = sub {
64   #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
65   my( $cgi, $object ) = @_;
66
67   if ( $object->amount > 0 && $object->percent == 0 ) {
68     $object->set('_type', 'Amount');
69     #$percent_style = $hide;
70   } elsif ( $object->amount == 0 && $object->percent > 0 ) {
71     $object->set('_type', 'Percentage');
72     #$amount_style = $hide;
73   } elsif ( $object->amount == 0 && $object->percent == 0 ) {
74     #$amount_style  = $hide;
75     #$percent_style = $hide;
76     unshift @_type_options, $select;
77   } else {
78     die "discount.amount and discount.percent not yet handled by web UI";
79   }
80
81 };
82
83 my $error_callback = sub {
84   #my( $cgi, $object, $fields_listref, $opt_hashref ) = @_;
85   my( $cgi, $object ) = @_;
86
87   if ( $cgi->param('_type') eq 'Amount' ) {
88     $object->set('_type', 'Amount');
89     #A$percent_style = $hide;
90   } elsif ( $cgi->param('_type') eq 'Percentage' ) {
91     $object->set('_type', 'Percentage');
92     #$amount_style = $hide;
93   } else {
94     #$amount_style  = $hide;
95     #$percent_style = $hide;
96     unshift @_type_options, $select;
97   }
98
99 };
100
101 my $javascript = <<END;
102   <SCRIPT TYPE="text/javascript">
103     function _type_changed(what) {
104       var _type = what.options[what.selectedIndex].value;
105
106       if ( _type == '$select' ) {
107         document.getElementById('amount_label').style.display = 'none';
108         document.getElementById('amount_label').style.visibility = 'hidden';
109         document.getElementById('amount_input0').style.display = 'none';
110         document.getElementById('amount_input0').style.visibility = 'hidden';
111         document.getElementById('percent_label').style.display = 'none';
112         document.getElementById('percent_label').style.visibility = 'hidden';
113         document.getElementById('percent_input0').style.display = 'none';
114         document.getElementById('percent_input0').style.visibility = 'hidden';
115       } else if ( _type == 'Amount' ) {
116         document.getElementById('amount_label').style.display = '';
117         document.getElementById('amount_label').style.visibility = '';
118         document.getElementById('amount_input0').style.display = '';
119         document.getElementById('amount_input0').style.visibility = '';
120         document.getElementById('percent_label').style.display = 'none';
121         document.getElementById('percent_label').style.visibility = 'hidden';
122         document.getElementById('percent_input0').style.display = 'none';
123         document.getElementById('percent_input0').style.visibility = 'hidden';
124       } else if ( _type == 'Percentage' ) {
125         document.getElementById('amount_label').style.display = 'none';
126         document.getElementById('amount_label').style.visibility = 'hidden';
127         document.getElementById('amount_input0').style.display = 'none';
128         document.getElementById('amount_input0').style.visibility = 'hidden';
129         document.getElementById('percent_label').style.display = '';
130         document.getElementById('percent_label').style.visibility = '';
131         document.getElementById('percent_input0').style.display = '';
132         document.getElementById('percent_input0').style.visibility = '';
133      }
134
135     }
136   </SCRIPT>
137 END
138
139 </%init>