X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fquotation_pkg.pm;h=959c4622ee35f900c836634510c65ae0a6e6406a;hb=f6a37fa1d6a30484ce8a268de170ecc8d5c31a23;hp=1a2fadc97828dc08c543f69b3a9a63bedc6fd574;hpb=ee7e3cc614c860c8d0aa2fdc9b112c57fe548ff2;p=freeside.git diff --git a/FS/FS/quotation_pkg.pm b/FS/FS/quotation_pkg.pm index 1a2fadc97..959c4622e 100644 --- a/FS/FS/quotation_pkg.pm +++ b/FS/FS/quotation_pkg.pm @@ -384,12 +384,22 @@ sub setup { * ($self->quantity || 1); } +sub setup_show_zero { + my $self = shift; + return $self->part_pkg->setup_show_zero; +} + sub recur { my $self = shift; ($self->unitrecur - sum(0, map { $_->recur_amount } $self->pkg_discount)) * ($self->quantity || 1); } +sub recur_show_zero { + my $self = shift; + return $self->part_pkg->recur_show_zero; +} + =item delete_details Deletes all quotation_pkgs_details associated with this pkg (see L). @@ -416,16 +426,27 @@ sub delete_details { } -=item set_details [ DETAIL, DETAIL, ... ] +=item set_details PARAM + +Sets new quotation details for this package (see L), +removing existing details. -Sets quotation details for this package (see L). +Recognizes the following parameters: + +details - arrayref of strings, one for each new detail + +copy_on_order - if true, sets copy_on_order flag on new details If there is an error, returns the error, otherwise returns false. =cut sub set_details { - my( $self, @details ) = @_; + my $self = shift; + my %opt = @_; + + $opt{'details'} ||= []; + my @details = @{$opt{'details'}}; my $oldAutoCommit = $FS::UID::AutoCommit; local $FS::UID::AutoCommit = 0; @@ -441,6 +462,7 @@ sub set_details { my $quotation_pkg_detail = new FS::quotation_pkg_detail { 'quotationpkgnum' => $self->quotationpkgnum, 'detail' => $detail, + 'copy_on_order' => $opt{'copy_on_order'} ? 'Y' : '', }; $error = $quotation_pkg_detail->insert; if ( $error ) { @@ -519,6 +541,12 @@ sub quotation { FS::quotation->by_key($self->quotationnum); } +sub quotation_pkg_detail { + my $self = shift; + sort { $a->detailnum <=> $b->detailnum } + qsearch('quotation_pkg_detail', { quotationpkgnum => $self->quotationpkgnum }); +} + sub quotation_pkg_discount { my $self = shift; qsearch('quotation_pkg_discount', { quotationpkgnum => $self->quotationpkgnum });