add tax-exempt checkbox to one-time charges, RT#4858
[freeside.git] / httemplate / view / cust_main / packages.html
1 <A NAME="cust_pkg"><FONT SIZE="+2">Packages</FONT></A><BR>
2
3 % if ( $curuser->access_right('One-time charge') ) {
4
5 <SCRIPT TYPE="text/javascript">
6
7 function taxproductmagic(which) {
8   var str = '';
9   var elements = which.form.elements;
10   for (var i = 0; i<elements.length; i++) {
11     if (elements[i].name == 'taxproductnum'){
12       document.getElementById('taxproductnum').value = elements[i].value;
13       continue;
14     }
15     if (elements[i].name == 'taxproductnum_description'){
16       continue;
17     }
18     if (str.length){str += ';';}
19     str += elements[i].name + '=' + escape(elements[i].value);
20   }
21   document.getElementById('charge_storage').value = str;
22   cClick();
23   overlib( OLiframeContent('<% $p %>/browse/part_pkg_taxproduct.cgi?_type=select&id=taxproductnum&onclick=taxproductquickchargemagic&taxproductnum='+document.getElementById('taxproductnum').value, 1000, 400, 'tax_product_popup'), CAPTION, 'Select product', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK);
24 }
25
26 function taxproductquickchargemagic() {
27   var str = document.getElementById('charge_storage').value;
28   if (str.length){str += ';';}
29   str += 'magic=taxproductnum;taxproductnum=';
30   str += escape(document.getElementById('taxproductnum').value);
31   cClick();
32   overlib( OLiframeContent('<% $p %>/edit/quick-charge.html?'+str, 545, 336, 'One-time charge'), CAPTION, 'One-time charge', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close');
33
34 }
35
36 function taxoverridemagic(which) {
37   var str = '';
38   var elements = which.ownerDocument.QuickChargeForm.elements;
39   for (var i = 0; i<elements.length; i++) {
40     if (elements[i].name == 'tax_override'){
41       document.getElementById('tax_override').value = elements[i].value;
42       continue;
43     }
44     if (str.length){str += ';';}
45     str += elements[i].name + '=' + escape(elements[i].value);
46   }
47   document.getElementById('charge_storage').value = str;
48   cClick();
49   overlib( OLiframeContent('<% $p %>/edit/part_pkg_taxoverride.html?element_name=tax_override;onclick=taxoverridequickchargemagic;selected='+document.getElementById('tax_override').value, 1100, 600, 'tax_product_popup'), CAPTION, 'Edit product tax overrides', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK);
50 }
51
52 function taxoverridequickchargemagic() {
53   var str = document.getElementById('charge_storage').value;
54   if (str.length){str += ';';}
55   str += 'magic=taxoverride;tax_override=';
56   str += document.getElementById('tax_override').value;
57   cClick();
58   overlib( OLiframeContent('<% $p %>/edit/quick-charge.html?'+str, 545, 336, 'One-time charge'), CAPTION, 'One-time charge', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close');
59
60 }
61
62 </SCRIPT>
63 <FORM NAME='quickcharge'>
64   <INPUT NAME="taxproductnum"  ID="taxproductnum"  TYPE="hidden">
65   <INPUT NAME="tax_override"   ID="tax_override"   TYPE="hidden">
66   <INPUT NAME="charge_storage" ID="charge_storage" TYPE="hidden">
67   <INPUT NAME="taxproductnum_description"  ID="taxproductnum_description" TYPE="hidden">
68 </FORM>
69 % } 
70
71 % my $s = 0;
72 % if ( $curuser->access_right('Order customer package') ) { 
73   <% $s++ ? ' | ' : '' %>
74   <% order_pkg_link($cust_main) %>
75 % } 
76
77 % if ( $curuser->access_right('One-time charge')
78 %        && $conf->config('payby-default') ne 'HIDE'
79 %      ) {
80 %
81   <% $s++ ? ' | ' : '' %>
82   <% include('/elements/popup_link.html',
83      { 
84        'action'      => $p. 'edit/quick-charge.html?custnum='. $cust_main->custnum,
85        'label'       => 'One-time charge',
86        'actionlabel' => 'One-time charge',
87        'color'       => '#333399',
88        'width'       => 763,
89        'height'      => 408,
90      })
91   %>
92 % } 
93
94 % if ( $curuser->access_right('Bulk change customer packages') ) { 
95   <% $s++ ? ' | ' : '' %>
96   <A HREF="<% $p %>edit/cust_pkg.cgi?<% $cust_main->custnum %>">Bulk order and cancel packages</A> (preserves services)
97 % } 
98
99
100 <BR><BR>
101 % if ( @$packages ) {
102
103 Current packages
104 % } 
105 % if ( $cust_main->num_cancelled_pkgs ) {
106 %     if ( $cgi->param('showcancelledpackages') eq '0' #see if it was set by me
107 %          || ( $conf->exists('hidecancelledpackages')
108 %               && ! $cgi->param('showcancelledpackages')
109 %             )
110 %        )
111 %     {
112 %       $cgi->param('showcancelledpackages', 1);
113 %
114
115   ( <a href="<% $cgi->self_url %>">show
116 %   } else {
117 %       $cgi->param('showcancelledpackages', 0);
118 %
119
120   ( <a href="<% $cgi->self_url %>">hide
121 %   } 
122
123  cancelled packages</a> )
124 % } 
125 % if ( @$packages ) { 
126
127 <% include('/elements/table-grid.html') %>
128 % my $bgcolor1 = '#eeeeee';
129 %   my $bgcolor2 = '#ffffff';
130 %   my $bgcolor = '';
131
132 <TR>
133   <TH CLASS="grid" BGCOLOR="#cccccc">Package</TH>
134   <TH CLASS="grid" BGCOLOR="#cccccc">Status</TH>
135 % if ( $show_location ) {
136   <TH CLASS="grid" BGCOLOR="#cccccc">Location</TH>
137 % }
138   <TH CLASS="grid" BGCOLOR="#cccccc">Services</TH>
139 </TR>
140
141 % foreach my $cust_pkg (@$packages) {
142 %
143 %   if ( $bgcolor eq $bgcolor1 ) {
144 %     $bgcolor = $bgcolor2;
145 %   } else {
146 %     $bgcolor = $bgcolor1;
147 %   }
148 %
149 %   my $countrydefault = scalar($conf->config('countrydefault')) || 'US';
150 %   my %iopt = (
151 %     'bgcolor'                  => $bgcolor,
152 %     'cust_pkg'                 => $cust_pkg,
153 %     'part_pkg'                 => $cust_pkg->part_pkg,
154 %
155 %     #for services.html and status.html
156 %     'cust_pkg-display_times'   => $conf->exists('cust_pkg-display_times'),
157 %
158 %     #for location.html
159 %     'countrydefault'           => $countrydefault,
160 %     'statedefault'             => ( scalar($conf->config('statedefault'))
161 %                                    || ($countrydefault eq 'US' ? 'CA' : '') ),
162 %
163 %     #for services.html
164 %     'svc_external-skip_manual' => $conf->exists('svc_external-skip_manual'),
165 %     'legacy_link'              => $conf->exists('legacy_link'),
166 %
167 %   );
168
169     <!--pkgnum: <% $cust_pkg->pkgnum %>-->
170     <TR>
171       <% include('packages/package.html',  %iopt) %>
172       <% include('packages/status.html',   %iopt) %>
173 % if ( $show_location ) {
174       <% include('packages/location.html', %iopt) %>
175 % }
176       <% include('packages/services.html', %iopt) %>
177     </TR>
178
179 % }
180
181 </TABLE>
182
183 % } else {
184 <BR>
185 % } 
186
187 % if ( $cgi->param('fragment') =~ /^cust_pkg(\d+)$/ ) {
188   <SCRIPT>
189     // IE-specific hack.  other browsers listen to #fragments
190     // is this even working?  or is the #target redirection just working cause
191     // we set the URL params differently?
192     var el = document.getElementById( 'cust_pkg<% $1 %>' );
193     if ( el ) el.scrollIntoView(true);
194   </SCRIPT>
195 % }
196 <%init>
197
198 my( $cust_main ) = @_;
199 my $conf = new FS::Conf;
200
201 my $curuser = $FS::CurrentUser::CurrentUser;
202
203 my $packages = get_packages($cust_main, $conf);
204
205 my $show_location = $conf->exists('cust_pkg-always_show_location')
206                         || ( grep $_->locationnum, @$packages ); # ? '1' : '0';
207
208 #subroutines
209
210 sub get_packages {
211   my $cust_main = shift or return undef;
212   my $conf = shift;
213   
214   my @packages = ();
215   my $method;
216   if (  $cgi->param('showcancelledpackages') eq '0' #see if it was set by me
217      || ( $conf->exists('hidecancelledpackages')
218            && ! $cgi->param('showcancelledpackages') )
219      )
220   {
221     $method = 'ncancelled_pkgs';
222   } else {
223     $method = 'all_pkgs';
224   }
225
226   [ $cust_main->$method() ];
227 }
228
229 sub order_pkg_link {
230   include( '/elements/popup_link-cust_main.html',
231              'action'      => $p. 'misc/order_pkg.html',
232              'label'       => 'Order&nbsp;new&nbsp;package',
233              'actionlabel' => 'Order new package',
234              'color'       => '#333399',
235              'cust_main'   => shift,
236              'closetext'   => 'Close',
237              'width'       => 763,
238          )
239 }
240
241 </%init>