1 <A NAME="cust_pkg"><FONT SIZE="+2">Packages</FONT></A><BR>
3 % if ( $curuser->access_right('One-time charge') ) {
5 <SCRIPT TYPE="text/javascript">
7 function taxproductmagic(which) {
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;
15 if (elements[i].name == 'taxproductnum_description'){
18 if (str.length){str += ';';}
19 str += elements[i].name + '=' + escape(elements[i].value);
21 document.getElementById('charge_storage').value = str;
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);
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);
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');
36 function taxoverridemagic(which) {
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;
44 if (str.length){str += ';';}
45 str += elements[i].name + '=' + escape(elements[i].value);
47 document.getElementById('charge_storage').value = str;
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);
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;
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');
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">
72 % if ( $curuser->access_right('Order customer package') ) {
73 <% $s++ ? ' | ' : '' %>
74 <% order_pkg_link($cust_main) %>
77 % if ( $curuser->access_right('One-time charge')
78 % && $conf->config('payby-default') ne 'HIDE'
81 <% $s++ ? ' | ' : '' %>
82 <% include('/elements/popup_link.html',
84 'action' => $p. 'edit/quick-charge.html?custnum='. $cust_main->custnum,
85 'label' => 'One-time charge',
86 'actionlabel' => 'One-time charge',
93 % if ( $curuser->access_right('Bulk change customer packages') ) {
94 <% $s++ ? ' | ' : '' %>
95 <A HREF="<% $p %>edit/cust_pkg.cgi?<% $cust_main->custnum %>">Bulk order and cancel packages</A> (preserves services)
100 % if ( @$packages ) {
104 % if ( $cust_main->num_cancelled_pkgs ) {
105 % if ( $cgi->param('showcancelledpackages') eq '0' #see if it was set by me
106 % || ( $conf->exists('hidecancelledpackages')
107 % && ! $cgi->param('showcancelledpackages')
111 % $cgi->param('showcancelledpackages', 1);
114 ( <a href="<% $cgi->self_url %>">show
116 % $cgi->param('showcancelledpackages', 0);
119 ( <a href="<% $cgi->self_url %>">hide
122 cancelled packages</a> )
124 % if ( @$packages ) {
126 <% include('/elements/table-grid.html') %>
127 % my $bgcolor1 = '#eeeeee';
128 % my $bgcolor2 = '#ffffff';
132 <TH CLASS="grid" BGCOLOR="#cccccc">Package</TH>
133 <TH CLASS="grid" BGCOLOR="#cccccc">Status</TH>
134 % if ( $show_location ) {
135 <TH CLASS="grid" BGCOLOR="#cccccc">Location</TH>
137 <TH CLASS="grid" BGCOLOR="#cccccc">Services</TH>
140 % foreach my $cust_pkg (@$packages) {
142 % if ( $bgcolor eq $bgcolor1 ) {
143 % $bgcolor = $bgcolor2;
145 % $bgcolor = $bgcolor1;
148 % my $countrydefault = scalar($conf->config('countrydefault')) || 'US';
150 % 'bgcolor' => $bgcolor,
151 % 'cust_pkg' => $cust_pkg,
152 % 'part_pkg' => $cust_pkg->part_pkg,
154 % #for services.html and status.html
155 % 'cust_pkg-display_times' => $conf->exists('cust_pkg-display_times'),
158 % 'countrydefault' => $countrydefault,
159 % 'statedefault' => ( scalar($conf->config('statedefault'))
160 % || ($countrydefault eq 'US' ? 'CA' : '') ),
163 % 'svc_external-skip_manual' => $conf->exists('svc_external-skip_manual'),
164 % 'legacy_link' => $conf->exists('legacy_link'),
168 <!--pkgnum: <% $cust_pkg->pkgnum %>-->
170 <% include('packages/package.html', %iopt) %>
171 <% include('packages/status.html', %iopt) %>
172 % if ( $show_location ) {
173 <% include('packages/location.html', %iopt) %>
175 <% include('packages/services.html', %iopt) %>
186 % if ( $cgi->param('fragment') =~ /^cust_pkg(\d+)$/ ) {
188 // IE-specific hack. other browsers listen to #fragments
189 // is this even working? or is the #target redirection just working cause
190 // we set the URL params differently?
191 var el = document.getElementById( 'cust_pkg<% $1 %>' );
192 if ( el ) el.scrollIntoView(true);
197 my( $cust_main ) = @_;
198 my $conf = new FS::Conf;
200 my $curuser = $FS::CurrentUser::CurrentUser;
202 my $packages = get_packages($cust_main, $conf);
204 my $show_location = $conf->exists('cust_pkg-always_show_location')
205 || ( grep $_->locationnum, @$packages ); # ? '1' : '0';
210 my $cust_main = shift or return undef;
215 if ( $cgi->param('showcancelledpackages') eq '0' #see if it was set by me
216 || ( $conf->exists('hidecancelledpackages')
217 && ! $cgi->param('showcancelledpackages') )
220 $method = 'ncancelled_pkgs';
222 $method = 'all_pkgs';
225 [ $cust_main->$method() ];
229 include( '/elements/popup_link-cust_main.html',
230 'action' => $p. 'misc/order_pkg.html',
231 'label' => 'Order new package',
232 'actionlabel' => 'Order new package',
233 'color' => '#333399',
234 'cust_main' => shift,
235 'closetext' => 'Close',