tax engine refactoring for Avalara and Billsoft tax vendors, #25718
[freeside.git] / FS / FS / detail_format / sum_duration.pm
index 0b4cedc..c41bed3 100644 (file)
@@ -2,7 +2,7 @@ package FS::detail_format::sum_duration;
 
 use strict;
 use vars qw( $DEBUG );
-use parent qw(FS::detail_format);
+use base qw(FS::detail_format);
 use FS::Record qw(qsearchs);
 use FS::cust_svc;
 use FS::svc_Common; # for label
@@ -24,6 +24,7 @@ sub header_detail {
 sub append {
   my $self = shift;
   my $svcnums = ($self->{svcnums} ||= {});
+  my $acctids = ($self->{acctids} ||= []);
   foreach my $cdr (@_) {
     my $object = $self->{inbound} ? $cdr->cdr_termination(1) : $cdr;
     my $svcnum = $object->svcnum; # yes, $object->svcnum.
@@ -32,7 +33,10 @@ sub append {
       { count => 0, duration => 0, amount => 0 });
     $subtotal->{count}++;
     $subtotal->{duration} += $object->rated_seconds;
-    $subtotal->{amount} += $object->rated_price;
+    $subtotal->{amount} += $object->rated_price
+      if $object->freesidestatus ne 'no-charge';
+
+    push @$acctids, $cdr->acctid;
   }
 }
 
@@ -42,13 +46,14 @@ sub finish {
   my $buffer = $self->{buffer};
   foreach my $svcnum (keys %$svcnums) {
 
+    my $subtotal = $svcnums->{$svcnum};
+    next if $subtotal->{amount} < 0.01;
+
     my $cust_svc = qsearchs('cust_svc', { svcnum => $svcnum })
       or die "svcnum #$svcnum not found";
     my $phonenum = $cust_svc->svc_x->label;
     warn "processing $phonenum\n" if $DEBUG;
 
-    my $subtotal = $svcnums->{$svcnum};
-
     $self->csv->combine(
       $phonenum,
       $subtotal->{count},
@@ -68,6 +73,7 @@ sub finish {
         startdate   => '', #could use the earliest startdate in the bunch?
         regionname  => '', #no, we're using prefix instead
         detail      => $self->csv->string,
+        acctid      => $self->{acctids},
     });
   } #foreach $svcnum