"simple with accountcode" CDR format, #16348
[freeside.git] / FS / FS / part_pkg / voip_inbound.pm
index 7fb0a5d..f4e5183 100644 (file)
@@ -10,6 +10,7 @@ use FS::Conf;
 use FS::Record qw(qsearchs qsearch);
 use FS::cdr;
 use FS::rate_detail;
+use FS::detail_format;
 
 $DEBUG = 0;
 
@@ -177,12 +178,13 @@ sub calc_recur {
 
 }
 
-sub calc_cancel {
-  my $self = shift;
-  my($cust_pkg, $sdate, $details, $param ) = @_;
-
-  $self->calc_usage(@_);
-}
+# use the default
+#sub calc_cancel {
+#  my $self = shift;
+#  my($cust_pkg, $sdate, $details, $param ) = @_;
+#
+#  $self->calc_usage(@_);
+#}
 
 #false laziness w/voip_sqlradacct calc_recur resolve it if that one ever gets used again
 
@@ -207,6 +209,10 @@ sub calc_usage {
   my $included_min  = $self->option('min_included', 1) || 0;
   my $use_duration  = $self->option('use_duration');
   my $output_format = $self->option('output_format', 1) || 'default';
+
+  my $formatter = 
+    FS::detail_format->new($output_format, buffer => $details, inbound => 1);
+
   my $granularity   = length($self->option('sec_granularity'))
                         ? $self->option('sec_granularity')
                         : 60;
@@ -278,31 +284,41 @@ sub calc_usage {
                                 'granularity' => $granularity,
                               )
         );
-        push @$details,
-          { format      => 'C',
-            detail      => $call_details[0],
-            amount      => $charge,
-            classnum    => $cdr->calltypenum, #classnum
-            #phonenum    => $self->phonenum,
-            accountcode => $cdr->accountcode,
-            startdate   => $cdr->startdate,
-            duration    => $seconds,
-            # regionname?? => '', #regionname, not set for inbound calls
-          };
-     }
-
-     my $error = $cdr->set_status_and_rated_price( 'done',
-                                                  $charge,
-                                                  $cust_svc->svcnum,
-                                                  'inbound' => 1 );
-     die $error if $error;
+#        push @$details,
+#          { format      => 'C',
+#            detail      => $call_details[0],
+#            amount      => $charge,
+#            classnum    => $cdr->calltypenum, #classnum
+#            #phonenum    => $self->phonenum,
+#            accountcode => $cdr->accountcode,
+#            startdate   => $cdr->startdate,
+#            duration    => $seconds,
+#            # regionname?? => '', #regionname, not set for inbound calls
+#          };
+      }
+
+      # eventually use FS::cdr::rate for this
+      my $error = $cdr->set_status_and_rated_price(
+        'done',
+        $charge,
+        $cust_svc->svcnum,
+        'rated_seconds'     => $use_duration ? $cdr->duration : $cdr->billsec,
+        'rated_granularity' => $granularity, 
+        'rated_classnum'    => $cdr->calltypenum,
+        'inbound'        => 1,
+      );
+      die $error if $error;
+      $formatter->append($cdr);
 
     } #$cdr
   } # $cust_svc
-  unshift @$details, { format => 'C',
-                       detail => FS::cdr::invoice_header($output_format),
-                     }
-    if @$details;
+#  unshift @$details, { format => 'C',
+#                       detail => FS::cdr::invoice_header($output_format),
+#                     }
+#    if @$details;
+  
+  $formatter->finish;
+  unshift @$details, $formatter->header if @$details;
 
   $charges;
 }