=================================================================== RCS file: /cvs/RT/Invoicing/rt_invoices.pl,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- RT/Invoicing/rt_invoices.pl 2011/04/08 19:00:16 1.23 +++ 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.22 2011/04/08 17:10:28 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 ) ); @@ -345,7 +348,7 @@ # Is the start date more than $freq $per before the end date? my $diff = $billends - $date; - return unless $diff->subtract( $per => $freq )->is_positive; + return if $diff->in_units($per) < 1; if ( $cust->{base_rate} ) { my ( $project, $hours ) = make_base_project(