-% my(@lol_cust_svc);
-% my($rowspan)=0;#scalar( @{$all_pkgs{$custnum}} );
-% foreach ( @{$all_pkgs{$custnum}} ) {
-% my @cust_svc = $_->cust_svc;
-% push @lol_cust_svc, \@cust_svc;
-% $rowspan += scalar(@cust_svc) || 1;
+% my @all_cust_svc;
+% my @pkg_rowspans;
+% foreach my $cust_pkg ( @{$all_pkgs{$custnum}} ) {
+% my %cust_svc_by_svcpart;
+% foreach my $svc ( $cust_pkg->cust_svc ) {
+% push @{ $cust_svc_by_svcpart{$svc->svcpart} ||= [] }, $svc;
+% }
+% push @all_cust_svc, \%cust_svc_by_svcpart;
+% if ( !keys %cust_svc_by_svcpart ) {
+% # no services
+% push @pkg_rowspans, 1;
+% }
+% else {
+% my $rows = 0;
+% foreach (values %cust_svc_by_svcpart) {
+% # summarizing takes two rows per svcpart,
+% # full display takes one per cust_svc
+% $rows += ( $large_pkg_size > 0 && $large_pkg_size <= scalar @$_ ) ?
+% 2 : scalar @$_;
+% }
+% push @pkg_rowspans, $rows;
+% }