=================================================================== RCS file: /cvs/RT/Invoicing/rt_invoices.pl,v retrieving revision 1.9 retrieving revision 1.11 diff -u -r1.9 -r1.11 --- RT/Invoicing/rt_invoices.pl 2011/03/22 01:01:53 1.9 +++ RT/Invoicing/rt_invoices.pl 2011/03/22 01:16:32 1.11 @@ -1,4 +1,20 @@ #!/usr/bin/perl +# $AFresh1$ +######################################################################## +# Copyright (c) 2011 Andrew Fresh +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +######################################################################## use strict; use warnings; @@ -140,11 +156,11 @@ while ( my $ticket = &$iterator ) { my $cust = find_customer_for_ticket( $customers, $ticket ); if ( !$cust ) { - say "No customer found for ticket " . $ticket->id; + warn "No customer found for ticket " . $ticket->id; next; } if ( !$cust->{invoice} ) { - say "Customer has no open invoices for ticket " . $ticket->id; + #say "Customer has no open invoices for ticket " . $ticket->id; next; } my $invoice = $cust->{invoice}; @@ -234,19 +250,28 @@ $invoice->{id} = $state->{lastinvoice}; $invoice->{file} = 'invoice_' . $state->{lastinvoice} . '.pdf'; + foreach my $k (qw/ file transactions start end total past_due total_due /) + { + my $v; + if ( $invoice->{$k} ) { $v = $invoice->{$k} } + elsif ( $cust->{$k} ) { $v = $cust->{$k} } + + if (defined $v && length $v) { + if ( ref $v eq 'DateTime' ) { + $li{$k} = $v->ymd; + } + else { + $li{$k} = $v; + } + } + } + $state->{invoice}->{ $li{end} }{ $invoice->{id} } = \%li; + foreach my $key (qw/ start end /) { if ( exists $invoice->{$key} ) { $invoice->{$key} = $invoice->{$key}->strftime('%B %d, %Y'); } } - - foreach my $k (qw/ transactions start end total past_due total_due /) { - if ( $invoice->{$k} ) { $li{$k} = $invoice->{$k} } - elsif ( $cust->{$k} ) { $li{$k} = $cust->{$k} } - } - - $state->{invoice}->{ $invoice->{end} }{ $invoice->{id} } = \%li; - my $tt = Template->new; $tt->process( 'invoice.tex.tt', $invoice, $invoice->{file} ) or die $tt->error . "\n"; @@ -439,7 +464,7 @@ sub ymd_to_DateTime { my ($ymd) = @_; - my ( $date, $time ) = split ' ', $ymd; + my ( $date, $time ) = split /[\sT]/, $ymd; my ( $year, $month, $day ) = split '-', $date; my ( $hour, $minute, $second ) = split ':', $time if $time;