add customer fields option with agent, display_custnum, status and name, RT#73721
[freeside.git] / FS / FS / cust_bill_pkg_display.pm
index e9da18d..e3afded 100644 (file)
@@ -1,10 +1,7 @@
 package FS::cust_bill_pkg_display;
+use base qw( FS::Record );
 
 use strict;
-use vars qw( @ISA );
-use FS::Record qw( qsearch qsearchs );
-
-@ISA = qw(FS::Record);
 
 =head1 NAME
 
@@ -27,26 +24,26 @@ FS::cust_bill_pkg_display - Object methods for cust_bill_pkg_display records
 
 =head1 DESCRIPTION
 
-An FS::cust_bill_pkg_display object represents line item display information.
-FS::cust_bill_pkg_display inherits from FS::Record.  The following fields are
-currently supported:
-
-=over 4
-
-=item billpkgdisplaynum
+An FS::cust_bill_pkg_display object represents an instruction to display a 
+line item in a specific invoice section.  FS::cust_bill_pkg_display inherits
+from FS::Record and is many-to-one with FS::cust_bill_pkg (invoice line 
+items).
 
-primary key
+The following fields are currently supported:
 
-=item billpkgnum
+=over 4
 
-billpkgnum
+=item billpkgdisplaynum - primary key
 
-=item section
+=item billpkgnum - the line item number (L<FS::cust_bill_pkg> foreign key)
 
-section
+=item section - the section name where this item should be shown.  Defaults
+to the package category name, if there is one.
 
 =cut
 
+# actually it defaults to null, but then calling ->section will return the 
+# category name.
 sub section {
   my ( $self, $value ) = @_;
   if ( defined($value) ) {
@@ -55,7 +52,7 @@ sub section {
     my $section = $self->getfield('section');
     unless ($section) {
       my $cust_bill_pkg = $self->cust_bill_pkg;
-      if ( $cust_bill_pkg->pkgnum > 0 ) {
+      if ( $cust_bill_pkg->pkgnum > 0 && !$cust_bill_pkg->hidden ) {
         my $part_pkg = $cust_bill_pkg->part_pkg;
         $section = $part_pkg->categoryname if $part_pkg;
       }
@@ -64,17 +61,19 @@ sub section {
   }
 }
 
-=item post_total
-
-post_total
-
-=item type
-
-type
+=item post_total - 'Y' to have this item shown in a "late" section (below
+the invoice totals).
 
-=item summary
+=item type - Which portion of the item's charges to show in the specified
+position.  'S' to show setup fees (including tax and one-time charge),
+'R' to show the non-usage recurring charge, 'U' to show the usage charge,
+null to show all three as a single amount.
 
-summary
+=item summary - 'Y' to show a usage summary of this line item.  This has
+the following effects if type = 'U':
+- The description will always be "Usage charges" rather than the package name.
+- Service labels and usage details (CDRs) are hidden.
+- It will only display on multisection invoices.
 
 =back
 
@@ -84,7 +83,8 @@ summary
 
 =item new HASHREF
 
-Creates a new line item display object.  To add the record to the database, see L<"insert">.
+Creates a new line item display object.  To add the record to the database, 
+see L<"insert">.
 
 Note that this stores the hash reference, not a distinct copy of the hash it
 points to.  You can ask the object for a copy with the I<hash> method.
@@ -143,19 +143,10 @@ sub check {
 Returns the associated cust_bill_pkg (see L<FS::cust_bill_pkg>) for this
 line item display object.
 
-=cut
-
-sub cust_bill_pkg {
-  my $self = shift;
-  qsearchs( 'cust_bill_pkg', { 'billpkgnum' => $self->billpkgnum } ) ;
-}
-
 =back
 
 =head1 BUGS
 
-
-
 =head1 SEE ALSO
 
 L<FS::Record>, L<FS::cust_bill_pkg>, schema.html from the base documentation.