version 1.9, 2011/03/22 01:01:53 |
version 1.10, 2011/03/22 01:15:27 |
|
|
while ( my $ticket = &$iterator ) { |
while ( my $ticket = &$iterator ) { |
my $cust = find_customer_for_ticket( $customers, $ticket ); |
my $cust = find_customer_for_ticket( $customers, $ticket ); |
if ( !$cust ) { |
if ( !$cust ) { |
say "No customer found for ticket " . $ticket->id; |
warn "No customer found for ticket " . $ticket->id; |
next; |
next; |
} |
} |
if ( !$cust->{invoice} ) { |
if ( !$cust->{invoice} ) { |
say "Customer has no open invoices for ticket " . $ticket->id; |
#say "Customer has no open invoices for ticket " . $ticket->id; |
next; |
next; |
} |
} |
my $invoice = $cust->{invoice}; |
my $invoice = $cust->{invoice}; |
|
|
$invoice->{id} = $state->{lastinvoice}; |
$invoice->{id} = $state->{lastinvoice}; |
$invoice->{file} = 'invoice_' . $state->{lastinvoice} . '.pdf'; |
$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 /) { |
foreach my $key (qw/ start end /) { |
if ( exists $invoice->{$key} ) { |
if ( exists $invoice->{$key} ) { |
$invoice->{$key} = $invoice->{$key}->strftime('%B %d, %Y'); |
$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; |
my $tt = Template->new; |
$tt->process( 'invoice.tex.tt', $invoice, $invoice->{file} ) |
$tt->process( 'invoice.tex.tt', $invoice, $invoice->{file} ) |
or die $tt->error . "\n"; |
or die $tt->error . "\n"; |
|
|
|
|
sub ymd_to_DateTime { |
sub ymd_to_DateTime { |
my ($ymd) = @_; |
my ($ymd) = @_; |
my ( $date, $time ) = split ' ', $ymd; |
my ( $date, $time ) = split /[\sT]/, $ymd; |
my ( $year, $month, $day ) = split '-', $date; |
my ( $year, $month, $day ) = split '-', $date; |
my ( $hour, $minute, $second ) = split ':', $time if $time; |
my ( $hour, $minute, $second ) = split ':', $time if $time; |
|
|