X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill_pkg.pm;h=034601db8549d29ab32d1ae315c1d2dafa0b52ae;hb=2f83aa0920cd03724adf25b7ffb89890d43d96ce;hp=066ddf1605de64582552a5e445ea6b18262e767b;hpb=439d00a59c67a7d9d53b5d89c14ab332be16e38b;p=freeside.git diff --git a/FS/FS/cust_bill_pkg.pm b/FS/FS/cust_bill_pkg.pm index 066ddf160..034601db8 100644 --- a/FS/FS/cust_bill_pkg.pm +++ b/FS/FS/cust_bill_pkg.pm @@ -970,7 +970,13 @@ sub tax_locationnum { sub tax_location { my $self = shift; - FS::cust_location->by_key($self->tax_locationnum); + if ( $self->pkgnum ) { # normal sales + return $self->cust_pkg->tax_location; + } elsif ( $self->feepart ) { # fees + return $self->cust_bill->cust_main->ship_location; + } else { # taxes + return; + } } =item part_X @@ -982,8 +988,8 @@ charge. If called on a tax line, returns nothing. sub part_X { my $self = shift; - if ( $self->override_pkgpart ) { - return FS::part_pkg->by_key($self->override_pkgpart); + if ( $self->pkgpart_override ) { + return FS::part_pkg->by_key($self->pkgpart_override); } elsif ( $self->pkgnum ) { return $self->cust_pkg->part_pkg; } elsif ( $self->feepart ) { @@ -1576,6 +1582,14 @@ sub _upgrade_data { }); # call it kind of like a class method, not that it matters much $job->insert($class, 's' => str2time('2012-01-01')); + # if there's a customer location upgrade queued also, wait for it to + # finish + my $location_job = qsearchs('queue', { + job => 'FS::cust_main::Location::process_upgrade_location' + }); + if ( $location_job ) { + $job->depend_insert($location_job->jobnum); + } # Then mark the upgrade as done, so that we don't queue the job twice # and somehow run two of them concurrently. FS::upgrade_journal->set_done($upgrade);