| version 1.45, 2011/12/31 02:14:32 |
version 1.46, 2012/01/27 04:13:45 |
|
|
| #!/usr/bin/perl |
#!/usr/bin/perl |
| # $AFresh1: rt_invoices.pl,v 1.44 2011/12/30 05:01:41 andrew Exp $ |
# $AFresh1: rt_invoices.pl,v 1.45 2011/12/31 02:14:32 andrew Exp $ |
| ######################################################################## |
######################################################################## |
| # Copyright (c) 2011 Andrew Fresh <andrew@afresh1.com> |
# Copyright (c) 2011 Andrew Fresh <andrew@afresh1.com> |
| # |
# |
|
|
| |
|
| if ( my $unpaid_invoices = $state->unpaid_invoices() ) { |
if ( my $unpaid_invoices = $state->unpaid_invoices() ) { |
| foreach my $custid ( keys %{$unpaid_invoices} ) { |
foreach my $custid ( keys %{$unpaid_invoices} ) { |
| my %project = ( title => 'Unpaid Invoices', fees => [], ); |
my %project = ( title => 'Unpaid Invoices', fees => [], ); |
| my $past_due = 0; |
my $past_due = 0; |
| |
my $unpaid = 0; |
| |
|
| my $cust; |
my $cust; |
| foreach ( @{$customers} ) { |
foreach ( @{$customers} ) { |
|
|
| } |
} |
| $cust ||= fake_customer($custid); |
$cust ||= fake_customer($custid); |
| |
|
| foreach my $id ( sort { $a <=> $b } |
foreach my $id ( |
| keys %{ $unpaid_invoices->{$custid} } ) |
sort { $a <=> $b } |
| |
keys %{ $unpaid_invoices->{$custid} } |
| |
) |
| { |
{ |
| my $unpaid = $state->get_invoice($id); |
my $unpaid = $state->get_invoice($id); |
| my $invdate = ymd_to_DateTime( $unpaid->{invdate} ); |
my $invdate = ymd_to_DateTime( $unpaid->{invdate} ); |
| |
|
| next |
my $content |
| if $cust->{duedate} |
= sprintf( "Invoice %06d from %s", $id, $invdate->ymd ); |
| && DateTime->compare( $invdate, $cust->{duedate} ) > 0; |
if ( $cust->{duedate} |
| |
&& DateTime->compare( $invdate, $cust->{duedate} ) > 0 ) |
| |
{ |
| |
$content = "PAST DUE: $content"; |
| |
$past_due += $unpaid_invoices->{$custid}->{$id}; |
| |
} |
| |
else { |
| |
$unpaid += $unpaid_invoices->{$custid}->{$id}; |
| |
} |
| |
|
| $past_due += $unpaid_invoices->{$custid}->{$id}; |
|
| push @{ $project{fees} }, |
push @{ $project{fees} }, |
| { |
{ |
| id => $id, |
id => $id, |
| contents => |
contents => $content, |
| sprintf( "Invoice %06d from %s", $id, $invdate->ymd ), |
count => 1, |
| count => 1, |
rate => $unpaid_invoices->{$custid}->{$id}, |
| rate => $unpaid_invoices->{$custid}->{$id}, |
|
| }; |
}; |
| } |
} |
| |
|
|
|
| $cust->{invoice} ||= make_invoice(); |
$cust->{invoice} ||= make_invoice(); |
| |
|
| $cust->{invoice}->{past_due} = $past_due; |
$cust->{invoice}->{past_due} = $past_due; |
| |
$cust->{invoice}->{unpaid} = $unpaid; |
| $cust->{invoice}->{total_due} |
$cust->{invoice}->{total_due} |
| = $cust->{invoice}->{total} + $past_due; |
= $cust->{invoice}->{total} + $past_due + $unpaid; |
| |
|
| unshift @{ $cust->{invoice}->{projects} }, \%project; |
unshift @{ $cust->{invoice}->{projects} }, \%project; |
| } |
} |