use vars qw( @ISA );
use Scalar::Util qw( blessed );
use FS::UID qw( dbh );
-use FS::Record; # qw( qsearch qsearchs );
+use FS::Record qw(qsearch); # qsearchs );
use FS::cust_main_county;
@ISA = qw(FS::Record);
=head1 DESCRIPTION
-An FS::part_pkg_taxclass object represents a tax class. FS::part_pkg_taxclass
-inherits from FS::Record. The following fields are currently supported:
+An FS::part_pkg_taxclass object declares the existence of a taxable sales
+class. FS::part_pkg_taxclass inherits from FS::Record.
+
+FS::part_pkg_taxclass is not used in tax calculation. It is only used to
+list a set of valid tax class names for use in the user interface. When
+using internal taxes, the actual matching of tax definitions to package
+tax class is a string match between tax class names. This is arguably
+a bug.
+
+The following fields are currently supported:
=over 4
}
+=head1 CLASS METHODS
+
+=over 4
+
+=item taxclass_names
+
+Returns a list of all the non-disabled tax classes. If tax classes aren't
+enabled, returns a single empty string.
+
+=cut
+
+sub taxclass_names {
+ if ( FS::Conf->new->exists('enable_taxclasses') ) {
+ return map { $_->get('taxclass') }
+ qsearch('part_pkg_taxclass', { disabled => '' });
+ } else {
+ return ( '' );
+ }
+}
+
=head1 BUGS
Other tables (cust_main_county, part_pkg, agent_payment_gateway) have a text