| Items | ';
  foreach ( $cust_bill->cust_bill_pkg ) { #false laziness with FS::cust_bill
    if ( $_->pkgnum ) {
      my($cust_pkg)=qsearchs('cust_pkg', { 'pkgnum', $_->pkgnum } );
      my($part_pkg)=qsearchs('part_pkg',{'pkgpart'=>$cust_pkg->pkgpart});
      my($pkg)=$part_pkg->pkg;
      if ( $_->setup != 0 ) {
        print "$pkg Setup "; # $money_char. sprintf("%10.2f",$_->setup);
        print join('
 ',
          map { "  ". $_->[0]. ": ". $_->[1] } $cust_pkg->labels
        ). '
 ';
      }
      if ( $_->recur != 0 ) {
        print
          "$pkg (" . time2str("%x",$_->sdate) . " - " .
                                time2str("%x",$_->edate) . ")
 ";
          #$money_char. sprintf("%10.2f",$_->recur)
        print join('
 ',
          map { '--->'. $_->[0]. ": ". $_->[1] } $cust_pkg->labels
        ). '
 ';
      }
    } else { #pkgnum Tax
      print "Tax
 " # $money_char. sprintf("%10.2f",$_->setup)
        if $_->setup != 0;
    }
  }
  print '
 |