[freeside-commits] branch FREESIDE_2_3_BRANCH updated. c390c7c32d85ed30a1b533c44b720685f3ceb4f0

Mark Wells mark at 420.am
Sat May 5 14:18:05 PDT 2012


The branch, FREESIDE_2_3_BRANCH has been updated
       via  c390c7c32d85ed30a1b533c44b720685f3ceb4f0 (commit)
      from  7fe0dff657bec048d9126b4c7eabd85d5da97cf2 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit c390c7c32d85ed30a1b533c44b720685f3ceb4f0
Author: Mark Wells <mark at freeside.biz>
Date:   Sat May 5 14:17:56 2012 -0700

    more accurate aging report cutoff time, #16521

diff --git a/httemplate/search/elements/cust_main_dayranges.html b/httemplate/search/elements/cust_main_dayranges.html
index cc16014..eb75664 100644
--- a/httemplate/search/elements/cust_main_dayranges.html
+++ b/httemplate/search/elements/cust_main_dayranges.html
@@ -108,13 +108,14 @@ my $ranges = $opt{'ranges'} ? delete($opt{'ranges'}) : [
 
 my $range_sub = delete($opt{'range_sub'}); #or die
 
-my $offset = 0;
+my $as_of;
 if($cgi->param('as_of')) {
-  $offset = int((time - parse_datetime($cgi->param('as_of'))) / 86400);
-  $opt{'title'} .= ' ('.$cgi->param('as_of').')' if $offset > 0;
+  $as_of = parse_datetime($cgi->param('as_of')) || '';
+  $opt{'title'} .= ' ('.$cgi->param('as_of').')' if $as_of;
 }
 
-my $range_cols = join(',', map call_range_sub($range_sub, @$_, 'offset' => $offset ), @$ranges );
+my $range_cols = join(',', 
+  map call_range_sub($range_sub, @$_, 'as_of' => $as_of ), @$ranges );
 
 my $select_count_pkgs = FS::cust_main->select_count_pkgs_sql;
 
@@ -144,7 +145,7 @@ unless ( $cgi->param('all_customers') ) {
   my $negative = $cgi->param('negative') || 0;
 
   push @where,
-    call_range_sub($range_sub, $days, 0, 'offset' => $offset, 'no_as'=>1). 
+    call_range_sub($range_sub, $days, 0, 'as_of' => $as_of, 'no_as'=>1). 
     ($negative ? ' != 0' : ' > 0');
 }
 
@@ -186,7 +187,9 @@ my $sql_query = {
 
 my $total_sql =
   "SELECT ".
-      join(',', map call_range_sub( $range_sub, @$_, 'offset' => $offset, 'sum'=>1 ), @$ranges).
+      join(',', 
+        map call_range_sub( $range_sub, @$_, 'as_of' => $as_of, 'sum'=>1 ), 
+        @$ranges).
     " FROM cust_main $where";
 
 my $total_sth = dbh->prepare($total_sql) or die dbh->errstr;
@@ -251,10 +254,11 @@ sub call_range_sub {
 
   my $as = $opt{'no_as'} ? '' : " AS rangecol_${startdays}_$enddays";
 
-  my $offset = $opt{'offset'} || 0;
-  # Always use $offset - 1day + 1sec = the last second of that day
-  my $cutoff = DateTime->now->set(hour => 23, minute => 59, second => 59);
-  $cutoff->subtract(days => $offset);
+  my $as_of = $opt{'as_of'} || time;
+  my $cutoff = DateTime->from_epoch(epoch => $as_of, time_zone => 'local');
+  $cutoff->truncate(to => 'day'); # local midnight on the report day
+  $cutoff->add(days => 1); # the day after that
+  $cutoff->subtract(seconds => 1); # the last second of the report day
 
   my $start = $cutoff->clone;
   $start->subtract(days => $startdays);
@@ -262,7 +266,7 @@ sub call_range_sub {
   my $end = $cutoff->clone;
   $end->subtract(days => $enddays);
 
-  #warn "offset $offset (".$cutoff->epoch."), range $startdays-$enddays (".$start->epoch . '-' . ($enddays ? $end->epoch : '').")\n";
+  #warn "cutoff ".$cutoff->epoch.", range $startdays-$enddays (".$start->epoch . '-' . ($enddays ? $end->epoch : '').")\n";
   my $sql = &{$range_sub}( $start->epoch, 
                            $enddays ? $end->epoch : '', 
                            $cutoff->epoch ); #%opt?
diff --git a/httemplate/search/report_receivables.html b/httemplate/search/report_receivables.html
index 19f8635..5cff0f4 100755
--- a/httemplate/search/report_receivables.html
+++ b/httemplate/search/report_receivables.html
@@ -52,7 +52,7 @@ function toggle(obj) {
   <& /elements/tr-input-date-field.html, {
                 'name'      => 'as_of',
                 'value'     => time,
-                'label'     => emt('As of date '),
+                'label'     => emt('At the end of date '),
                 'format'    => FS::Conf->new->config('date_format') || '%m/%d/%Y',
                 } 
   &>

-----------------------------------------------------------------------

Summary of changes:
 .../search/elements/cust_main_dayranges.html       |   26 +++++++++++--------
 httemplate/search/report_receivables.html          |    2 +-
 2 files changed, 16 insertions(+), 12 deletions(-)




More information about the freeside-commits mailing list