diff options
author | khoff <khoff> | 2002-06-08 07:48:37 +0000 |
---|---|---|
committer | khoff <khoff> | 2002-06-08 07:48:37 +0000 |
commit | 0e8861ca6b3b04b99ea9477e8c1555561b21c929 (patch) | |
tree | 7417f21cb08027ee883fbf5cb10d1a64755c9645 /FS/FS/pkg_svc.pm | |
parent | 0ada85923cfb057caf1d0e66b73a08b2700703bd (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.pm | 32 |
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 |