Fixed bug: Replaced $FS::CurrentUser->CurrentUser with $FS::CurrentUser::CurrentUser
[freeside.git] / FS / FS / cust_pkg.pm
index 5bb3d2a..bafbb58 100644 (file)
@@ -785,14 +785,9 @@ to a different pkgpart or location, and probably shouldn't be in any other
 case.  If it's not set, the 'unused_credit_cancel' part_pkg option will 
 be used.
 
-=item delay_cancel - for internal use, to allow proper handling of
-supplemental packages when the main package is flagged to suspend 
-before cancelling, probably shouldn't be used otherwise (set the
-corresponding package option instead)
-
-=item no_delay_cancel - for internal use, prevents delay_cancel behavior
+=item no_delay_cancel - prevents delay_cancel behavior
 no matter what other options say, for use when changing packages (or any
-other time you're really sure you want an unadulterated cancel)
+other time you're really sure you want an immediate cancel)
 
 =back
 
@@ -800,6 +795,12 @@ If there is an error, returns the error, otherwise returns false.
 
 =cut
 
+#NOT DOCUMENTING - this should only be used when calling recursively
+#=item delay_cancel - for internal use, to allow proper handling of
+#supplemental packages when the main package is flagged to suspend 
+#before cancelling, probably shouldn't be used otherwise (set the
+#corresponding package option instead)
+
 sub cancel {
   my( $self, %options ) = @_;
   my $error;
@@ -2032,7 +2033,9 @@ sub change {
   }
 
   # Transfer services and cancel old package.
-
+  # Enforce service limits only if this is a pkgpart change.
+  local $FS::cust_svc::ignore_quantity;
+  $FS::cust_svc::ignore_quantity = 1 if $same_pkgpart;
   $error = $self->transfer($cust_pkg);
   if ($error and $error == 0) {
     # $old_pkg->transfer failed.