X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpkg_category.pm;h=adfadd772949a82bf12f8f5412193dd673e952b7;hb=4dcbb6b380dfd036cc06e4d7002cbda17d29f23a;hp=69578c9cf701d10e9f9fe45caee7aea809683d9a;hpb=f13afe5e228a220311557e1ca6dacbf847c26baf;p=freeside.git diff --git a/FS/FS/pkg_category.pm b/FS/FS/pkg_category.pm index 69578c9cf..adfadd772 100644 --- a/FS/FS/pkg_category.pm +++ b/FS/FS/pkg_category.pm @@ -1,11 +1,14 @@ package FS::pkg_category; +use base qw( FS::category_Common ); use strict; -use vars qw( @ISA ); +use vars qw( @ISA $me $DEBUG ); use FS::Record qw( qsearch ); +use FS::pkg_class; use FS::part_pkg; -@ISA = qw( FS::Record ); +$DEBUG = 0; +$me = '[FS::pkg_category]'; =head1 NAME @@ -34,11 +37,30 @@ inherits from FS::Record. The following fields are currently supported: =over 4 -=item categorynum - primary key (assigned automatically for new package categoryes) +=item categorynum -=item categoryname - Text name of this package category +primary key (assigned automatically for new package categoryes) -=item disabled - Disabled flag, empty or 'Y' +=item categoryname + +Text name of this package category + +=item weight + +Weight + +=item ticketing_queueid + +Ticketing Queue + +=item condense + +Condense flag for invoice display, empty or 'Y' + + +=item disabled + +Disabled flag, empty or 'Y' =back @@ -48,8 +70,8 @@ inherits from FS::Record. The following fields are currently supported: =item new HASHREF -Creates a new package category. To add the package category to the database, see -L<"insert">. +Creates a new package category. To add the package category to the database, +see L<"insert">. =cut @@ -62,22 +84,11 @@ error, otherwise returns false. =item delete -Deletes this package category from the database. Only package categoryes with no -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_category with pkg_class records!" - if qsearch( 'pkg_class', { 'categorynum' => $self->categorynum } ); - - $self->SUPER::delete; -} +Deletes this package category from the database. Only package categoryes with +no associated package definitions can be deleted. If there is an error, +returns the error, otherwise returns false. -=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. @@ -93,10 +104,48 @@ replace methods. sub check { my $self = shift; - $self->ut_numbern('categorynum') - or $self->ut_text('categoryname') - or $self->SUPER::check; + $self->ut_enum('condense', [ '', 'Y' ]) + || $self->ut_snumbern('ticketing_queueid') + || $self->SUPER::check; +} + +=item ticketing_queue + +Returns the queue name corresponding with the id from the I +field, or the empty string. + +=cut + +sub ticketing_queue { + my $self = shift; + return 'Agent-specific queue' if $self->ticketing_queueid == -1; + return '' unless $self->ticketing_queueid; + FS::TicketSystem->queue($self->ticketing_queueid); +} +# _ upgrade_data +# +# Used by FS::Upgrade to migrate to a new database. + +sub _upgrade_data { + my ($class, %opts) = @_; + + warn "$me upgrading $class\n" if $DEBUG; + + my @pkg_category = + qsearch('pkg_category', { weight => { op => '!=', value => '' } } ); + + unless( scalar(@pkg_category) ) { + my @pkg_category = qsearch('pkg_category', {} ); + my $weight = 0; + foreach ( sort { $a->description cmp $b->description } @pkg_category ) { + $_->weight($weight); + my $error = $_->replace; + die "error setting pkg_category weight: $error\n" if $error; + $weight += 10; + } + } + ''; } =back @@ -105,7 +154,7 @@ sub check { =head1 SEE ALSO -L, L, schema.html from the base documentation. +L, L =cut