X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_pkg.pm;h=17af4d73f65f98cdfba16a9625cfb13a9e05e90f;hb=2705b64bb669ba94492a185410e8d67f6ea82edd;hp=9f231780afbcb2596a851f3d09a8bc58ef477107;hpb=5fa2ec5b24f52ddb14e569970ccb8a24cadbc6b1;p=freeside.git diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index 9f231780a..17af4d73f 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -277,19 +277,20 @@ sub insert { } if ( $options{'part_pkg_vendor'} ) { - my($exportnum,$vendor_pkg_id); - my %options_part_pkg_vendor = $options{'part_pkg_vendor'}; - while(($exportnum,$vendor_pkg_id) = each %options_part_pkg_vendor){ - my $ppv = new FS::part_pkg_vendor( { - 'pkgpart' => $self->pkgpart, - 'exportnum' => $exportnum, - 'vendor_pkg_id' => $vendor_pkg_id, - } ); - my $error = $ppv->insert; - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return "Error inserting part_pkg_vendor record: $error"; - } + while ( my ($exportnum, $vendor_pkg_id) = + each %{ $options{part_pkg_vendor} } + ) + { + my $ppv = new FS::part_pkg_vendor( { + 'pkgpart' => $self->pkgpart, + 'exportnum' => $exportnum, + 'vendor_pkg_id' => $vendor_pkg_id, + } ); + my $error = $ppv->insert; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "Error inserting part_pkg_vendor record: $error"; + } } } @@ -456,48 +457,48 @@ sub replace { if ( $options->{'part_pkg_vendor'} ) { my($exportnum,$vendor_pkg_id); while ( ($exportnum,$vendor_pkg_id) - = each %{$options->{'part_pkg_vendor'}} ) { - my $noinsert = 0; - foreach my $part_pkg_vendor ( @part_pkg_vendor ) { - if($exportnum == $part_pkg_vendor->exportnum - && $vendor_pkg_id ne $part_pkg_vendor->vendor_pkg_id) { - $part_pkg_vendor->vendor_pkg_id($vendor_pkg_id); - my $error = $part_pkg_vendor->replace; - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return "Error replacing part_pkg_vendor record: $error"; - } - $noinsert = 1; - last; - } - elsif($exportnum == $part_pkg_vendor->exportnum - && $vendor_pkg_id eq $part_pkg_vendor->vendor_pkg_id) { - $noinsert = 1; - last; - } - } - unless ( $noinsert ) { - my $ppv = new FS::part_pkg_vendor( { - 'pkgpart' => $new->pkgpart, - 'exportnum' => $exportnum, - 'vendor_pkg_id' => $vendor_pkg_id, - } ); - my $error = $ppv->insert; - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return "Error inserting part_pkg_vendor record: $error"; - } - } - push @current_exportnum, $exportnum; + = each %{$options->{'part_pkg_vendor'}} ) { + my $noinsert = 0; + foreach my $part_pkg_vendor ( @part_pkg_vendor ) { + if($exportnum == $part_pkg_vendor->exportnum + && $vendor_pkg_id ne $part_pkg_vendor->vendor_pkg_id) { + $part_pkg_vendor->vendor_pkg_id($vendor_pkg_id); + my $error = $part_pkg_vendor->replace; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "Error replacing part_pkg_vendor record: $error"; + } + $noinsert = 1; + last; + } + elsif($exportnum == $part_pkg_vendor->exportnum + && $vendor_pkg_id eq $part_pkg_vendor->vendor_pkg_id) { + $noinsert = 1; + last; + } + } + unless ( $noinsert ) { + my $ppv = new FS::part_pkg_vendor( { + 'pkgpart' => $new->pkgpart, + 'exportnum' => $exportnum, + 'vendor_pkg_id' => $vendor_pkg_id, + } ); + my $error = $ppv->insert; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "Error inserting part_pkg_vendor record: $error"; + } + } + push @current_exportnum, $exportnum; } } foreach my $part_pkg_vendor ( @part_pkg_vendor ) { unless ( grep($_ eq $part_pkg_vendor->exportnum, @current_exportnum) ) { - my $error = $part_pkg_vendor->delete; - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return "Error deleting part_pkg_vendor record: $error"; - } + my $error = $part_pkg_vendor->delete; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return "Error deleting part_pkg_vendor record: $error"; + } } } @@ -605,6 +606,10 @@ sub pkg_comment { $pre. $self->pkg. ' - '. $self->custom_comment; } +sub price_info { # safety, in case a part_pkg hasn't defined price_info + ''; +} + sub custom_comment { my $self = shift; ( $self->custom ? '(CUSTOM) ' : '' ). $self->comment . ' ' . $self->price_info;