update address standardization for cust_location changes
[freeside.git] / FS / FS / Report / Table / Monthly.pm
index 802d883..86ab19b 100644 (file)
@@ -24,6 +24,7 @@ FS::Report::Table::Monthly - Tables of report data, indexed monthly
     'end_year'    => 2020,
     #opt
     'agentnum'    => 54
+    'refnum'      => 54
     'params'      => [ [ 'paramsfor', 'item_one' ], [ 'item', 'two' ] ], # ...
     'remove_empty' => 1, #collapse empty rows, default 0
     'item_labels' => [ ], #useful with remove_empty
@@ -49,9 +50,8 @@ sub data {
   my $syear   = $self->{'start_year'};
   my $emonth  = $self->{'end_month'};
   my $eyear   = $self->{'end_year'};
-  # how far to extrapolate into the future
-  my $pmonth  = $self->{'project_month'};
-  my $pyear   = $self->{'project_year'};
+  # whether to extrapolate into the future
+  my $projecting = $self->{'projection'};
 
   # sanity checks
   if ( $eyear < $syear or
@@ -60,18 +60,16 @@ sub data {
   }
 
   my $agentnum = $self->{'agentnum'};
+  my $refnum = $self->{'refnum'};
 
-  if ( $pyear > $eyear or
-      ($pyear == $eyear and $pmonth > $emonth) ) {
+  if ( $projecting ) {
 
-    # create the entire projection set first to avoid timing problems
+    $self->init_projection;
 
-    $self->init_projection if $pmonth;
-
-    my $thisyear = $eyear;
-    my $thismonth = $emonth;
-    while ( $thisyear < $pyear || 
-      ( $thisyear == $pyear and $thismonth <= $pmonth )
+    my $thismonth = $smonth;
+    my $thisyear  = $syear;
+    while ( $thisyear < $eyear || 
+      ( $thisyear == $eyear and $thismonth <= $emonth )
     ) {
       my $speriod = timelocal(0,0,0,1,$thismonth-1,$thisyear);
       $thismonth++;
@@ -84,10 +82,8 @@ sub data {
 
   my %data;
 
-  my $max_year = $pyear || $eyear;
-  my $max_month = $pmonth || $emonth;
-
-  my $projecting = 0; # are we currently projecting?
+  my $max_year  = $eyear;
+  my $max_month = $emonth;
 
   while ( $syear < $max_year
      || ( $syear == $max_year && $smonth < $max_month+1 ) ) {
@@ -101,11 +97,6 @@ sub data {
       push @{$data{label}}, "$smonth/$syear";
     }
 
-    if ( $syear > $eyear || ( $syear == $eyear && $smonth >= $emonth + 1 ) ) {
-      # start getting data from the projection
-      $projecting = 1;
-    }
-
     my $speriod = timelocal(0,0,0,1,$smonth-1,$syear);
     push @{$data{speriod}}, $speriod;
     if ( ++$smonth == 13 ) { $syear++; $smonth=1; }
@@ -121,11 +112,13 @@ sub data {
         my $item = $items[$i]; 
         my @param = $self->{'params'} ? @{ $self->{'params'}[$i] }: ();
         push @param, 'project', $projecting;
+        push @param, 'refnum' => $refnum if $refnum;
         my $value = $self->$item($speriod, $eperiod, $agentnum, @param);
         push @{$data{data}->[$col]}, $value;
         $item = $items[$i+1]; 
         @param = $self->{'params'} ? @{ $self->{'params'}[++$i] }: ();
         push @param, 'project', $projecting;
+        push @param, 'refnum' => $refnum if $refnum;
         $value = $self->$item($speriod, $eperiod, $agentnum, @param);
         push @{$data{data}->[$col++]}, $value;
       }
@@ -133,6 +126,7 @@ sub data {
         my $item = $items[$i];
         my @param = $self->{'params'} ? @{ $self->{'params'}[$col] }: ();
         push @param, 'project', $projecting;
+        push @param, 'refnum' => $refnum if $refnum;
         my $value = $self->$item($speriod, $eperiod, $agentnum, @param);
         push @{$data{data}->[$col++]}, $value;
       }
@@ -181,9 +175,9 @@ sub data {
 
   }
   # clean up after ourselves
-  dbh->rollback;
-  # may be useful for debugging
-  #dbh->commit;
+  #dbh->rollback;
+  # leave in until development is finished, for diagnostics
+  dbh->commit;
 
   \%data;
 }