show credit balance on invoices, #11564
[freeside.git] / FS / FS / pkg_class.pm
index 254282f..51d0455 100644 (file)
@@ -1,13 +1,11 @@
 package FS::pkg_class;
 
 use strict;
 package FS::pkg_class;
 
 use strict;
-use vars qw( @ISA );
-use FS::Record qw( qsearchs qsearch );
+use FS::class_Common;
+use base qw( FS::class_Common );
 use FS::part_pkg;
 use FS::pkg_category;
 
 use FS::part_pkg;
 use FS::pkg_category;
 
-@ISA = qw( FS::Record );
-
 =head1 NAME
 
 FS::pkg_class - Object methods for pkg_class records
 =head1 NAME
 
 FS::pkg_class - Object methods for pkg_class records
@@ -35,13 +33,21 @@ from FS::Record.  The following fields are currently supported:
 
 =over 4
 
 
 =over 4
 
-=item classnum - primary key (assigned automatically for new package classes)
+=item classnum
+
+primary key (assigned automatically for new package classes)
+
+=item classname
+
+Text name of this package class
 
 
-=item classname - Text name of this package class
+=item categorynum
 
 
-=item categorynum - Number of associated pkg_category (see L<FS::pkg_category>)
+Number of associated pkg_category (see L<FS::pkg_category>)
 
 
-=item disabled - Disabled flag, empty or 'Y'
+=item disabled
+
+Disabled flag, empty or 'Y'
 
 =back
 
 
 =back
 
@@ -57,6 +63,7 @@ L<"insert">.
 =cut
 
 sub table { 'pkg_class'; }
 =cut
 
 sub table { 'pkg_class'; }
+sub _target_table { 'part_pkg'; }
 
 =item insert
 
 
 =item insert
 
@@ -69,18 +76,7 @@ Deletes this package class from the database.  Only package classes with no
 associated package definitions can be deleted.  If there is an error, returns
 the error, otherwise returns false.
 
 associated package definitions can be deleted.  If there is an error, returns
 the error, otherwise returns false.
 
-=cut
-
-sub delete {
-  my $self = shift;
-
-  return "Can't delete an pkg_class with part_pkg records!"
-    if qsearch( 'part_pkg', { 'classnum' => $self->classnum } );
-
-  $self->SUPER::delete;
-}
-
-=item replace OLD_RECORD
+=item replace [ OLD_RECORD ]
 
 Replaces OLD_RECORD with this one in the database.  If there is an error,
 returns the error, otherwise returns false.
 
 Replaces OLD_RECORD with this one in the database.  If there is an error,
 returns the error, otherwise returns false.
@@ -91,20 +87,10 @@ Checks all fields to make sure this is a valid package class.  If there is an
 error, returns the error, otherwise returns false.  Called by the insert and
 replace methods.
 
 error, returns the error, otherwise returns false.  Called by the insert and
 replace methods.
 
-=cut
-
-sub check {
-  my $self = shift;
-
-  $self->ut_numbern('classnum')
-  or $self->ut_text('classname')
-  or $self->ut_foreign_keyn('categorynum', 'pkg_category', 'categorynum')
-  or $self->SUPER::check;
-
-}
-
 =item pkg_category
 
 =item pkg_category
 
+=item category
+
 Returns the pkg_category record associated with this class, or false if there
 is none.
 
 Returns the pkg_category record associated with this class, or false if there
 is none.
 
@@ -112,7 +98,7 @@ is none.
 
 sub pkg_category {
   my $self = shift;
 
 sub pkg_category {
   my $self = shift;
-  qsearchs('pkg_category', { 'categorynum' => $self->categorynum } );
+  $self->category;
 }
 
 =item categoryname
 }
 
 =item categoryname
@@ -120,22 +106,14 @@ sub pkg_category {
 Returns the category name associated with this class, or false if there
 is none.
 
 Returns the category name associated with this class, or false if there
 is none.
 
-=cut
-
-sub categoryname {
-  my $pkg_category = shift->pkg_category;
-  $pkg_category->categoryname if $pkg_category;
-}
-
 =back
 
 =head1 BUGS
 
 =head1 SEE ALSO
 
 =back
 
 =head1 BUGS
 
 =head1 SEE ALSO
 
-L<FS::Record>, L<FS::part_pkg>, schema.html from the base documentation.
+L<FS::part_pkg>, L<FS::Record>
 
 =cut
 
 1;
 
 =cut
 
 1;
-