diff options
Diffstat (limited to 'httemplate/view/cust_main/packages.html')
-rwxr-xr-x | httemplate/view/cust_main/packages.html | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/httemplate/view/cust_main/packages.html b/httemplate/view/cust_main/packages.html new file mode 100755 index 000000000..2c258881a --- /dev/null +++ b/httemplate/view/cust_main/packages.html @@ -0,0 +1,241 @@ +<A NAME="cust_pkg"><FONT SIZE="+2">Packages</FONT></A><BR> + +% if ( $curuser->access_right('One-time charge') ) { + +<SCRIPT TYPE="text/javascript"> + +function taxproductmagic(which) { + var str = ''; + var elements = which.form.elements; + for (var i = 0; i<elements.length; i++) { + if (elements[i].name == 'taxproductnum'){ + document.getElementById('taxproductnum').value = elements[i].value; + continue; + } + if (elements[i].name == 'taxproductnum_description'){ + continue; + } + if (str.length){str += ';';} + str += elements[i].name + '=' + escape(elements[i].value); + } + document.getElementById('charge_storage').value = str; + cClick(); + 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); +} + +function taxproductquickchargemagic() { + var str = document.getElementById('charge_storage').value; + if (str.length){str += ';';} + str += 'magic=taxproductnum;taxproductnum='; + str += escape(document.getElementById('taxproductnum').value); + cClick(); + 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'); + +} + +function taxoverridemagic(which) { + var str = ''; + var elements = which.ownerDocument.QuickChargeForm.elements; + for (var i = 0; i<elements.length; i++) { + if (elements[i].name == 'tax_override'){ + document.getElementById('tax_override').value = elements[i].value; + continue; + } + if (str.length){str += ';';} + str += elements[i].name + '=' + escape(elements[i].value); + } + document.getElementById('charge_storage').value = str; + cClick(); + 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); +} + +function taxoverridequickchargemagic() { + var str = document.getElementById('charge_storage').value; + if (str.length){str += ';';} + str += 'magic=taxoverride;tax_override='; + str += document.getElementById('tax_override').value; + cClick(); + 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'); + +} + +</SCRIPT> +<FORM NAME='quickcharge'> + <INPUT NAME="taxproductnum" ID="taxproductnum" TYPE="hidden"> + <INPUT NAME="tax_override" ID="tax_override" TYPE="hidden"> + <INPUT NAME="charge_storage" ID="charge_storage" TYPE="hidden"> + <INPUT NAME="taxproductnum_description" ID="taxproductnum_description" TYPE="hidden"> +</FORM> +% } + +% my $s = 0; +% if ( $curuser->access_right('Order customer package') ) { + <% $s++ ? ' | ' : '' %> + <% order_pkg_link($cust_main) %> +% } + +% if ( $curuser->access_right('One-time charge') +% && $conf->config('payby-default') ne 'HIDE' +% ) { +% + <% $s++ ? ' | ' : '' %> + <% include('/elements/popup_link.html', + { + 'action' => $p. 'edit/quick-charge.html?custnum='. $cust_main->custnum, + 'label' => 'One-time charge', + 'actionlabel' => 'One-time charge', + 'color' => '#333399', + 'width' => 763, + 'height' => 408, + }) + %> +% } + +% if ( $curuser->access_right('Bulk change customer packages') ) { + <% $s++ ? ' | ' : '' %> + <A HREF="<% $p %>edit/cust_pkg.cgi?<% $cust_main->custnum %>">Bulk order and cancel packages</A> (preserves services) +% } + + +<BR><BR> +% if ( @$packages ) { + +Current packages +% } +% if ( $cust_main->num_cancelled_pkgs ) { +% if ( $cgi->param('showcancelledpackages') eq '0' #see if it was set by me +% || ( $conf->exists('hidecancelledpackages') +% && ! $cgi->param('showcancelledpackages') +% ) +% ) +% { +% $cgi->param('showcancelledpackages', 1); +% + + ( <a href="<% $cgi->self_url %>">show +% } else { +% $cgi->param('showcancelledpackages', 0); +% + + ( <a href="<% $cgi->self_url %>">hide +% } + + cancelled packages</a> ) +% } +% if ( @$packages ) { + +<% include('/elements/table-grid.html') %> +% my $bgcolor1 = '#eeeeee'; +% my $bgcolor2 = '#ffffff'; +% my $bgcolor = ''; + +<TR> + <TH CLASS="grid" BGCOLOR="#cccccc">Package</TH> + <TH CLASS="grid" BGCOLOR="#cccccc">Status</TH> +% if ( $show_location ) { + <TH CLASS="grid" BGCOLOR="#cccccc">Location</TH> +% } + <TH CLASS="grid" BGCOLOR="#cccccc">Services</TH> +</TR> + +% foreach my $cust_pkg (@$packages) { +% +% if ( $bgcolor eq $bgcolor1 ) { +% $bgcolor = $bgcolor2; +% } else { +% $bgcolor = $bgcolor1; +% } +% +% my $countrydefault = scalar($conf->config('countrydefault')) || 'US'; +% my %iopt = ( +% 'bgcolor' => $bgcolor, +% 'cust_pkg' => $cust_pkg, +% 'part_pkg' => $cust_pkg->part_pkg, +% +% #for services.html and status.html +% 'cust_pkg-display_times' => $conf->exists('cust_pkg-display_times'), +% +% #for location.html +% 'countrydefault' => $countrydefault, +% 'statedefault' => ( scalar($conf->config('statedefault')) +% || ($countrydefault eq 'US' ? 'CA' : '') ), +% +% #for services.html +% 'svc_external-skip_manual' => $conf->exists('svc_external-skip_manual'), +% 'legacy_link' => $conf->exists('legacy_link'), +% +% ); + + <!--pkgnum: <% $cust_pkg->pkgnum %>--> + <TR> + <% include('packages/package.html', %iopt) %> + <% include('packages/status.html', %iopt) %> +% if ( $show_location ) { + <% include('packages/location.html', %iopt) %> +% } + <% include('packages/services.html', %iopt) %> + </TR> + +% } + +</TABLE> + +% } else { +<BR> +% } + +% if ( $cgi->param('fragment') =~ /^cust_pkg(\d+)$/ ) { + <SCRIPT> + // IE-specific hack. other browsers listen to #fragments + // is this even working? or is the #target redirection just working cause + // we set the URL params differently? + var el = document.getElementById( 'cust_pkg<% $1 %>' ); + if ( el ) el.scrollIntoView(true); + </SCRIPT> +% } +<%init> + +my( $cust_main ) = @_; +my $conf = new FS::Conf; + +my $curuser = $FS::CurrentUser::CurrentUser; + +my $packages = get_packages($cust_main, $conf); + +my $show_location = $conf->exists('cust_pkg-always_show_location') + || ( grep $_->locationnum, @$packages ); # ? '1' : '0'; + +#subroutines + +sub get_packages { + my $cust_main = shift or return undef; + my $conf = shift; + + my @packages = (); + my $method; + if ( $cgi->param('showcancelledpackages') eq '0' #see if it was set by me + || ( $conf->exists('hidecancelledpackages') + && ! $cgi->param('showcancelledpackages') ) + ) + { + $method = 'ncancelled_pkgs'; + } else { + $method = 'all_pkgs'; + } + + [ $cust_main->$method() ]; +} + +sub order_pkg_link { + include( '/elements/popup_link-cust_main.html', + 'action' => $p. 'misc/order_pkg.html', + 'label' => 'Order new package', + 'actionlabel' => 'Order new package', + 'color' => '#333399', + 'cust_main' => shift, + 'closetext' => 'Close', + 'width' => 763, + ) +} + +</%init> |