X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fquotation_pkg.pm;h=1674d2bc90360622216a76ab6a990874613eff2e;hb=b37cafd2acd4ab2c38b44bc4d8ebde76936ef6bb;hp=dae459e29af0763e7b6db621d2bfec4e17e105ce;hpb=a3c90ed7984e1c0ef73cb969183597545113221d;p=freeside.git diff --git a/FS/FS/quotation_pkg.pm b/FS/FS/quotation_pkg.pm index dae459e29..1674d2bc9 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); @@ -70,6 +70,11 @@ The amount per package that will be charged in setup/one-time fees. The amount per package that will be charged per billing cycle. +=item freq + +The length of the billing cycle. If zero it's a one-time charge; if any +other number it's that many months; other values are in L. + =back =head1 METHODS @@ -180,6 +185,8 @@ and replace methods. sub check { my $self = shift; + my @freqs = ('', keys (%{ FS::Misc->pkg_freqs })); + my $error = $self->ut_numbern('quotationpkgnum') || $self->ut_foreign_key( 'quotationnum', 'quotation', 'quotationnum' ) @@ -190,6 +197,7 @@ sub check { || $self->ut_numbern('quantity') || $self->ut_moneyn('unitsetup') || $self->ut_moneyn('unitrecur') + || $self->ut_enum('freq', \@freqs) || $self->ut_enum('waive_setup', [ '', 'Y'] ) ; @@ -199,7 +207,11 @@ sub check { if ($quotation->custnum) { $self->set('locationnum', $quotation->cust_main->ship_locationnum); } elsif ($quotation->prospectnum) { - $self->set('locationnum', $quotation->prospect_main->locationnum); + # 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 } @@ -427,11 +439,6 @@ sub cust_bill_pkg_display { $recur->{'type'} = 'R'; if ( $type eq 'S' ) { -sub tax_locationnum { - my $self = shift; - $self->locationnum; -} - return ($setup); } elsif ( $type eq 'R' ) { return ($recur); @@ -468,6 +475,11 @@ sub prospect_main { $quotation->prospect_main; } +sub tax_locationnum { + my $self = shift; + $self->locationnum; +} + sub _upgrade_data { my $class = shift;