=================================================================== RCS file: /cvs/RT/Invoicing/rt_invoices.pl,v retrieving revision 1.22 retrieving revision 1.24 diff -u -r1.22 -r1.24 --- RT/Invoicing/rt_invoices.pl 2011/04/08 18:10:28 1.22 +++ RT/Invoicing/rt_invoices.pl 2011/04/12 20:32:15 1.24 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $AFresh1: rt_invoices.pl,v 1.21 2011/03/24 20:03:49 andrew Exp $ +# $AFresh1: rt_invoices.pl,v 1.23 2011/04/08 18:00:16 andrew Exp $ ######################################################################## # Copyright (c) 2011 Andrew Fresh # @@ -322,13 +322,16 @@ default { die "Unknown per [$per]\n" } } - my $billends = DateTime->now->set( hour => 0, minute => 0, second => 0 ); + my $billends = DateTime->now + ->subtract( days => 1 ) + ->set( hour => 23, minute => 59, second => 59 ); # XXX This is helpful, but monthly and billday > 28 == !!! $billends->subtract( days => 1 ) while $day && $billends->$day_method != $day; - my $date = $billends->clone->subtract( $per => $freq ); + my $date = $billends->clone->subtract( $per => $freq ) + ->set( hour => 0, minute => 0, second => 0 ); my %invoice = ( end => $billends->clone->subtract( seconds => 1 ) ); @@ -343,7 +346,9 @@ if !$startdate || $startdate > $date; } - return if $billends <= $date; + # Is the start date more than $freq $per before the end date? + my $diff = $billends - $date; + return if $diff->in_units($per) < 1; if ( $cust->{base_rate} ) { my ( $project, $hours ) = make_base_project(