X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg.pm;h=b7b9be51b4ac01e3c051dab4611c1a87ded7566b;hb=5192ab23dffe251a20b6aa739d39a33ee65ce518;hp=1682b67618c473e5eecc28a719a1468854155e5f;hpb=96bfe632aeb28c7596bdfd5a7a98f0464f5ad6a5;p=freeside.git diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index 1682b6761..b7b9be51b 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -29,7 +29,7 @@ use FS::part_pkg_discount; use FS::part_pkg_usage; use FS::part_pkg_vendor; -$DEBUG = 1; +$DEBUG = 0; $setup_hack = 0; $skip_pkg_svc_hack = 0; @@ -120,6 +120,10 @@ part_pkg, will be equal to pkgpart. =item delay_start - Number of days to delay package start, by default +=item start_on_hold - 'Y' to suspend this package immediately when it is +ordered. The package will not start billing or have a setup fee charged +until it is manually unsuspended. + =back =head1 METHODS @@ -601,14 +605,15 @@ sub check { || $self->ut_textn('comment') || $self->ut_textn('promo_code') || $self->ut_alphan('plan') - || $self->ut_enum('setuptax', [ '', 'Y' ] ) - || $self->ut_enum('recurtax', [ '', 'Y' ] ) + || $self->ut_flag('setuptax') + || $self->ut_flag('recurtax') || $self->ut_textn('taxclass') - || $self->ut_enum('disabled', [ '', 'Y' ] ) - || $self->ut_enum('custom', [ '', 'Y' ] ) - || $self->ut_enum('no_auto', [ '', 'Y' ]) - || $self->ut_enum('recur_show_zero', [ '', 'Y' ]) - || $self->ut_enum('setup_show_zero', [ '', 'Y' ]) + || $self->ut_flag('disabled') + || $self->ut_flag('custom') + || $self->ut_flag('no_auto') + || $self->ut_flag('recur_show_zero') + || $self->ut_flag('setup_show_zero') + || $self->ut_flag('start_on_hold') #|| $self->ut_moneyn('setup_cost') #|| $self->ut_moneyn('recur_cost') || $self->ut_floatn('setup_cost') @@ -1082,7 +1087,10 @@ sub is_free { sub can_discount { 0; } # whether the plan allows changing the start date -sub can_start_date { 1; } +sub can_start_date { + my $self = shift; + $self->start_on_hold ? 0 : 1; +} # the delay start date if present sub delay_start_date { @@ -1472,8 +1480,10 @@ package in the location specified by GEOCODE, for usage class CLASS (one of sub tax_rates { my $self = shift; my ($vendor, $geocode, $class) = @_; + # if this part_pkg is overridden into a specific taxclass, get that class my @taxclassnums = map { $_->taxclassnum } $self->part_pkg_taxoverride($class); + # otherwise, get its tax product category if (!@taxclassnums) { my $part_pkg_taxproduct = $self->taxproduct($class); # If this isn't defined, then the class has no taxproduct designation, @@ -1494,7 +1504,8 @@ sub tax_rates { my $extra_sql = "AND taxclassnum IN (". join(',', @taxclassnums) . ")"; my @taxes = qsearch({ 'table' => 'tax_rate', 'hashref' => { 'geocode' => $geocode, - 'data_vendor' => $vendor }, + 'data_vendor' => $vendor, + 'disabled' => '' }, 'extra_sql' => $extra_sql, }); warn "Found taxes ". join(',', map {$_->taxnum} @taxes) ."\n"