| 
      
            Lines 25-30
          use Encode qw( encode );
      
      
        Link Here
      
     | 
  
        
          | 25 | 
          use Try::Tiny;  | 
          25 | 
          use Try::Tiny;  | 
        
        
          | 26 | 
          use DateTime;  | 
          26 | 
          use DateTime;  | 
        
        
          | 27 | 
           | 
          27 | 
           | 
        
            
               | 
               | 
              28 | 
              use C4::Letters;  | 
            
            
              | 29 | 
              use C4::Members;  | 
            
        
          | 28 | 
          use Koha::Database;  | 
          30 | 
          use Koha::Database;  | 
        
        
          | 29 | 
          use Koha::DateUtils qw/ dt_from_string /;  | 
          31 | 
          use Koha::DateUtils qw/ dt_from_string /;  | 
        
        
          | 30 | 
          use Koha::Email;  | 
          32 | 
          use Koha::Email;  | 
        
  
    | 
      
            Lines 248-253
          sub status_alias {
      
      
        Link Here
      
     | 
  
        
          | 248 | 
           | 
          250 | 
           | 
        
        
          | 249 | 
          Overloaded getter/setter for request status,  | 
          251 | 
          Overloaded getter/setter for request status,  | 
        
        
          | 250 | 
          also nullifies status_alias and records the fact that the status has changed  | 
          252 | 
          also nullifies status_alias and records the fact that the status has changed  | 
        
            
               | 
               | 
              253 | 
              and sends a notice if appropriate  | 
            
        
          | 251 | 
           | 
          254 | 
           | 
        
        
          | 252 | 
          =cut  | 
          255 | 
          =cut  | 
        
        
          | 253 | 
           | 
          256 | 
           | 
        
  
    | 
      
            Lines 281-286
          sub status {
      
      
        Link Here
      
     | 
  
        
          | 281 | 
                      });  | 
          284 | 
                      });  | 
        
        
          | 282 | 
                  }  | 
          285 | 
                  }  | 
        
        
          | 283 | 
                  delete $self->{previous_status}; | 
          286 | 
                  delete $self->{previous_status}; | 
        
            
               | 
               | 
              287 | 
                      # If status has changed to cancellation requested, send a notice  | 
            
            
              | 288 | 
                      if ($new_status eq 'CANCREQ') { | 
            
            
              | 289 | 
                          $self->send_staff_notice('ILL_REQUEST_CANCEL'); | 
            
            
              | 290 | 
                      }  | 
            
        
          | 284 | 
                  return $ret;  | 
          291 | 
                  return $ret;  | 
        
        
          | 285 | 
              } else { | 
          292 | 
              } else { | 
        
        
          | 286 | 
                  return $current_status;  | 
          293 | 
                  return $current_status;  | 
        
  
    | 
      
            Lines 1287-1324
          sub generic_confirm {
      
      
        Link Here
      
     | 
  
        
          | 1287 | 
              my $library = Koha::Libraries->find($params->{current_branchcode}) | 
          1294 | 
              my $library = Koha::Libraries->find($params->{current_branchcode}) | 
        
        
          | 1288 | 
                  || die "Invalid current branchcode. Are you logged in as the database user?";  | 
          1295 | 
                  || die "Invalid current branchcode. Are you logged in as the database user?";  | 
        
        
          | 1289 | 
              if ( !$params->{stage}|| $params->{stage} eq 'init' ) { | 
          1296 | 
              if ( !$params->{stage}|| $params->{stage} eq 'init' ) { | 
        
          
            
              | 1290 | 
                      my $draft->{subject} = "ILL Request"; | 
              1297 | 
                      # Get the message body from the notice definition  | 
            
            
              | 1291 | 
                      $draft->{body} = <<EOF; | 
              1298 | 
                      my $letter = $self->get_notice({ | 
            
            
              | 1292 | 
              Dear Sir/Madam,  | 
              1299 | 
                          notice_code => 'ILL_PARTNER_REQ',  | 
            
            
              | 1293 | 
               | 
              1300 | 
                          transport   => 'email'  | 
            
            
              | 1294 | 
                  We would like to request an interlibrary loan for a title matching the  | 
              1301 | 
                      });  | 
            
            
              | 1295 | 
              following description:  | 
               | 
               | 
            
            
              | 1296 | 
               | 
            
            
              | 1297 | 
              EOF  | 
            
            
              | 1298 | 
               | 
            
            
              | 1299 | 
                      my $details = $self->metadata;  | 
            
            
              | 1300 | 
                      while (my ($title, $value) = each %{$details}) { | 
            
            
              | 1301 | 
                          $draft->{body} .= "  - " . $title . ": " . $value . "\n" | 
            
            
              | 1302 | 
                              if $value;  | 
            
            
              | 1303 | 
                      }  | 
            
            
              | 1304 | 
                      $draft->{body} .= <<EOF; | 
            
            
              | 1305 | 
               | 
            
            
              | 1306 | 
              Please let us know if you are able to supply this to us.  | 
            
            
              | 1307 | 
               | 
            
            
              | 1308 | 
              Kind Regards  | 
            
            
              | 1309 | 
               | 
            
            
              | 1310 | 
              EOF  | 
            
            
              | 1311 | 
               | 
            
            
              | 1312 | 
                      my @address = map { $library->$_ } | 
            
            
              | 1313 | 
                          qw/ branchname branchaddress1 branchaddress2 branchaddress3  | 
            
            
              | 1314 | 
                              branchzip branchcity branchstate branchcountry branchphone  | 
            
            
              | 1315 | 
                              branchillemail branchemail /;  | 
            
            
              | 1316 | 
                      my $address = "";  | 
            
            
              | 1317 | 
                      foreach my $line ( @address ) { | 
            
            
              | 1318 | 
                          $address .= $line . "\n" if $line;  | 
            
            
              | 1319 | 
                      }  | 
            
            
              | 1320 | 
               | 
            
            
              | 1321 | 
                      $draft->{body} .= $address; | 
            
        
          | 1322 | 
           | 
          1302 | 
           | 
        
        
          | 1323 | 
                  my $partners = Koha::Patrons->search({ | 
          1303 | 
                  my $partners = Koha::Patrons->search({ | 
        
        
          | 1324 | 
                      categorycode => $self->_config->partner_code  | 
          1304 | 
                      categorycode => $self->_config->partner_code  | 
        
  
    | 
      
            Lines 1330-1336
          EOF
      
      
        Link Here
      
     | 
  
        
          | 1330 | 
                      method  => 'generic_confirm',  | 
          1310 | 
                      method  => 'generic_confirm',  | 
        
        
          | 1331 | 
                      stage   => 'draft',  | 
          1311 | 
                      stage   => 'draft',  | 
        
        
          | 1332 | 
                      value   => { | 
          1312 | 
                      value   => { | 
        
          
            
              | 1333 | 
                              draft    => $draft,  | 
              1313 | 
                              draft => { | 
            
            
               | 
               | 
              1314 | 
                                  subject => $letter->{title}, | 
            
            
              | 1315 | 
                                  body    => $letter->{content} | 
            
            
              | 1316 | 
                              },  | 
            
        
          | 1334 | 
                          partners => $partners,  | 
          1317 | 
                          partners => $partners,  | 
        
        
          | 1335 | 
                      }  | 
          1318 | 
                      }  | 
        
        
          | 1336 | 
                  };  | 
          1319 | 
                  };  | 
        
  
    | 
      
            Lines 1346-1402
          EOF
      
      
        Link Here
      
     | 
  
        
          | 1346 | 
                      "No target email addresses found. Either select at least one partner or check your ILL partner library records.")  | 
          1329 | 
                      "No target email addresses found. Either select at least one partner or check your ILL partner library records.")  | 
        
        
          | 1347 | 
                    if ( !$to );  | 
          1330 | 
                    if ( !$to );  | 
        
        
          | 1348 | 
                  # Create the from, replyto and sender headers  | 
          1331 | 
                  # Create the from, replyto and sender headers  | 
        
          
            
              | 1349 | 
                      my $from = $library->branchemail;  | 
              1332 | 
                      my $from = $branch->branchillemail || $branch->branchemail;  | 
            
            
              | 1350 | 
                      my $reply_to = $library->branchreplyto || $from;  | 
              1333 | 
                      my $replyto = $branch->branchreplyto || $from;  | 
            
        
          | 1351 | 
                  Koha::Exceptions::Ill::NoLibraryEmail->throw(  | 
          1334 | 
                  Koha::Exceptions::Ill::NoLibraryEmail->throw(  | 
        
        
          | 1352 | 
                      "Your library has no usable email address. Please set it.")  | 
          1335 | 
                      "Your library has no usable email address. Please set it.")  | 
        
        
          | 1353 | 
                    if ( !$from );  | 
          1336 | 
                    if ( !$from );  | 
        
        
          | 1354 | 
           | 
          1337 | 
           | 
        
          
            
              | 1355 | 
                      # Create the email  | 
              1338 | 
                      # So we get a notice hashref, then substitute the possibly  | 
            
            
              | 1356 | 
                      my $email = Koha::Email->create(  | 
              1339 | 
                      # modified title and body from the draft stage  | 
            
            
              | 1357 | 
                          { | 
              1340 | 
                      my $letter = $self->get_notice({ | 
            
            
              | 1358 | 
                              to        => $to,  | 
              1341 | 
                          notice_code => 'ILL_PARTNER_REQ',  | 
            
            
              | 1359 | 
                              from      => $from,  | 
              1342 | 
                          transport   => 'email'  | 
            
            
              | 1360 | 
                              reply_to  => $reply_to,  | 
              1343 | 
                      });  | 
            
            
              | 1361 | 
                              subject   => $params->{subject}, | 
              1344 | 
                      $letter->{title} = $params->{subject}; | 
            
            
              | 1362 | 
                              text_body => $params->{body}, | 
              1345 | 
                      $letter->{content} = $params->{body}; | 
            
            
               | 
               | 
              1346 | 
               | 
            
            
              | 1347 | 
                      # Send the email  | 
            
            
              | 1348 | 
                      my $params = { | 
            
            
              | 1349 | 
                          letter                 => $letter,  | 
            
            
              | 1350 | 
                          borrowernumber         => $self->borrowernumber,  | 
            
            
              | 1351 | 
                          message_transport_type => 'email',  | 
            
            
              | 1352 | 
                          to_address             => $to,  | 
            
            
              | 1353 | 
                          from_address           => $from  | 
            
            
              | 1354 | 
                      };  | 
            
            
              | 1355 | 
               | 
            
            
              | 1356 | 
                      if ($letter) { | 
            
            
              | 1357 | 
                          my $result = C4::Letters::EnqueueLetter($params);  | 
            
            
              | 1358 | 
                          if ( $result ) { | 
            
            
              | 1359 | 
                              $self->status("GENREQ")->store; | 
            
            
              | 1360 | 
                              $self->_backend_capability(  | 
            
            
              | 1361 | 
                                  'set_requested_partners',  | 
            
            
              | 1362 | 
                                  { | 
            
            
              | 1363 | 
                                      request => $self,  | 
            
            
              | 1364 | 
                                      to => $to  | 
            
            
              | 1365 | 
                                  }  | 
            
            
              | 1366 | 
                              );  | 
            
            
              | 1367 | 
                              return { | 
            
            
              | 1368 | 
                                  error   => 0,  | 
            
            
              | 1369 | 
                                  status  => '',  | 
            
            
              | 1370 | 
                                  message => '',  | 
            
            
              | 1371 | 
                                  method  => 'generic_confirm',  | 
            
            
              | 1372 | 
                                  stage   => 'commit',  | 
            
            
              | 1373 | 
                                  next    => 'illview',  | 
            
            
              | 1374 | 
                              };  | 
            
        
          | 1363 | 
                      }  | 
          1375 | 
                      }  | 
        
          
            
              | 1364 | 
                      );  | 
              1376 | 
                      }  | 
            
            
               | 
               | 
              1377 | 
                      return { | 
            
            
              | 1378 | 
                          error   => 1,  | 
            
            
              | 1379 | 
                          status  => 'email_failed',  | 
            
            
              | 1380 | 
                          message => 'Email queueing failed',  | 
            
            
              | 1381 | 
                          method  => 'generic_confirm',  | 
            
            
              | 1382 | 
                          stage   => 'draft',  | 
            
            
              | 1383 | 
                      };  | 
            
            
              | 1384 | 
                  } else { | 
            
            
              | 1385 | 
                      die "Unknown stage, should not have happened."  | 
            
            
              | 1386 | 
                  }  | 
            
            
              | 1387 | 
              }  | 
            
        
          | 1365 | 
           | 
          1388 | 
           | 
        
          
            
              | 1366 | 
                      # Send it  | 
              1389 | 
              =head3 get_staff_to_address  | 
            
            
              | 1367 | 
                      try { | 
               | 
               | 
            
        
          | 1368 | 
           | 
          1390 | 
           | 
        
          
            
              | 1369 | 
                          $email->send_or_die({ transport => $library->smtp_server->transport }); | 
              1391 | 
                  my $email = $request->get_staff_to_address();  | 
            
        
          | 1370 | 
           | 
          1392 | 
           | 
        
          
            
              | 1371 | 
                          $self->status("GENREQ")->store; | 
              1393 | 
              Get the email address to which staff notices should be sent  | 
            
            
              | 1372 | 
                          $self->_backend_capability(  | 
              1394 | 
               | 
            
            
              | 1373 | 
                              'set_requested_partners',  | 
              1395 | 
              =cut  | 
            
            
              | 1374 | 
                              { | 
              1396 | 
               | 
            
            
              | 1375 | 
                                  request => $self,  | 
              1397 | 
              sub get_staff_to_address { | 
            
            
              | 1376 | 
                                  to => $to  | 
              1398 | 
                  my ( $self ) = @_;  | 
            
            
              | 1377 | 
                              }  | 
              1399 | 
               | 
            
            
              | 1378 | 
                          );  | 
              1400 | 
                  # The various places we can get an ILL staff email address from  | 
            
            
              | 1379 | 
                          return { | 
              1401 | 
                  # (In order of preference)  | 
            
            
              | 1380 | 
                              error   => 0,  | 
              1402 | 
                  #  | 
            
            
              | 1381 | 
                              status  => '',  | 
              1403 | 
                  # Dedicated branch address  | 
            
            
              | 1382 | 
                              message => '',  | 
              1404 | 
                  my $library = Koha::Libraries->find( $self->branchcode );  | 
            
            
              | 1383 | 
                              method  => 'generic_confirm',  | 
              1405 | 
                  my $branch_ill_to = $library->branchillemail;  | 
            
            
              | 1384 | 
                              stage   => 'commit',  | 
              1406 | 
                  # General purpose ILL address from syspref  | 
            
            
              | 1385 | 
                              next    => 'illview',  | 
              1407 | 
                  my $syspref = C4::Context->preference("ILLDefaultStaffEmail"); | 
            
            
              | 1386 | 
                          };  | 
              1408 | 
                  # Branch general email address  | 
            
            
               | 
               | 
              1409 | 
                  my $branch_to = $library->branchemail;  | 
            
            
              | 1410 | 
                  # Last resort  | 
            
            
              | 1411 | 
                  my $koha_admin = C4::Context->preference('KohaAdminEmailAddress'); | 
            
            
              | 1412 | 
               | 
            
            
              | 1413 | 
                  my $to;  | 
            
            
              | 1414 | 
                  if ($branch_ill_to) { | 
            
            
              | 1415 | 
                      $to = $branch_ill_to;  | 
            
            
              | 1416 | 
                  } elsif ($syspref) { | 
            
            
              | 1417 | 
                      $to = $syspref;  | 
            
            
              | 1418 | 
                  } elsif ($branch_to) { | 
            
            
              | 1419 | 
                      $to = $branch_to;  | 
            
            
              | 1420 | 
                  } elsif ($koha_admin) { | 
            
            
              | 1421 | 
                      $to = $koha_admin;  | 
            
            
              | 1422 | 
                  }  | 
            
            
              | 1423 | 
               | 
            
            
              | 1424 | 
                  # $to will not be defined if we didn't find a usable address  | 
            
            
              | 1425 | 
                  return $to;  | 
            
            
              | 1426 | 
              }  | 
            
            
              | 1427 | 
               | 
            
            
              | 1428 | 
              =head3 send_patron_notice  | 
            
            
              | 1429 | 
               | 
            
            
              | 1430 | 
                  my $result = $request->send_patron_notice($notice_code);  | 
            
            
              | 1431 | 
               | 
            
            
              | 1432 | 
              Send a specified notice regarding this request to a patron  | 
            
            
              | 1433 | 
               | 
            
            
              | 1434 | 
              =cut  | 
            
            
              | 1435 | 
               | 
            
            
              | 1436 | 
              sub send_patron_notice { | 
            
            
              | 1437 | 
                  my ( $self, $notice_code ) = @_;  | 
            
            
              | 1438 | 
               | 
            
            
              | 1439 | 
                  # We need a notice code  | 
            
            
              | 1440 | 
                  if (!$notice_code) { | 
            
            
              | 1441 | 
                      return { | 
            
            
              | 1442 | 
                          error => 'notice_no_type'  | 
            
            
              | 1443 | 
                      };  | 
            
            
              | 1444 | 
                  }  | 
            
            
              | 1445 | 
               | 
            
            
              | 1446 | 
                  # Map from the notice code to the messaging preference  | 
            
            
              | 1447 | 
                  my %message_name = (  | 
            
            
              | 1448 | 
                      ILL_PICKUP_READY   => 'Ill_ready',  | 
            
            
              | 1449 | 
                      ILL_REQUEST_UNAVAIL => 'Ill_unavailable'  | 
            
            
              | 1450 | 
                  );  | 
            
            
              | 1451 | 
               | 
            
            
              | 1452 | 
                  # Get the patron's messaging preferences  | 
            
            
              | 1453 | 
                  my $borrower_preferences = C4::Members::Messaging::GetMessagingPreferences({ | 
            
            
              | 1454 | 
                      borrowernumber => $self->borrowernumber,  | 
            
            
              | 1455 | 
                      message_name   => $message_name{$notice_code} | 
            
            
              | 1456 | 
                  });  | 
            
            
              | 1457 | 
                  my @transports = keys %{ $borrower_preferences->{transports} }; | 
            
            
              | 1458 | 
               | 
            
            
              | 1459 | 
                  # Send the notice to the patron via the chosen transport methods  | 
            
            
              | 1460 | 
                  # and record the results  | 
            
            
              | 1461 | 
                  my @success = ();  | 
            
            
              | 1462 | 
                  my @fail = ();  | 
            
            
              | 1463 | 
                  for my $transport (@transports) { | 
            
            
              | 1464 | 
                      my $letter = $self->get_notice({ | 
            
            
              | 1465 | 
                          notice_code => $notice_code,  | 
            
            
              | 1466 | 
                          transport   => $transport  | 
            
            
              | 1467 | 
                      });  | 
            
            
              | 1468 | 
                      if ($letter) { | 
            
            
              | 1469 | 
                          my $result = C4::Letters::EnqueueLetter({ | 
            
            
              | 1470 | 
                              letter                 => $letter,  | 
            
            
              | 1471 | 
                              borrowernumber         => $self->borrowernumber,  | 
            
            
              | 1472 | 
                              message_transport_type => $transport,  | 
            
            
              | 1473 | 
                          });  | 
            
            
              | 1474 | 
                          if ($result) { | 
            
            
              | 1475 | 
                              push @success, $transport;  | 
            
            
              | 1476 | 
                          } else { | 
            
            
              | 1477 | 
                              push @fail, $transport;  | 
            
            
              | 1478 | 
                          }  | 
            
            
              | 1479 | 
                      } else { | 
            
            
              | 1480 | 
                          push @fail, $transport;  | 
            
        
          | 1387 | 
                  }  | 
          1481 | 
                  }  | 
        
          
            
              | 1388 | 
                      catch { | 
              1482 | 
                  }  | 
            
            
              | 1389 | 
                          return { | 
              1483 | 
                  if (scalar @success > 0) { | 
            
            
              | 1390 | 
                              error   => 1,  | 
              1484 | 
                      my $logger = Koha::Illrequest::Logger->new;  | 
            
            
              | 1391 | 
                              status  => 'email_failed',  | 
              1485 | 
                      $logger->log_patron_notice({ | 
            
            
              | 1392 | 
                              message => "$_",  | 
              1486 | 
                          request => $self,  | 
            
            
              | 1393 | 
                              method  => 'generic_confirm',  | 
              1487 | 
                          notice_code => $notice_code  | 
            
            
              | 1394 | 
                              stage   => 'draft',  | 
              1488 | 
                      });  | 
            
            
              | 1395 | 
                          };  | 
              1489 | 
                  }  | 
            
            
               | 
               | 
              1490 | 
                  return { | 
            
            
              | 1491 | 
                      result => { | 
            
            
              | 1492 | 
                          success => \@success,  | 
            
            
              | 1493 | 
                          fail    => \@fail  | 
            
            
              | 1494 | 
                      }  | 
            
            
              | 1495 | 
                  };  | 
            
            
              | 1496 | 
              }  | 
            
            
              | 1497 | 
               | 
            
            
              | 1498 | 
              =head3 send_staff_notice  | 
            
            
              | 1499 | 
               | 
            
            
              | 1500 | 
                  my $result = $request->send_staff_notice($notice_code);  | 
            
            
              | 1501 | 
               | 
            
            
              | 1502 | 
              Send a specified notice regarding this request to staff  | 
            
            
              | 1503 | 
               | 
            
            
              | 1504 | 
              =cut  | 
            
            
              | 1505 | 
               | 
            
            
              | 1506 | 
              sub send_staff_notice { | 
            
            
              | 1507 | 
                  my ( $self, $notice_code ) = @_;  | 
            
            
              | 1508 | 
               | 
            
            
              | 1509 | 
                  # We need a notice code  | 
            
            
              | 1510 | 
                  if (!$notice_code) { | 
            
            
              | 1511 | 
                      return { | 
            
            
              | 1512 | 
                          error => 'notice_no_type'  | 
            
            
              | 1513 | 
                      };  | 
            
            
              | 1514 | 
                  }  | 
            
            
              | 1515 | 
               | 
            
            
              | 1516 | 
                  # Get the staff notices that have been assigned for sending in  | 
            
            
              | 1517 | 
                  # the syspref  | 
            
            
              | 1518 | 
                  my $staff_to_send = C4::Context->preference('ILLSendStaffNotices'); | 
            
            
              | 1519 | 
               | 
            
            
              | 1520 | 
                  # If it hasn't been enabled in the syspref, we don't want to send it  | 
            
            
              | 1521 | 
                  if ($staff_to_send !~ /\b$notice_code\b/) { | 
            
            
              | 1522 | 
                      return { | 
            
            
              | 1523 | 
                          error => 'notice_not_enabled'  | 
            
        
          | 1396 | 
                  };  | 
          1524 | 
                  };  | 
        
            
               | 
               | 
              1525 | 
                  }  | 
            
            
              | 1526 | 
               | 
            
            
              | 1527 | 
                  my $letter = $self->get_notice({ | 
            
            
              | 1528 | 
                      notice_code => $notice_code,  | 
            
            
              | 1529 | 
                      transport   => 'email'  | 
            
            
              | 1530 | 
                  });  | 
            
            
              | 1531 | 
               | 
            
            
              | 1532 | 
                  # Try and get an address to which to send staff notices  | 
            
            
              | 1533 | 
                  my $to_address = scalar $self->get_staff_to_address;  | 
            
            
              | 1534 | 
               | 
            
            
              | 1535 | 
                  my $params = { | 
            
            
              | 1536 | 
                      letter                 => $letter,  | 
            
            
              | 1537 | 
                      borrowernumber         => $self->borrowernumber,  | 
            
            
              | 1538 | 
                      message_transport_type => 'email',  | 
            
            
              | 1539 | 
                  };  | 
            
            
              | 1540 | 
               | 
            
            
              | 1541 | 
                  if ($to_address) { | 
            
            
              | 1542 | 
                      $params->{to_address} = $to_address; | 
            
            
              | 1543 | 
                      $params->{from_address} = $to_address; | 
            
        
          | 1397 | 
              } else { | 
          1544 | 
              } else { | 
        
          
            
              | 1398 | 
                      die "Unknown stage, should not have happened."  | 
              1545 | 
                      return { | 
            
            
               | 
               | 
              1546 | 
                          error => 'notice_no_create'  | 
            
            
              | 1547 | 
                      };  | 
            
            
              | 1548 | 
                  }  | 
            
            
              | 1549 | 
               | 
            
            
              | 1550 | 
                  if ($letter) { | 
            
            
              | 1551 | 
                      C4::Letters::EnqueueLetter($params)  | 
            
            
              | 1552 | 
                          or warn "can't enqueue letter $letter";  | 
            
            
              | 1553 | 
                      return { | 
            
            
              | 1554 | 
                          success => 'notice_queued'  | 
            
            
              | 1555 | 
                      };  | 
            
            
              | 1556 | 
                  } else { | 
            
            
              | 1557 | 
                      return { | 
            
            
              | 1558 | 
                          error => 'notice_no_create'  | 
            
            
              | 1559 | 
                      };  | 
            
            
              | 1560 | 
                  }  | 
            
            
              | 1561 | 
              }  | 
            
            
              | 1562 | 
               | 
            
            
              | 1563 | 
              =head3 get_notice  | 
            
            
              | 1564 | 
               | 
            
            
              | 1565 | 
                  my $notice = $request->get_notice($params);  | 
            
            
              | 1566 | 
               | 
            
            
              | 1567 | 
              Return a compiled notice hashref for the passed notice code  | 
            
            
              | 1568 | 
              and transport type  | 
            
            
              | 1569 | 
               | 
            
            
              | 1570 | 
              =cut  | 
            
            
              | 1571 | 
               | 
            
            
              | 1572 | 
              sub get_notice { | 
            
            
              | 1573 | 
                  my ( $self, $params ) = @_;  | 
            
            
              | 1574 | 
               | 
            
            
              | 1575 | 
                  my $title = $self->illrequestattributes->find(  | 
            
            
              | 1576 | 
                      { type => 'title' } | 
            
            
              | 1577 | 
                  );  | 
            
            
              | 1578 | 
                  my $author = $self->illrequestattributes->find(  | 
            
            
              | 1579 | 
                      { type => 'author' } | 
            
            
              | 1580 | 
                  );  | 
            
            
              | 1581 | 
                  my $metahash = $self->metadata;  | 
            
            
              | 1582 | 
                  my @metaarray = ();  | 
            
            
              | 1583 | 
                  while (my($key, $value) = each %{$metahash}) { | 
            
            
              | 1584 | 
                      push @metaarray, "- $key: $value" if $value;  | 
            
        
          | 1399 | 
              }  | 
          1585 | 
              }  | 
        
            
               | 
               | 
              1586 | 
                  my $metastring = join("\n", @metaarray); | 
            
            
              | 1587 | 
                  my $letter = C4::Letters::GetPreparedLetter(  | 
            
            
              | 1588 | 
                      module                 => 'ill',  | 
            
            
              | 1589 | 
                      letter_code            => $params->{notice_code}, | 
            
            
              | 1590 | 
                      message_transport_type => $params->{transport}, | 
            
            
              | 1591 | 
                      lang                   => $self->patron->lang,  | 
            
            
              | 1592 | 
                      tables                 => { | 
            
            
              | 1593 | 
                          illrequests => $self->illrequest_id,  | 
            
            
              | 1594 | 
                          borrowers   => $self->borrowernumber,  | 
            
            
              | 1595 | 
                          biblio      => $self->biblio_id,  | 
            
            
              | 1596 | 
                          branches    => $self->branchcode,  | 
            
            
              | 1597 | 
                      },  | 
            
            
              | 1598 | 
                      substitute  => { | 
            
            
              | 1599 | 
                          ill_bib_title      => $title ? $title->value : 'N/A',  | 
            
            
              | 1600 | 
                          ill_bib_author     => $author ? $author->value : 'N/A',  | 
            
            
              | 1601 | 
                          ill_full_metadata  => $metastring  | 
            
            
              | 1602 | 
                      }  | 
            
            
              | 1603 | 
                  );  | 
            
            
              | 1604 | 
               | 
            
            
              | 1605 | 
                  return $letter;  | 
            
        
          | 1400 | 
          }  | 
          1606 | 
          }  | 
        
        
          | 1401 | 
           | 
          1607 | 
           | 
        
        
          | 1402 | 
          =head3 id_prefix  | 
          1608 | 
          =head3 id_prefix  |