[BACK]Return to report_time CVS log [TXT][DIR] Up to [local] / RT / Invoicing

Diff for /RT/Invoicing/report_time between version 1.1 and 1.5

version 1.1, 2020/08/04 02:14:42 version 1.5, 2020/08/04 02:28:24
Line 1 
Line 1 
 #!/usr/bin/perl  #!/usr/bin/perl
 # $AFresh1$  # $AFresh1: report_time,v 1.4 2020/08/04 01:24:44 afresh1 Exp $
 use v5.16;  use v5.16;
 use warnings;  use warnings;
   
Line 51 
Line 51 
         close $fh;          close $fh;
 }  }
   
   my %total;
 foreach my $key (sort keys %entries) {  foreach my $key (sort keys %entries) {
         my %total;  
         my $start;          my $start;
         foreach my $entry (@{ $entries{$key} }) {          foreach my $entry (@{ $entries{$key} }) {
   
Line 60 
Line 60 
                 $entry->{datetime} = Time::Piece->new->strptime(                  $entry->{datetime} = Time::Piece->new->strptime(
                     $entry->{dt}, "%a %b %e %H:%M:%S %Z %Y");                      $entry->{dt}, "%a %b %e %H:%M:%S %Z %Y");
   
                 $total{ $entry->{datetime}->date }                  $total{ $entry->{datetime}->date }{$key}
                     += $entry->{datetime} - $start->{datetime}                      += $entry->{datetime} - $start->{datetime}
                     if $start;                      if $start;
   
Line 70 
Line 70 
         # If we have a timer running, pretend it stops now.          # If we have a timer running, pretend it stops now.
         if ($start) {          if ($start) {
                 my $now = localtime;                  my $now = localtime;
                 $total{ $now->date } += $now - $start->{datetime}                  $total{ $now->date }{$key} += $now - $start->{datetime}
         }          }
   }
   
         foreach my $date ( sort keys %total ) {  my $total = 0;
   foreach my $date ( sort keys %total ) {
           my $subtotal = 0;
           foreach my $key ( sort keys %{ $total{$date} } ) {
                   my $hours = $total{$date}{$key}->hours;
   
                 # round to the quarter hour                  # round to the quarter hour
                 my $hours = sprintf "%.2f",                  $hours = sprintf "%.02f",
                     25 * sprintf "%.2f", $total{$date}->hours / 25;                      25 * sprintf "%.02f", $hours / 25;
   
                 say "$date $hours $key" if $hours != 0;                  say "$date $hours $key" if $hours != 0;
   
                   $subtotal += $hours;
                   $total    += $hours;
         }          }
           printf "# %s %.02f\n", $date, $subtotal;
 }  }
   printf "# Total %.02f\n", $total;
   
 sub descr_to_key {  sub descr_to_key {
         my ($descr) = @_;          my ($descr) = @_;
   
         my @key = split /\s+/, $descr;          my @key = split /\s+/, $descr;
   
         $key[-1] = $conversions{ $key[-1] }          $key[-1] = $conversions{ lc $key[-1] }
             if @key < 3 and $conversions{ $key[-1] };              if @key < 3 and $conversions{ lc $key[-1] };
   
         return "@key";          return "@key";
 }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.5

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>