Bug 33037: Koha does not display difference between enumchron and serialseq in record detail view (OPAC and intranet)

Patch 32555 tries to resolve the issue caused by bug 31313.  But the way it is fixed seems to be
at least problematic.  With patch 32555 we will never see the difference between
`serial`.`serialseq` and `items`.`enumchron` which is still intended in opac-detail.tt
(line ~ 1332) and [intranet] catalogue/detail.tt (line ~ 446).  This is because
ITEM_RESULT.serialitem (in opac-detail.tt) and item.itemserial.serial (in catalogue/detail.tt)
refer to non-existing things.  (and therefor the problem described in 32555 no longer emerge).
The original problem is caused by mixing up serialitem with serial in [opac-]detail.pl
and passing serialitem instead of serial to both templates.

To test:
1. Create a serial subscription
   1.1. Go to Serials
   1.2. Click on New subscription
   1.3. Fill out the first form
        - Vendor: leave empty
        - Record: enter a record number
        - Create an item record when receiving this serial
        - When there is an irregular issue: Keep issue number
        - Manual history: leave unchecked
        - Call number: leave empty
        - Library: Centerville
        - Public/nonpublic note: leave empty
        - Patron notification: None
        - Location: None
        - Collection: None
        - Item type: Continuing resources
        - Grace period: leave empty
        - Number of issues to display: leave both empty
   1.4. Click Next (and confirm you are not using a vendor)
   1.5. Fill out the second form
        - First issue publication date: 2023-01-01
        - Frequency: 1/month
        - Subscription length: issues 12
        - Subscription start date: 2023-01-01
        - Subscription end date: 2024-01-01
        - Numbering pattern: Number
        - Locale: leave empty
        - Begins with: 42
        - Inner counter: leave empty
   1.6. Click Test prediction pattern
   1.7. Click Save subscription
2. Click OPAC view: Open in new window.
3. Back in the staff interface tab, receive an issue
   3.1. Click Receive
   3.2. In Status, choose Arrived for No. 42
   3.3. IN ITEM DETAILS BELOW CHANGE h - Serial enumeration / chronology
        from No. 42 to some different string
   3.3. Click Save
4. Check the items in OPAC and Intranet – you will see only the value from the
   item $h subfield (enumchron) instead of desired "enumchron -- serialseq"
   in case of a difference between `serial`.`serialseq` and `items`.`enumchron`.
5. Apply this patch
6. Repeat 4
7. Check the items in OPAC and Intranet – you should now see the desired
   "enumchron -- serialseq" string.
8. Sign off

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>

Signed-off-by: Nick <nick@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Janusz Kaczmarek 2023-02-22 12:59:11 +01:00 committed by Tomas Cohen Arazi
parent af2792379c
commit c8012d4104
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F
4 changed files with 7 additions and 5 deletions

View file

@ -386,7 +386,8 @@ foreach my $item (@items) {
# FIXME The following must be Koha::Item->serial
my $serial_item = Koha::Serial::Items->find($item->itemnumber);
if ( $serial_item ) {
$item_info->{serial} = $serial_item;
my $serial = Koha::Serials->find($serial_item->serialid);
$item_info->{serial} = $serial if $serial;
$itemfields{publisheddate} = 1;
}

View file

@ -430,7 +430,7 @@ Note that permanent location is a code, and location may be an authval.
[% IF Koha.Preference('EnableItemGroups') %]<td class="item_group">[% item.object.item_group.description | html %]</td>[% END %]
<td class="itemcallnumber">[% IF ( item.itemcallnumber ) %] [% item.itemcallnumber | html %][% END %]</td>
[% IF ( volinfo ) %]
[% SET serial = item.itemserial.serial %]
[% SET serial = item.serial %]
[% IF itemdata_publisheddate #If there is at least one published date, use it for sorting %]
<td class="enumchron" data-order="[% serial.publisheddate | html %]">
[% ELSE %]
@ -439,7 +439,7 @@ Note that permanent location is a code, and location may be an authval.
[% IF ( itemdata_enumchron ) %]
[% IF item.enumchron && serial.serialseq %]
<span class="enum">[% item.enumchron | html %]</span>
[% IF ( item.serialseq && item.enumchron != serial.serialseq ) %]
[% IF ( serial.serialseq && item.enumchron != serial.serialseq ) %]
<span class="sep"> -- </span>
<span class="serialseq">[% serial.serialseq | html %]</span>
[% END %]

View file

@ -1325,7 +1325,7 @@
[% END %]
[% IF ( itemdata_enumchron ) %]
[% SET serial = ITEM_RESULT.serialitem %]
[% SET serial = ITEM_RESULT.serial %]
<td class="vol_info">
[% IF ITEM_RESULT.enumchron && serial.serialseq %]
<span class="enum">[% ITEM_RESULT.enumchron | html %]</span>

View file

@ -720,7 +720,8 @@ else {
# FIXME The following must be Koha::Item->serial
my $serial_item = Koha::Serial::Items->find($item->itemnumber);
if ( $serial_item ) {
$item_info->{serial} = $serial_item;
my $serial = Koha::Serials->find($serial_item->serialid);
$item_info->{serial} = $serial if $serial;
}
$item_info->{checkout} = $item->checkout;