RT# 83450 - fixed rateplan export
[freeside.git] / FS / FS / svc_Common.pm
index dea31ea..b4068ea 100644 (file)
@@ -479,6 +479,7 @@ passed to export commands.
 
 sub replace {
   my $new = shift;
+  $noexport_hack = $new->no_export if $new->no_export;
 
   my $old = ( blessed($_[0]) && $_[0]->isa('FS::Record') )
               ? shift
@@ -1394,11 +1395,17 @@ Parameters:
 
 =item order_by
 
+=item cancelled - if true, only returns svcs attached to cancelled pkgs;
+if defined and false, only returns svcs not attached to cancelled packages
+
 =back
 
 =cut
 
-# svc_broadband::search should eventually use this instead
+### Don't call the 'cancelled' option 'Service Status'
+### There is no such thing
+### See cautionary note in httemplate/browse/part_svc.cgi
+
 sub search {
   my ($class, $params) = @_;
 
@@ -1482,8 +1489,12 @@ sub search {
   }
 
   #svcnum
-  if ( $params->{'svcnum'} =~ /^(\d+)$/ ) {
-    push @where, "svcnum = $1";
+  if ( $params->{'svcnum'} ) {
+    my @svcnum = ref( $params->{'svcnum'} )
+                 ? @{ $params->{'svcnum'} }
+                 : $params->{'svcnum'};
+    @svcnum = grep /^\d+$/, @svcnum;
+    push @where, 'svcnum IN ('. join(',', @svcnum) . ')' if @svcnum;
   }
 
   # svcpart
@@ -1502,6 +1513,14 @@ sub search {
     push @where, "exportnum = $1";
   }
 
+  if ( defined($params->{'cancelled'}) ) {
+    if ($params->{'cancelled'}) {
+      push @where, "cust_pkg.cancel IS NOT NULL";
+    } else {
+      push @where, "cust_pkg.cancel IS NULL";
+    }
+  }
+
 #  # sector and tower
 #  my @where_sector = $class->tower_sector_sql($params);
 #  if ( @where_sector ) {