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