[freeside-commits] branch FREESIDE_4_BRANCH updated. 0eabe6a4e365be74b3517b30c32691818bb334e1

Ivan ivan at 420.am
Sun Jan 15 11:30:30 PST 2017


The branch, FREESIDE_4_BRANCH has been updated
       via  0eabe6a4e365be74b3517b30c32691818bb334e1 (commit)
      from  35ab78d0e206a07b3f0904adc3c5ae8e58b0087e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 0eabe6a4e365be74b3517b30c32691818bb334e1
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sun Jan 15 11:30:27 2017 -0800

    fix package changes in pre-setup state, RT#73377, RT#38404

diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 48e4263..bd9ab81 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -4439,24 +4439,42 @@ sub transfer {
   my $error;
   foreach my $cust_svc ($self->cust_svc) {
     my $svcnum = $cust_svc->svcnum;
-    if($target{$cust_svc->svcpart} > 0
-       or $FS::cust_svc::ignore_quantity) { # maybe should be a 'force' option
+
+    if (    $target{$cust_svc->svcpart} > 0
+         or $FS::cust_svc::ignore_quantity # maybe should be a 'force' option
+       )
+    {
       $target{$cust_svc->svcpart}--;
+
+      local $FS::cust_svc::ignore_quantity = 1
+        if $self->pkgnum == $dest->pkgnum;
+
+      #why run replace at all in the $self->pkgnum == $dest->pkgnum case?
+      # we do want to trigger location and pkg_change exports, but 
+      # without pkgnum changing from an old to new package, cust_svc->replace
+      # doesn't know how to trigger those.  :/
+      # does this mean we scrap the whole idea of "safe to modify it in place",
+      # or do we special-case and pass the info needed to cust_svc->replace? :/
+
       my $new = new FS::cust_svc { $cust_svc->hash };
       $new->pkgnum($dest_pkgnum);
       $error = $new->replace($cust_svc);
+
     } elsif ( exists $opt{'change_svcpart'} && $opt{'change_svcpart'} ) {
+
       if ( $DEBUG ) {
         warn "looking for alternates for svcpart ". $cust_svc->svcpart. "\n";
         warn "alternates to consider: ".
              join(', ', @{$svcpart2svcparts{$cust_svc->svcpart}}). "\n";
       }
+
       my @alternate = grep {
                              warn "considering alternate svcpart $_: ".
                                   "$target{$_} available in new package\n"
                                if $DEBUG;
                              $target{$_} > 0;
                            } @{$svcpart2svcparts{$cust_svc->svcpart}};
+
       if ( @alternate ) {
         warn "alternate(s) found\n" if $DEBUG;
         my $change_svcpart = $alternate[0];
@@ -4468,13 +4486,16 @@ sub transfer {
       } else {
         $remaining++;
       }
+
     } else {
       $remaining++
     }
+
     if ( $error ) {
       my @label = $cust_svc->label;
       return "$label[0] $label[1]: $error";
     }
+
   }
   return $remaining;
 }

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cust_pkg.pm |   25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)




More information about the freeside-commits mailing list