backport pkg_change export to 2.3 branch, RT#22596
[freeside.git] / FS / FS / cust_svc.pm
index ff8ba9f..af74cb5 100644 (file)
@@ -272,6 +272,17 @@ sub replace {
 #    }
 #  }
 
+  #trigger a pkg_change export on pkgnum changes
+  if ( $new->pkgnum != $old->pkgnum ) {
+    my $error = $new->svc_x->export('pkg_change', $new->cust_pkg,
+                                                  $old->cust_pkg,
+                                   );
+    if ( $error ) {
+      $dbh->rollback if $oldAutoCommit;
+      return $error if $error;
+    }
+  }
+
   #my $error = $new->SUPER::replace($old, @_);
   my $error = $new->SUPER::replace($old);
   if ( $error ) {
@@ -313,10 +324,10 @@ sub check {
     ($part_svc) = grep { $_->svcpart == $self->svcpart } $cust_pkg->part_svc;
     return "No svcpart ". $self->svcpart.
            " services in pkgpart ". $cust_pkg->pkgpart
-      unless $part_svc;
+      unless $part_svc || $ignore_quantity;
     return "Already ". $part_svc->get('num_cust_svc'). " ". $part_svc->svc.
            " services for pkgnum ". $self->pkgnum
-      if $part_svc->get('num_avail') == 0 and !$ignore_quantity;
+      if !$ignore_quantity && $part_svc->get('num_avail') <= 0 ;
   }
 
   $self->SUPER::check;