=================================================================== RCS file: /cvs/RT/Invoicing/rt_invoices.pl,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- RT/Invoicing/rt_invoices.pl 2011/05/26 02:09:36 1.37 +++ RT/Invoicing/rt_invoices.pl 2011/06/21 01:20:28 1.38 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $AFresh1: rt_invoices.pl,v 1.36 2011/05/18 19:03:17 andrew Exp $ +# $AFresh1: rt_invoices.pl,v 1.37 2011/05/26 01:09:36 andrew Exp $ ######################################################################## # Copyright (c) 2011 Andrew Fresh # @@ -96,17 +96,18 @@ foreach my $fee ( @{ $project->{fees} } ) { my $hours = hours_for_date( $cust->{invoice}, $fee->{date} ); - my $type = 'unknown'; - while ( $type && $type ne 'default' ) { + my $type = 'unknown'; + my $count = $fee->{count}; + while ( $type && $count > 0 && $type ne 'default' ) { $type = exists $hours->{ $fee->{type} } && $hours->{ $fee->{type} } > 0 ? $fee->{type} : 'default'; next unless exists $hours->{$type} && $hours->{$type} > 0; my $discount_time = 0; - if ( $hours->{$type} > $fee->{count} ) { - $hours->{$type} -= $fee->{count}; - $discount_time = $fee->{count}; + if ( $hours->{$type} > $count ) { + $hours->{$type} -= $count; + $discount_time = $count; } else { $discount_time = $hours->{$type}; @@ -120,10 +121,9 @@ += $discount_time; $type = '' if $type eq 'default'; + $count -= $discount_time; $fee->{detail} .= " $discount_time $type Hours Discounted"; } - - last if $discount_time == $fee->{count}; } }