diff --git a/module/VuFind/src/VuFind/ILS/Driver/Voyager.php b/module/VuFind/src/VuFind/ILS/Driver/Voyager.php index 2176bd7861b2cf9522526d7935998ab11e3e1819..f93be7a2581385abba8ee983557aa18abc8c605a 100644 --- a/module/VuFind/src/VuFind/ILS/Driver/Voyager.php +++ b/module/VuFind/src/VuFind/ILS/Driver/Voyager.php @@ -604,6 +604,13 @@ class Voyager extends AbstractBase protected function getHoldingItemsSQL($id) { // Expressions + $returnDate = <<<EOT +CASE WHEN ITEM_STATUS_TYPE.ITEM_STATUS_DESC = 'Discharged' THEN ( + SELECT TO_CHAR(MAX(CIRC_TRANS_ARCHIVE.DISCHARGE_DATE), 'MM-DD-YY HH24:MI') + FROM $this->dbName.CIRC_TRANS_ARCHIVE + WHERE CIRC_TRANS_ARCHIVE.ITEM_ID = ITEM.ITEM_ID +) ELSE NULL END RETURNDATE +EOT; $sqlExpressions = [ "BIB_ITEM.BIB_ID", "MFHD_ITEM.MFHD_ID", "ITEM_BARCODE.ITEM_BARCODE", "ITEM.ITEM_ID", @@ -617,9 +624,7 @@ class Voyager extends AbstractBase "ITEM.PERM_LOCATION", "MFHD_MASTER.DISPLAY_CALL_NO as callnumber", "to_char(CIRC_TRANSACTIONS.CURRENT_DUE_DATE, 'MM-DD-YY') as duedate", - "(SELECT TO_CHAR(MAX(CIRC_TRANS_ARCHIVE.DISCHARGE_DATE), " . - "'MM-DD-YY HH24:MI') FROM $this->dbName.CIRC_TRANS_ARCHIVE " . - "WHERE CIRC_TRANS_ARCHIVE.ITEM_ID = ITEM.ITEM_ID) RETURNDATE", + $returnDate, "ITEM.ITEM_SEQUENCE_NUMBER", $this->getItemSortSequenceSQL('ITEM.PERM_LOCATION') ]; @@ -764,6 +769,11 @@ class Voyager extends AbstractBase if (!in_array($row['STATUS'], $record['STATUS_ARRAY'])) { $record['STATUS_ARRAY'][] = $row['STATUS']; } + + // If we have a return date for this status, take it + if (null !== $row['RETURNDATE']) { + $record['RETURNDATE'] = $row['RETURNDATE']; + } } else { // This is the first time we've encountered this row number -- // initialize the row and start an array of statuses. @@ -1039,18 +1049,11 @@ class Voyager extends AbstractBase } $returnDate = false; if (!empty($row['RETURNDATE'])) { - $returnDate = $this->dateFormat->convertToDisplayDate( - "m-d-y H:i", $row['RETURNDATE'] + $returnDate = $this->dateFormat->convertToDisplayDateAndTime( + 'm-d-y H:i', $row['RETURNDATE'] ); - $returnTime = $this->dateFormat->convertToDisplayTime( - "m-d-y H:i", $row['RETURNDATE'] - ); - $returnDate .= " " . $returnTime; } - $returnDate = (in_array("Discharged", $row['STATUS_ARRAY'])) - ? $returnDate : false; - $requests_placed = isset($row['HOLDS_PLACED']) ? $row['HOLDS_PLACED'] : 0; if (isset($row['RECALLS_PLACED'])) {