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 |
- |
|
|