|
Lines 541-548
END_SQL
Link Here
|
| 541 |
next; |
541 |
next; |
| 542 |
} |
542 |
} |
| 543 |
} |
543 |
} |
| 544 |
if ($borrowernumber eq $data->{'borrowernumber'}){ |
544 |
if ($borrowernumber && $borrowernumber eq $data->{'borrowernumber'}){ |
| 545 |
# we have already dealt with this borrower |
545 |
# we have already dealt with this borrower |
| 546 |
$verbose and warn "already dealt with this borrower $borrowernumber"; |
546 |
$verbose and warn "already dealt with this borrower $borrowernumber"; |
| 547 |
next; |
547 |
next; |
| 548 |
} |
548 |
} |
|
Lines 642-651
END_SQL
Link Here
|
| 642 |
@message_transport_types = @{ GetOverdueMessageTransportTypes( q{}, $overdue_rules->{categorycode}, $i) } |
642 |
@message_transport_types = @{ GetOverdueMessageTransportTypes( q{}, $overdue_rules->{categorycode}, $i) } |
| 643 |
unless @message_transport_types; |
643 |
unless @message_transport_types; |
| 644 |
|
644 |
|
|
|
645 |
#calculate letter fee |
| 646 |
my $noticefee = 0; |
| 647 |
if ($letter->{'fee'}){ |
| 648 |
$noticefee = $letter->{'fee'}; |
| 649 |
} else { |
| 650 |
if (C4::Context->preference('DefaultNoticeFee')){ |
| 651 |
$noticefee = C4::Context->preference('DefaultNoticeFee'); |
| 652 |
} |
| 653 |
} |
| 654 |
|
| 655 |
#total of fines |
| 656 |
my $userfines = 0; |
| 657 |
my $dbh = C4::Context->dbh(); |
| 658 |
my $query = q|SELECT sum(amountoutstanding) as fineamount FROM accountlines where date = DATE(NOW()) AND itemnumber IS NOT NULL AND amountoutstanding > 0 AND borrowernumber=?|; |
| 659 |
my $sth = $dbh->prepare($query); |
| 660 |
$sth->execute( $borrowernumber ); |
| 661 |
my $fine = $sth->fetchrow_hashref(); |
| 662 |
if ($fine->{fineamount}) { |
| 663 |
$userfines = $fine->{fineamount}; |
| 664 |
} |
| 665 |
$userfines = $userfines + $noticefee; |
| 645 |
|
666 |
|
| 646 |
my $print_sent = 0; # A print notice is not yet sent for this patron |
667 |
my $print_sent = 0; # A print notice is not yet sent for this patron |
| 647 |
for my $mtt ( @message_transport_types ) { |
668 |
for my $mtt ( @message_transport_types ) { |
| 648 |
|
|
|
| 649 |
my $letter = parse_letter( |
669 |
my $letter = parse_letter( |
| 650 |
{ letter_code => $overdue_rules->{"letter$i"}, |
670 |
{ letter_code => $overdue_rules->{"letter$i"}, |
| 651 |
borrowernumber => $borrowernumber, |
671 |
borrowernumber => $borrowernumber, |
|
Lines 655-660
END_SQL
Link Here
|
| 655 |
bib => $branch_details->{'branchname'}, # maybe 'bib' is a typo for 'lib<rary>'? |
675 |
bib => $branch_details->{'branchname'}, # maybe 'bib' is a typo for 'lib<rary>'? |
| 656 |
'items.content' => $titles, |
676 |
'items.content' => $titles, |
| 657 |
'count' => $itemcount, |
677 |
'count' => $itemcount, |
|
|
678 |
'total' => sprintf("%.2f", $userfines), |
| 679 |
'noticefee' => $noticefee, |
| 658 |
}, |
680 |
}, |
| 659 |
message_transport_type => $mtt, |
681 |
message_transport_type => $mtt, |
| 660 |
} |
682 |
} |
|
Lines 847-853
sub parse_letter {
Link Here
|
| 847 |
$params->{'letter'}->{'content'} =~ m/(<item>.*<\/item>)/; |
869 |
$params->{'letter'}->{'content'} =~ m/(<item>.*<\/item>)/; |
| 848 |
$item_format = $1; |
870 |
$item_format = $1; |
| 849 |
} |
871 |
} |
| 850 |
|
|
|
| 851 |
$item->{'fine'} = currency_format($currency_format, "$fine", FMT_SYMBOL); |
872 |
$item->{'fine'} = currency_format($currency_format, "$fine", FMT_SYMBOL); |
| 852 |
# if active currency isn't correct ISO code fallback to sprintf |
873 |
# if active currency isn't correct ISO code fallback to sprintf |
| 853 |
$item->{'fine'} = sprintf('%.2f', $fine) unless $item->{'fine'}; |
874 |
$item->{'fine'} = sprintf('%.2f', $fine) unless $item->{'fine'}; |
|
Lines 861-873
sub parse_letter {
Link Here
|
| 861 |
} |
882 |
} |
| 862 |
} |
883 |
} |
| 863 |
|
884 |
|
|
|
885 |
#find all fines to create invoice table |
| 886 |
my $dbh = C4::Context->dbh(); |
| 887 |
my $sth = $dbh->prepare( <<"END_SQL" ); |
| 888 |
SELECT items.biblionumber, items.itemnumber |
| 889 |
FROM items,accountlines |
| 890 |
where date = DATE(NOW()) |
| 891 |
AND accountlines.itemnumber IS NOT NULL |
| 892 |
AND amountoutstanding > 0 |
| 893 |
AND items.itemnumber = accountlines.itemnumber |
| 894 |
AND borrowernumber=? group by items.itemnumber |
| 895 |
END_SQL |
| 896 |
|
| 897 |
$sth->execute($params->{'borrowernumber'}); |
| 898 |
my @account_tables; |
| 899 |
while ( my $item = $sth->fetchrow_hashref() ) { |
| 900 |
push @account_tables, { |
| 901 |
'biblio' => $item->{'biblionumber'}, |
| 902 |
'items' => $item->{'itemnumber'}, |
| 903 |
'accountlines' => [{'accountlines' => $item->{'itemnumber'}}], |
| 904 |
}; |
| 905 |
} |
| 906 |
|
| 864 |
return C4::Letters::GetPreparedLetter ( |
907 |
return C4::Letters::GetPreparedLetter ( |
| 865 |
module => 'circulation', |
908 |
module => 'circulation', |
| 866 |
letter_code => $params->{'letter_code'}, |
909 |
letter_code => $params->{'letter_code'}, |
| 867 |
branchcode => $params->{'branchcode'}, |
910 |
branchcode => $params->{'branchcode'}, |
| 868 |
tables => \%tables, |
911 |
tables => \%tables, |
| 869 |
substitute => $substitute, |
912 |
substitute => $substitute, |
| 870 |
repeat => { item => \@item_tables }, |
913 |
repeat => { item => \@item_tables, |
|
|
914 |
itemaccountlines => \@account_tables}, |
| 871 |
message_transport_type => $params->{message_transport_type}, |
915 |
message_transport_type => $params->{message_transport_type}, |
| 872 |
); |
916 |
); |
| 873 |
} |
917 |
} |
| 874 |
- |
|
|