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