X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpkg_category.pm;h=c2361cc2b8147875fea77b83b900ef3b168cfe7e;hp=cd875d1a14c6303decdc6e15e40161ee81a452c3;hb=3adb46fccf9f631e188ea5383bd147b340477639;hpb=40a7b3dc653e099f7bd0bd762b649b04c4432db2 diff --git a/FS/FS/pkg_category.pm b/FS/FS/pkg_category.pm index cd875d1a1..c2361cc2b 100644 --- a/FS/FS/pkg_category.pm +++ b/FS/FS/pkg_category.pm @@ -1,9 +1,9 @@ package FS::pkg_category; +use base qw( FS::category_Common ); use strict; -use base qw( FS::category_Common ); use vars qw( @ISA $me $DEBUG ); -use FS::Record qw( qsearch dbh ); +use FS::Record qw( qsearch qsearchs ); use FS::pkg_class; use FS::part_pkg; @@ -49,6 +49,15 @@ Text name of this package category Weight +=item ticketing_queueid + +Ticketing Queue + +=item condense + +Condense flag for invoice display, empty or 'Y' + + =item disabled Disabled flag, empty or 'Y' @@ -92,13 +101,34 @@ replace methods. =cut +sub check { + my $self = shift; + + $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) = @_; - my $dbh = dbh; warn "$me upgrading $class\n" if $DEBUG; @@ -115,6 +145,40 @@ sub _upgrade_data { $weight += 10; } } + + # create default category for package fees + my $tax_category_name = 'Taxes, Surcharges, and Fees'; + my $tax_category = qsearchs('pkg_category', + { categoryname => $tax_category_name } + ); + if (!$tax_category) { + $tax_category = FS::pkg_category->new({ + categoryname => $tax_category_name, + weight => 1000, # doesn't really matter + }); + my $error = $tax_category->insert; + die "error creating tax category: $error\n" if $error; + } + + my $fee_class_name = 'Fees'; # does not appear on invoice + my $fee_class = qsearchs('pkg_class', { classname => $fee_class_name }); + if (!$fee_class) { + $fee_class = FS::pkg_class->new({ + classname => $fee_class_name, + categorynum => $tax_category->categorynum, + }); + my $error = $fee_class->insert; + die "error creating fee class: $error\n" if $error; + } + + # assign it to all fee defs that don't otherwise have a class + foreach my $part_fee (qsearch('part_fee', { classnum => '' })) { + $part_fee->set('classnum', $fee_class->classnum); + my $error = $part_fee->replace; + die "error assigning default class to fee def#".$part_fee->feepart . + ":$error\n" if $error; + } + ''; }