|
Lines 556-563
END_SQL
Link Here
|
| 556 |
next; |
556 |
next; |
| 557 |
} |
557 |
} |
| 558 |
} |
558 |
} |
|
|
559 |
|
| 559 |
if (defined $borrowernumber && $borrowernumber eq $data->{'borrowernumber'}){ |
560 |
if (defined $borrowernumber && $borrowernumber eq $data->{'borrowernumber'}){ |
| 560 |
# we have already dealt with this borrower |
561 |
# we have already dealt with this borrower |
| 561 |
$verbose and warn "already dealt with this borrower $borrowernumber"; |
562 |
$verbose and warn "already dealt with this borrower $borrowernumber"; |
| 562 |
next; |
563 |
next; |
| 563 |
} |
564 |
} |
|
Lines 668-677
END_SQL
Link Here
|
| 668 |
@message_transport_types = @{ GetOverdueMessageTransportTypes( q{}, $overdue_rules->{categorycode}, $i) } |
669 |
@message_transport_types = @{ GetOverdueMessageTransportTypes( q{}, $overdue_rules->{categorycode}, $i) } |
| 669 |
unless @message_transport_types; |
670 |
unless @message_transport_types; |
| 670 |
|
671 |
|
|
|
672 |
#calculate letter fee |
| 673 |
my $noticefee = 0; |
| 674 |
if ($letter->{'fee'}){ |
| 675 |
$noticefee = $letter->{'fee'}; |
| 676 |
} else { |
| 677 |
if (C4::Context->preference('DefaultNoticeFee')){ |
| 678 |
$noticefee = C4::Context->preference('DefaultNoticeFee'); |
| 679 |
} |
| 680 |
} |
| 681 |
|
| 682 |
#total of fines |
| 683 |
my $userfines = 0; |
| 684 |
my $dbh = C4::Context->dbh(); |
| 685 |
my $query = q|SELECT sum(amountoutstanding) as fineamount FROM accountlines where date = DATE(NOW()) AND itemnumber IS NOT NULL AND amountoutstanding > 0 AND borrowernumber=?|; |
| 686 |
my $sth = $dbh->prepare($query); |
| 687 |
$sth->execute( $borrowernumber ); |
| 688 |
my $fine = $sth->fetchrow_hashref(); |
| 689 |
if ($fine->{fineamount}) { |
| 690 |
$userfines = $fine->{fineamount}; |
| 691 |
} |
| 692 |
$userfines = $userfines + $noticefee; |
| 671 |
|
693 |
|
| 672 |
my $print_sent = 0; # A print notice is not yet sent for this patron |
694 |
my $print_sent = 0; # A print notice is not yet sent for this patron |
| 673 |
for my $mtt ( @message_transport_types ) { |
695 |
for my $mtt ( @message_transport_types ) { |
| 674 |
|
|
|
| 675 |
my $letter = parse_letter( |
696 |
my $letter = parse_letter( |
| 676 |
{ letter_code => $overdue_rules->{"letter$i"}, |
697 |
{ letter_code => $overdue_rules->{"letter$i"}, |
| 677 |
borrowernumber => $borrowernumber, |
698 |
borrowernumber => $borrowernumber, |
|
Lines 681-686
END_SQL
Link Here
|
| 681 |
bib => $branch_details->{'branchname'}, # maybe 'bib' is a typo for 'lib<rary>'? |
702 |
bib => $branch_details->{'branchname'}, # maybe 'bib' is a typo for 'lib<rary>'? |
| 682 |
'items.content' => $titles, |
703 |
'items.content' => $titles, |
| 683 |
'count' => $itemcount, |
704 |
'count' => $itemcount, |
|
|
705 |
'total' => sprintf("%.2f", $userfines), |
| 706 |
'noticefee' => $noticefee, |
| 684 |
}, |
707 |
}, |
| 685 |
message_transport_type => $mtt, |
708 |
message_transport_type => $mtt, |
| 686 |
} |
709 |
} |
|
Lines 873-879
sub parse_letter {
Link Here
|
| 873 |
$params->{'letter'}->{'content'} =~ m/(<item>.*<\/item>)/; |
896 |
$params->{'letter'}->{'content'} =~ m/(<item>.*<\/item>)/; |
| 874 |
$item_format = $1; |
897 |
$item_format = $1; |
| 875 |
} |
898 |
} |
| 876 |
|
|
|
| 877 |
$item->{'fine'} = currency_format($currency_format, "$fine", FMT_SYMBOL); |
899 |
$item->{'fine'} = currency_format($currency_format, "$fine", FMT_SYMBOL); |
| 878 |
# if active currency isn't correct ISO code fallback to sprintf |
900 |
# if active currency isn't correct ISO code fallback to sprintf |
| 879 |
$item->{'fine'} = sprintf('%.2f', $fine) unless $item->{'fine'}; |
901 |
$item->{'fine'} = sprintf('%.2f', $fine) unless $item->{'fine'}; |
|
Lines 887-899
sub parse_letter {
Link Here
|
| 887 |
} |
909 |
} |
| 888 |
} |
910 |
} |
| 889 |
|
911 |
|
|
|
912 |
#find all fines to create invoice table |
| 913 |
my $dbh = C4::Context->dbh(); |
| 914 |
my $sth = $dbh->prepare( <<"END_SQL" ); |
| 915 |
SELECT items.biblionumber, items.itemnumber |
| 916 |
FROM items,accountlines |
| 917 |
where date = DATE(NOW()) |
| 918 |
AND accountlines.itemnumber IS NOT NULL |
| 919 |
AND amountoutstanding > 0 |
| 920 |
AND items.itemnumber = accountlines.itemnumber |
| 921 |
AND borrowernumber=? group by items.itemnumber |
| 922 |
END_SQL |
| 923 |
|
| 924 |
$sth->execute($params->{'borrowernumber'}); |
| 925 |
my @account_tables; |
| 926 |
while ( my $item = $sth->fetchrow_hashref() ) { |
| 927 |
push @account_tables, { |
| 928 |
'biblio' => $item->{'biblionumber'}, |
| 929 |
'items' => $item->{'itemnumber'}, |
| 930 |
'accountlines' => [{'accountlines' => $item->{'itemnumber'}}], |
| 931 |
}; |
| 932 |
} |
| 933 |
|
| 890 |
return C4::Letters::GetPreparedLetter ( |
934 |
return C4::Letters::GetPreparedLetter ( |
| 891 |
module => 'circulation', |
935 |
module => 'circulation', |
| 892 |
letter_code => $params->{'letter_code'}, |
936 |
letter_code => $params->{'letter_code'}, |
| 893 |
branchcode => $params->{'branchcode'}, |
937 |
branchcode => $params->{'branchcode'}, |
| 894 |
tables => \%tables, |
938 |
tables => \%tables, |
| 895 |
substitute => $substitute, |
939 |
substitute => $substitute, |
| 896 |
repeat => { item => \@item_tables }, |
940 |
repeat => { item => \@item_tables, |
|
|
941 |
itemaccountlines => \@account_tables}, |
| 897 |
message_transport_type => $params->{message_transport_type}, |
942 |
message_transport_type => $params->{message_transport_type}, |
| 898 |
); |
943 |
); |
| 899 |
} |
944 |
} |
| 900 |
- |
|
|