eWay self-signup fixes
[freeside.git] / FS / FS / cust_pkg.pm
index e3f4777..5bb07d4 100644 (file)
@@ -661,7 +661,25 @@ sub cancel {
   }
 
   my %svc;
-  unless ( $date ) {
+  if ( $date ) {
+       # copied from below
+       foreach my $cust_svc (
+         #schwartz
+         map  { $_->[0] }
+         sort { $a->[1] <=> $b->[1] }
+         map  { [ $_, $_->svc_x->table_info->{'cancel_weight'} ]; }
+         qsearch( 'cust_svc', { 'pkgnum' => $self->pkgnum } )
+       ) {
+
+         my $error = $cust_svc->cancel( ('date' => $date) );
+
+         if ( $error ) {
+           $dbh->rollback if $oldAutoCommit;
+           return "Error expiring cust_svc: $error";
+         }
+       }
+
+  } else {
     foreach my $cust_svc (
       #schwartz
       map  { $_->[0] }
@@ -1728,6 +1746,13 @@ sub available_part_svc {
           my $part_svc = $_->part_svc;
           $part_svc->{'Hash'}{'num_avail'} = #evil encapsulation-breaking
             $_->quantity - $self->num_cust_svc($_->svcpart);
+
+         # more evil encapsulation breakage
+         if($part_svc->{'Hash'}{'num_avail'} > 0) {
+           my @exports = $part_svc->part_export_did;
+           $part_svc->{'Hash'}{'can_get_dids'} = scalar(@exports);
+         }
+
           $part_svc;
         }
       $self->part_pkg->pkg_svc;