package FS::cust_class; use base qw( FS::class_Common ); use strict; use FS::cust_category; use FS::Record qw( dbh ); =head1 NAME FS::cust_class - Object methods for cust_class records =head1 SYNOPSIS use FS::cust_class; $record = new FS::cust_class \%hash; $record = new FS::cust_class { 'column' => 'value' }; $error = $record->insert; $error = $new_record->replace($old_record); $error = $record->delete; $error = $record->check; =head1 DESCRIPTION An FS::pkg_class object represents an customer class. Every customer (see L) has, optionally, a customer class. FS::cust_class inherits from FS::Record. The following fields are currently supported: =over 4 =item classnum primary key =item classname Text name of this customer class =item categorynum Number of associated cust_category (see L) =item tax Tax exempt flag, empty or 'Y'. Used when the cust_class-tax_exempt configuration setting is turned on. =item disabled Disabled flag, empty or 'Y' =back =head1 METHODS =over 4 =item new HASHREF Creates a new customer class. To add the customer class to the database, see L<"insert">. =cut sub table { 'cust_class'; } sub _target_table { 'cust_main'; } =item insert Adds this customer class to the database. If there is an error, returns the error, otherwise returns false. =item delete Delete this customer class from the database. Only customer classes with no associated customers can be deleted. If there is an error, returns the error, otherwise returns false. =item replace [ OLD_RECORD ] Replaces OLD_RECORD with this one in the database. If there is an error, returns the error, otherwise returns false. =item check Checks all fields to make sure this is a valid customer class. If there is an error, returns the error, otherwise returns false. Called by the insert and replace methods. =cut sub check { my $self = shift; $self->ut_enum('tax', [ '', 'Y' ]) || $self->SUPER::check; } =item cust_category Returns the cust_category record associated with this class, or false if there is none. =cut sub cust_category { my $self = shift; $self->category; } =item categoryname Returns the category name associated with this class, or false if there is none. =item num_prospect =item num_ordered =item num_active =item num_inactive =item num_suspended =item num_cancelled =cut sub num_sql { my( $self, $sql ) = @_; my $statement = "SELECT COUNT(*) FROM cust_main WHERE classnum = ? AND $sql"; my $sth = dbh->prepare($statement) or die dbh->errstr." preparing $statement"; $sth->execute($self->classnum) or die $sth->errstr. " executing $statement"; $sth->fetchrow_arrayref->[0]; } sub num_prospect { shift->num_sql(FS::cust_main->prospect_sql) } sub num_ordered { shift->num_sql(FS::cust_main->ordered_sql) } sub num_active { shift->num_sql(FS::cust_main->active_sql) } sub num_inactive { shift->num_sql(FS::cust_main->inactive_sql) } sub num_suspended { shift->num_sql(FS::cust_main->susp_sql) } sub num_cancelled { shift->num_sql(FS::cust_main->cancel_sql) } =back =head1 BUGS =head1 SEE ALSO L, L =cut 1;