=item delete
-Deletes this record from the database. If there is an error, returns the
-error, otherwise returns false.
+Deletes this record from the database. If this svcpart is also the default svcpart,
+we set part_pkg.def_svcpart to NULL. If there is an error, returns the error,
+otherwise returns false.
+
+sub delete {
+ my $self = shift;
+ my $part_pkg = qsearchs( 'part_pkg', { pkgpart => $self->pkgpart } );
+
+ # Should this be wrapped in a transaction?
+ if ( $part_pkg->def_svcpart == $self->svcpart ) {
+ my $new = new FS::part_pkg $part_pkg->hash;
+ $new->def_svcpart = 0;
+ my $error = $new->replace($part_pkg);
+ return $error if $error;
+ }
+
+ $self->SUPER::delete;
+}
=item replace OLD_RECORD
return "Can't change pkgpart!" if $old->pkgpart != $new->pkgpart;
return "Can't change svcpart!" if $old->svcpart != $new->svcpart;
+ my $part_pkg = qsearchs( 'part_pkg', { pkgpart => $new->pkgpart } );
+
+ # Should this be wrapped in a transaction?
+ if ( ($part_pkg->def_svcpart == $new->svcpart) && ($new->quantity == 0) ) {
+ my $new_part_pkg = new FS::part_pkg $part_pkg->hash;
+ $new_part_pkg->def_svcpart = 0;
+ my $error = $new_part_pkg->replace($part_pkg);
+ return $error if $error;
+ }
+
$new->SUPER::replace($old);
}
=head1 VERSION
-$Id: pkg_svc.pm,v 1.1 1999-08-04 09:03:53 ivan Exp $
+$Id: pkg_svc.pm,v 1.2 2002-06-08 07:48:37 khoff Exp $
=head1 BUGS