diff options
Diffstat (limited to 'httemplate/view/cust_main')
-rwxr-xr-x | httemplate/view/cust_main/locations.html | 87 | ||||
-rwxr-xr-x | httemplate/view/cust_main/packages.html | 96 | ||||
-rw-r--r-- | httemplate/view/cust_main/packages/location.html | 13 | ||||
-rw-r--r-- | httemplate/view/cust_main/packages/package.html | 27 | ||||
-rwxr-xr-x | httemplate/view/cust_main/packages/section.html | 95 |
5 files changed, 240 insertions, 78 deletions
diff --git a/httemplate/view/cust_main/locations.html b/httemplate/view/cust_main/locations.html new file mode 100755 index 000000000..319a92747 --- /dev/null +++ b/httemplate/view/cust_main/locations.html @@ -0,0 +1,87 @@ +<STYLE> +span.loclabel { + padding-left: 4px; + padding-right: 4px; + background-color: #cccccc; + border: 1px solid black +} +</STYLE> +% foreach my $locationnum (@sorted) { +% my $packages = $packages_in{$locationnum}; +% my $loc = $locations{$locationnum}; +% next if $loc->disabled and scalar(@$packages) == 0; +<% include('/elements/table-grid.html') %> +<TR><TH COLSPAN=3 ALIGN="left" VALIGN="bottom" +STYLE="padding-bottom: 0px; + padding-left: 0px; + border-bottom-style: solid; + border-bottom-color: black; + border-bottom-width: 1px;"> +<SPAN CLASS="loclabel"> +% if (! $locationnum) { +Default service location: +% } +% elsif ( $loc->disabled ) { +<FONT COLOR="#808080"><I> +% } +<% $loc->location_label %></SPAN> +<SPAN STYLE="float:right;"> +% if ( $locationnum and !$loc->disabled ) { +<% edit_location_link($locationnum) %> +% } +% if ( !$loc->disabled and !$active{$locationnum} ) { + <% disable_location_link($locationnum) %> +% } +</SPAN></TH></TR> +% if (@$packages) { +<% include('packages/section.html', 'packages' => $packages ) %> +% } +</TABLE><BR> +% } #foreach $locationnum +<%init> +my %opt = @_; +my $cust_main = $opt{'cust_main'}; +my $all_packages = $opt{'packages'}; + +my %locations = map { $_->locationnum => $_ } qsearch({ + 'table' => 'cust_location', + 'hashref' => { 'custnum' => $cust_main->custnum }, + 'order_by' => 'ORDER BY country, state, city, address1, locationnum', + }); +my @sections = keys %locations; +$locations{''} = $cust_main; +my %packages_in = map { $_ => [] } @sections; + +my %active = (); # groups with non-canceled packages +foreach my $cust_pkg ( @$all_packages ) { + my $key = $cust_pkg->locationnum; + push @{ $packages_in{$key} }, $cust_pkg; + $active{$key} = 1 if !$cust_pkg->getfield('cancel'); +} + +my @sorted = ( + '', + grep ( { $active{$_} } @sections), + grep ( { !$active{$_} } @sections), +); + +sub edit_location_link { + my $locationnum = shift; + include( '/elements/popup_link.html', + 'action' => $p. "edit/cust_location.cgi?locationnum=$locationnum", + 'label' => '(Edit location)', + 'actionlabel' => 'Edit', + ); +} + +sub disable_location_link { + my $locationnum = shift; + include( '/elements/popup_link.html', + 'action' => $p. "misc/disable-cust_location.cgi?locationnum=$locationnum", + 'label' => '(Disable location)', + 'actionlabel' => 'Disable', + ); +} + + +</%init> diff --git a/httemplate/view/cust_main/packages.html b/httemplate/view/cust_main/packages.html index ce34158d8..383c2a75e 100755 --- a/httemplate/view/cust_main/packages.html +++ b/httemplate/view/cust_main/packages.html @@ -75,61 +75,23 @@ Current packages <TR> <TD COLSPAN=2> - -% 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> - -% #$FS::cust_pkg::DEBUG = 2; -% foreach my $cust_pkg (@$packages) { -% -% if ( $bgcolor eq $bgcolor1 ) { -% $bgcolor = $bgcolor2; -% } else { -% $bgcolor = $bgcolor1; -% } -% -% my %iopt = ( -% 'bgcolor' => $bgcolor, -% 'cust_pkg' => $cust_pkg, -% 'part_pkg' => $cust_pkg->part_pkg, -% %conf_opt, -% ); -% - - <!--pkgnum: <% $cust_pkg->pkgnum %>--> - <TR> - <% include('packages/package.html', %iopt) %> - <% include('packages/status.html', %iopt) %> -% if ( $show_location ) { - <% include('packages/location.html', %iopt) %> +% if ( $conf->exists('cust_pkg-group_by_location') and $show_location ) { +<% include('locations.html', + 'cust_main' => $cust_main, + 'packages' => $packages, +) %> % } - <% include('packages/services.html', %iopt) %> - </TR> - -% } - +% else { +% # in this format, put all packages in one section +<% include('/elements/table-grid.html') %> +<% include('packages/section.html', + 'packages' => $packages, + 'show_location' => $show_location, +) %> </TABLE> - -% } else { -<BR> -% } - +% } </TD> </TR> -</TABLE> % if ( $cgi->param('fragment') =~ /^cust_pkg(\d+)$/ ) { <SCRIPT> @@ -140,42 +102,22 @@ Current packages if ( el ) el.scrollIntoView(true); </SCRIPT> % } - +</TABLE> <%init> -my( $cust_main ) = @_; +my $cust_main = shift; +my %opt = @_; my $conf = new FS::Conf; my $curuser = $FS::CurrentUser::CurrentUser; my( $packages, $num_old_packages ) = get_packages($cust_main, $conf); -my $show_location = $conf->exists('cust_pkg-always_show_location') - || ( grep $_->locationnum, @$packages ); # ? '1' : '0'; -my $countrydefault = scalar($conf->config('countrydefault')) || 'US'; -my %conf_opt = ( - #for services.html and status.html - 'cust_pkg-display_times' => ($conf->exists('cust_pkg-display_times') - || $curuser->option('cust_pkg-display_times')), - #for status.html - 'cust_pkg-show_autosuspend' => $conf->exists('cust_pkg-show_autosuspend'), - #for status.html pkg-balances - 'pkg-balances' => $conf->exists('pkg-balances'), - 'money_char' => ( $conf->config('money_char') || '$' ), - - #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'), - 'svc_broadband-manage_link' => scalar($conf->config('svc_broadband-manage_link')), - 'maestro-status_test' => $conf->exists('maestro-status_test'), - 'cust_pkg-large_pkg_size' => $conf->config('cust_pkg-large_pkg_size'), -); +my $show_location = $conf->exists('cust_pkg-always_show_location') + || (grep $_->locationnum, @$packages); # ? '1' : '0'; +my $countrydefault = scalar($conf->config('countrydefault')) || 'US'; #subroutines sub get_packages { diff --git a/httemplate/view/cust_main/packages/location.html b/httemplate/view/cust_main/packages/location.html index 41155cbae..40a7de59f 100644 --- a/httemplate/view/cust_main/packages/location.html +++ b/httemplate/view/cust_main/packages/location.html @@ -21,12 +21,16 @@ % { <FONT SIZE=-1> ( <%pkg_change_location_link($cust_pkg)%> ) +% if ( $cust_pkg->locationnum ) { + ( <%edit_location_link($cust_pkg->locationnum)%> ) +% } </FONT> % } </TD> <%init> +my $conf = new FS::Conf; my %opt = @_; my $bgcolor = $opt{'bgcolor'}; @@ -50,4 +54,13 @@ sub pkg_change_location_link { ); } +sub edit_location_link { + my $locationnum = shift; + include( '/elements/popup_link.html', + 'action' => $p. "edit/cust_location.cgi?locationnum=$locationnum", + 'label' => 'Edit location', + 'actionlabel' => 'Edit', + ); +} + </%init> diff --git a/httemplate/view/cust_main/packages/package.html b/httemplate/view/cust_main/packages/package.html index 3b58f9ec0..8cae5fdba 100644 --- a/httemplate/view/cust_main/packages/package.html +++ b/httemplate/view/cust_main/packages/package.html @@ -168,8 +168,16 @@ % } </TR> +% if ( $curuser->access_right('Change customer package') and +% !$cust_pkg->get('cancel') and +% !$opt{'show_location'}) { + <TR> + <TD><FONT SIZE="-1"> + ( <% pkg_change_location_link($cust_pkg) %> ) + </FONT></TD> + </TR> +% } % } - </TABLE> </TD> @@ -184,6 +192,10 @@ my $part_pkg = $opt{'part_pkg'}; my $curuser = $FS::CurrentUser::CurrentUser; +my $countrydefault = $opt{'countrydefault'} || 'US'; +my $statedefault = $opt{'statedefault'} + || ($countrydefault eq 'US' ? 'CA' : ''); + #subroutines #false laziness w/status.html @@ -204,6 +216,19 @@ sub pkg_change_link { ); } +sub pkg_change_location_link { + my $cust_pkg = shift; + my $pkgpart = $cust_pkg->pkgpart; + include( '/elements/popup_link-cust_pkg.html', + 'action' => $p. "misc/change_pkg.cgi?locationnum=-1;pkgpart=$pkgpart;". + "address1=;address2=;city=;county=;state=$statedefault;". + "zip=;country=$countrydefault", + 'label' => 'Change location', + 'actionlabel' => 'Change', + 'cust_pkg' => $cust_pkg, + ); +} + sub pkg_dates_link { pkg_link('edit/REAL_cust_pkg', 'Edit dates', @_ ); } sub pkg_discount_link { diff --git a/httemplate/view/cust_main/packages/section.html b/httemplate/view/cust_main/packages/section.html new file mode 100755 index 000000000..0795d4e59 --- /dev/null +++ b/httemplate/view/cust_main/packages/section.html @@ -0,0 +1,95 @@ +% if ( @$packages ) { +% my $bgcolor1 = '#eeeeee'; +% my $bgcolor2 = '#ffffff'; +% my $bgcolor = ''; + +<TR> +% #my $width = $show_location ? 'WIDTH="25%"' : 'WIDTH="33%"'; + <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> + +% #$FS::cust_pkg::DEBUG = 2; +% foreach my $cust_pkg (@$packages) { +% +% if ( $bgcolor eq $bgcolor1 ) { +% $bgcolor = $bgcolor2; +% } else { +% $bgcolor = $bgcolor1; +% } +% +% my %iopt = ( +% 'bgcolor' => $bgcolor, +% 'cust_pkg' => $cust_pkg, +% 'part_pkg' => $cust_pkg->part_pkg, +% %conf_opt, +% ); +% + + <!--pkgnum: <% $cust_pkg->pkgnum %>--> + <TR> + <% include('package.html', %iopt) %> + <% include('status.html', %iopt) %> +% if ( $show_location ) { + <% include('location.html', %iopt) %> +% } + <% include('services.html', %iopt) %> + </TR> + +% } #foreach $cust_pkg +%# </TABLE> +% } #if @$packages +% else { +<BR> +% } + +<%init> + +my %opt = @_; +my $conf = new FS::Conf; + +my $curuser = $FS::CurrentUser::CurrentUser; + +my $packages = $opt{'packages'}; +my $show_location = $opt{'show_location'}; + +# Sort order is hardcoded for now, can change this if needed. +@$packages = sort { + ( $a->getfield('cancel') <=> $b->getfield('cancel') ) or + ( $a->getfield('setup') <=> $b->getfield('setup') ) or + ( $a->getfield('pkgnum') <=> $b->getfield('pkgnum') ) +} @$packages; + +my $countrydefault = scalar($conf->config('countrydefault')) || 'US'; + +my %conf_opt = ( + #for services.html and status.html + 'cust_pkg-display_times' => $conf->exists('cust_pkg-display_times') + || $curuser->option('cust_pkg-display_times')), + #for status.html + 'cust_pkg-show_autosuspend' => $conf->exists('cust_pkg-show_autosuspend'), + #for status.html pkg-balances + 'pkg-balances' => $conf->exists('pkg-balances'), + 'money_char' => ( $conf->config('money_char') || '$' ), + + #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'), + 'svc_broadband-manage_link' => scalar($conf->config('svc_broadband-manage_link')), + 'maestro-status_test' => $conf->exists('maestro-status_test'), + 'cust_pkg-large_pkg_size' => $conf->config('cust_pkg-large_pkg_size'), + + # for packages.html Change location link + 'show_location' => $show_location, +); + + +</%init> |