summaryrefslogtreecommitdiff
path: root/FS/FS/pkg_svc.pm
diff options
context:
space:
mode:
authorkhoff <khoff>2002-06-08 07:48:37 +0000
committerkhoff <khoff>2002-06-08 07:48:37 +0000
commit0e8861ca6b3b04b99ea9477e8c1555561b21c929 (patch)
tree7417f21cb08027ee883fbf5cb10d1a64755c9645 /FS/FS/pkg_svc.pm
parent0ada85923cfb057caf1d0e66b73a08b2700703bd (diff)
Default svcpart support for part_pkg. Fixes 'bug' with new customer and online signup.
Diffstat (limited to 'FS/FS/pkg_svc.pm')
-rw-r--r--FS/FS/pkg_svc.pm32
1 files changed, 29 insertions, 3 deletions
diff --git a/FS/FS/pkg_svc.pm b/FS/FS/pkg_svc.pm
index 1812dbf..d64d10d 100644
--- a/FS/FS/pkg_svc.pm
+++ b/FS/FS/pkg_svc.pm
@@ -67,8 +67,24 @@ otherwise returns false.
=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
@@ -83,6 +99,16 @@ sub replace {
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);
}
@@ -137,7 +163,7 @@ sub part_svc {
=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