X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fquotation_pkg.pm;h=1b5b4195080d4f879394415745e678d18d5b773a;hb=b64599c894116623746b90d184ba708d67392c65;hp=c579e359b29ca97457372c470dbbc6adb8878b47;hpb=35c18f29bc29dedfe2fa4ef037390d90b17f87ba;p=freeside.git diff --git a/FS/FS/quotation_pkg.pm b/FS/FS/quotation_pkg.pm index c579e359b..1b5b41950 100644 --- a/FS/FS/quotation_pkg.pm +++ b/FS/FS/quotation_pkg.pm @@ -2,7 +2,7 @@ package FS::quotation_pkg; use base qw( FS::TemplateItem_Mixin FS::Record ); use strict; -use FS::Record qw( qsearchs dbh ); #qsearch +use FS::Record qw( qsearchs qsearch dbh ); use FS::part_pkg; use FS::quotation_pkg_discount; #so its loaded when TemplateItem_Mixin needs it use List::Util qw(sum); @@ -193,6 +193,20 @@ sub check { || $self->ut_enum('waive_setup', [ '', 'Y'] ) ; + if ($self->locationnum eq '') { + # use the customer default + my $quotation = $self->quotation; + if ($quotation->custnum) { + $self->set('locationnum', $quotation->cust_main->ship_locationnum); + } elsif ($quotation->prospectnum) { + # use the first non-disabled location for that prospect + my $cust_location = qsearchs('cust_location', + { prospectnum => $quotation->prospectnum, + disabled => '' }); + $self->set('locationnum', $cust_location->locationnum) if $cust_location; + } # else the quotation is invalid + } + return $error if $error; $self->SUPER::check; @@ -442,7 +456,7 @@ Returns the customer (L object). sub cust_main { my $self = shift; - my $quotation = FS::quotation->by_key($self->quotationnum) or return ''; + my $quotation = $self->quotation or return ''; $quotation->cust_main; } @@ -454,18 +468,26 @@ Returns the prospect (L object). sub prospect_main { my $self = shift; - my $quotation = FS::quotation->by_key($self->quotationnum) or return ''; + my $quotation = $self->quotation or return ''; $quotation->prospect_main; } -sub quotation_pkg_tax { - my $self = shift; - qsearch('quotation_pkg_tax', { quotationpkgnum => $self->quotationpkgnum }); -} -sub cust_location { - my $self = shift; - $self->locationnum ? qsearchs('cust_location', { locationnum => $self->locationnum }) : ''; +sub _upgrade_data { + my $class = shift; + my @quotation_pkg_without_location = + qsearch( 'quotation_pkg', { locationnum => '' } ); + if (@quotation_pkg_without_location) { + warn "setting default location on quotation_pkg records\n"; + foreach my $quotation_pkg (@quotation_pkg_without_location) { + # check() will fix this + my $error = $quotation_pkg->replace; + if ($error) { + die "quotation #".$quotation_pkg->quotationnum.": $error\n"; + } + } + } + ''; } =back