- } else {
- # if not sent by email then print
- push @output_chunks,
- prepare_letter_for_printing(
- { letter => $letter,
- borrowernumber => $borrowernumber,
- firstname => $data->{'firstname'},
- lastname => $data->{'surname'},
- address1 => $data->{'address'},
- address2 => $data->{'address2'},
- city => $data->{'city'},
- postcode => $data->{'zipcode'},
- country => $data->{'country'},
- email => $notice_email,
- itemcount => $itemcount,
- titles => $titles,
- outputformat => defined $csvfilename ? 'csv' : defined $htmlfilename ? 'html' : '',
+ unless ($letter) {
+ $verbose and warn qq|Message '$overdue_rules->{"letter$i"}' content not found|;
+ # this transport doesn't have a configured notice, so try another
+ next;
+ }
+
+ if ( $exceededPrintNoticesMaxLines ) {
+ $letter->{'content'} .= "List too long for form; please check your account online for a complete list of your overdue items.";
+ }
+
+ my @misses = grep { /./ } map { /^([^>]*)[>]+/; ( $1 || '' ); } split /\</, $letter->{'content'};
+ if (@misses) {
+ $verbose and warn "The following terms were not matched and replaced: \n\t" . join "\n\t", @misses;
+ }
+
+ if ($nomail) {
+ push @output_chunks,
+ prepare_letter_for_printing(
+ { letter => $letter,
+ borrowernumber => $borrowernumber,
+ firstname => $data->{'firstname'},
+ lastname => $data->{'surname'},
+ address1 => $data->{'address'},
+ address2 => $data->{'address2'},
+ city => $data->{'city'},
+ phone => $data->{'phone'},
+ cardnumber => $data->{'cardnumber'},
+ branchname => $library->branchname,
+ letternumber => $i,
+ postcode => $data->{'zipcode'},
+ country => $data->{'country'},
+ email => $notice_email,
+ itemcount => $itemcount,
+ titles => $titles,
+ outputformat => defined $csvfilename ? 'csv' : defined $htmlfilename ? 'html' : defined $text_filename ? 'text' : '',
+ }
+ );
+ } else {
+ if ( ($mtt eq 'email' and not scalar @emails_to_use) or ($mtt eq 'sms' and not $data->{smsalertnumber}) ) {
+ push @output_chunks,
+ prepare_letter_for_printing(
+ { letter => $letter,
+ borrowernumber => $borrowernumber,
+ firstname => $data->{'firstname'},
+ lastname => $data->{'surname'},
+ address1 => $data->{'address'},
+ address2 => $data->{'address2'},
+ city => $data->{'city'},
+ postcode => $data->{'zipcode'},
+ country => $data->{'country'},
+ email => $notice_email,
+ itemcount => $itemcount,
+ titles => $titles,
+ outputformat => defined $csvfilename ? 'csv' : defined $htmlfilename ? 'html' : defined $text_filename ? 'text' : '',
+ }
+ );
+ }
+ unless ( $mtt eq 'print' and $print_sent == 1 ) {
+ # Just sent a print if not already done.
+ C4::Letters::EnqueueLetter(
+ { letter => $letter,
+ borrowernumber => $borrowernumber,
+ message_transport_type => $mtt,
+ from_address => $admin_email_address,
+ to_address => join(',', @emails_to_use),
+ }
+ );
+ # A print notice should be sent only once per overdue level.
+ # Without this check, a print could be sent twice or more if the library checks sms and email and print and the patron has no email or sms number.
+ $print_sent = 1 if $mtt eq 'print';