summaryrefslogtreecommitdiff
path: root/FS/FS/part_pkg.pm
diff options
context:
space:
mode:
authorivan <ivan>2011-03-21 01:48:27 +0000
committerivan <ivan>2011-03-21 01:48:27 +0000
commit08da6c4a61debfd4858ab1f28d75caa147f431fd (patch)
treee9b06f0593425e65f5247c40cbd2c3599a7e08ee /FS/FS/part_pkg.pm
parent8d534e61d74e561a15f0863a835cda4af639a9ea (diff)
fix vendor package id edit, RT#7111
Diffstat (limited to 'FS/FS/part_pkg.pm')
-rw-r--r--FS/FS/part_pkg.pm103
1 files changed, 52 insertions, 51 deletions
diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm
index 1dfa1ef03..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";
+ }
}
}