[BACK]Return to rt_invoices.pl CVS log [TXT][DIR] Up to [local] / RT / Invoicing

Diff for /RT/Invoicing/rt_invoices.pl between version 1.35 and 1.38

version 1.35, 2011/05/18 20:02:36 version 1.38, 2011/06/21 01:20:28
Line 1 
Line 1 
 #!/usr/bin/perl  #!/usr/bin/perl
 # $AFresh1: rt_invoices.pl,v 1.34 2011/05/07 02:34:17 andrew Exp $  # $AFresh1: rt_invoices.pl,v 1.37 2011/05/26 01:09:36 andrew Exp $
 ########################################################################  ########################################################################
 # Copyright (c) 2011 Andrew Fresh <andrew@afresh1.com>  # Copyright (c) 2011 Andrew Fresh <andrew@afresh1.com>
 #  #
Line 96 
Line 96 
     foreach my $fee ( @{ $project->{fees} } ) {      foreach my $fee ( @{ $project->{fees} } ) {
         my $hours = hours_for_date( $cust->{invoice}, $fee->{date} );          my $hours = hours_for_date( $cust->{invoice}, $fee->{date} );
   
         my $type = 'unknown';          my $type  = 'unknown';
         while ($type && $type ne 'default' ) {          my $count = $fee->{count};
           while ( $type && $count > 0 && $type ne 'default' ) {
             $type = exists $hours->{ $fee->{type} }              $type = exists $hours->{ $fee->{type} }
                 && $hours->{ $fee->{type} } > 0 ? $fee->{type} : 'default';                  && $hours->{ $fee->{type} } > 0 ? $fee->{type} : 'default';
   
             next unless exists $hours->{$type} && $hours->{$type} > 0;              next unless exists $hours->{$type} && $hours->{$type} > 0;
   
             my $discount_time = 0;              my $discount_time = 0;
             if ( $hours->{$type} > $fee->{count} ) {              if ( $hours->{$type} > $count ) {
                 $hours->{$type} -= $fee->{count};                  $hours->{$type} -= $count;
                 $discount_time = $fee->{count};                  $discount_time = $count;
             }              }
             else {              else {
                 $discount_time = $hours->{$type};                  $discount_time = $hours->{$type};
Line 116 
Line 117 
             if ($discount_time) {              if ($discount_time) {
                 $cust->{invoice}->{discount}->{amount}                  $cust->{invoice}->{discount}->{amount}
                     += round( $discount_time * $fee->{rate} );                      += round( $discount_time * $fee->{rate} );
                 $cust->{invoice}->{discount}->{hours}{$type} += $discount_time;                  $cust->{invoice}->{discount}->{hours}{$type}
                       += $discount_time;
   
                 $type = '' if $type eq 'default';                  $type = '' if $type eq 'default';
                   $count -= $discount_time;
                 $fee->{detail} .= " $discount_time $type Hours Discounted";                  $fee->{detail} .= " $discount_time $type Hours Discounted";
             }              }
         }          }
Line 132 
Line 135 
     next unless $invoice && $invoice->{projects} && @{ $invoice->{projects} };      next unless $invoice && $invoice->{projects} && @{ $invoice->{projects} };
   
     my %li = (      my %li = (
         custid  => $cust->{id},          custid       => $cust->{id},
         invdate => DateTime->now( time_zone => 'local' )->ymd,          invdate      => DateTime->now( time_zone => 'local' )->ymd,
         transactions => [],          transactions => [],
     );      );
   
Line 473 
Line 476 
     while ( my $txn = $txn_i->() ) {      while ( my $txn = $txn_i->() ) {
         next if $state->txn_is_invoiced( $txn->id );          next if $state->txn_is_invoiced( $txn->id );
   
         if (my $expense = make_expense( $txn, $ticket ) ) {          if ( my $expense = make_expense( $txn, $ticket ) ) {
             push @{ $project{expenses} }, $expense;              push @{ $project{expenses} }, $expense;
             $project{transactions}{ $txn->id } = 1;              $project{transactions}{ $txn->id } = 1;
         }          }
Line 497 
Line 500 
         }          }
         next if $invoice->{end} < $fee->{date};          next if $invoice->{end} < $fee->{date};
   
         push @{ $project{fees} },         $fee;          push @{ $project{fees} }, $fee;
         $project{transactions}{ $txn->id } = 1;          $project{transactions}{ $txn->id } = 1;
     }      }
   
Line 513 
Line 516 
     my $work_type = $txn->cf('WorkType');      my $work_type = $txn->cf('WorkType');
   
     if ( $work_type =~ s/\s*Onsite//i ) {      if ( $work_type =~ s/\s*Onsite//i ) {
   
         # XXX Do something special for onsite activities          # XXX Do something special for onsite activities
     }      }
   
Line 549 
Line 553 
             . ( $txn->data || $ticket->subject ),              . ( $txn->data || $ticket->subject ),
         amount => $amount,          amount => $amount,
         date   => ymd_to_DateTime( $txn->created ),          date   => ymd_to_DateTime( $txn->created ),
   
         # detail => ???,          # detail => ???,
     );      );
   

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.38

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