X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fquotation_pkg.pm;h=3f6742c7997eb7005d340530439ae87e4675d3a6;hp=1e5a0da5169b73a7b2284728a2819f6140aede65;hb=5372897f367498972c96f5494e142e6e11b29eb8;hpb=9db332d80967969856c5b5fe8b6ac91304734b04 diff --git a/FS/FS/quotation_pkg.pm b/FS/FS/quotation_pkg.pm index 1e5a0da51..3f6742c79 100644 --- a/FS/FS/quotation_pkg.pm +++ b/FS/FS/quotation_pkg.pm @@ -106,7 +106,11 @@ sub detail_table { 'quotation_pkg_detail'; } =item insert Adds this record to the database. If there is an error, returns the error, -otherwise returns false. +otherwise returns false. Accepts the following options: + +quotation_details - optional arrayref of detail strings to add (creates quotation_pkg_detail records) + +copy_on_order - value for this field when creating quotation_pkg_detail records (same for all details) =cut @@ -117,6 +121,22 @@ sub insert { my $oldAutoCommit = $FS::UID::AutoCommit; local $FS::UID::AutoCommit = 0; + #false laziness w/cust_main::Packages::order_pkg + if ( $options{'locationnum'} and $options{'locationnum'} != -1 ) { + + $self->locationnum($options{'locationnum'}); + + } elsif ( $options{'cust_location'} ) { + + my $error = $options{'cust_location'}->find_or_insert; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "inserting cust_location (transaction rolled back): $error"; + } + $self->locationnum($options{'cust_location'}->locationnum); + + } + my $error = $self->SUPER::insert; if ( !$error and ($self->setup_discountnum || $self->recur_discountnum) ) { @@ -128,10 +148,22 @@ sub insert { if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; - } else { - $dbh->commit if $oldAutoCommit; - return ''; } + + if ($options{'quotation_details'}) { + $error = $self->set_details( + details => $options{'quotation_details'}, + copy_on_order => $options{'copy_on_order'} ? 'Y' : '', + ); + if ( $error ) { + $error .= ' (setting details)'; + $dbh->rollback if $oldAutoCommit; + return $error; + } + } + + $dbh->commit if $oldAutoCommit; + return ''; } =item delete @@ -311,6 +343,11 @@ sub setup { } +sub setup_show_zero { + my $self = shift; + return $self->part_pkg->setup_show_zero; +} + sub setup_tax { my $self = shift; sum(0, map { $_->setup_amount } $self->quotation_pkg_tax); @@ -326,6 +363,11 @@ sub recur { } +sub recur_show_zero { + my $self = shift; + return $self->part_pkg->recur_show_zero; +} + sub recur_tax { my $self = shift; sum(0, map { $_->recur_amount } $self->quotation_pkg_tax);