Bug 20194: Display both biblioitems.itemtype and items.itype in circulation screens
authorAlex Arnaud <alex.arnaud@biblibre.com>
Thu, 25 Oct 2018 09:19:01 +0000 (11:19 +0200)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Sun, 3 Nov 2019 07:50:19 +0000 (07:50 +0000)
Test plan:
1. Verify that biblioitems.itemtype, items.itype are
   mapped to a MARC field. Otherwise create those mappings.
2. Create a biblio with an itemtype
3. Create an item with a different itemtype for this biblio
4. Check out this item to a patron (P1)
5. Verify that both itemtypes are displayed in the
checkouts table (moremember.pl, circulation.pl, returns.pl)
6. Create a patron whose guarantor is P1 and verify that both itemtypes
and the ccode are displayed in the 'relatives checkouts' table

Followed test plan, patch worked as described, also passes QA test tool
Signed-off-by: Alex Buckley <alexbuckley@catalyst.net.nz>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

admin/columns_settings.yml
circ/returns.pl
koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table-footer.inc
koha-tmpl/intranet-tmpl/prog/en/includes/checkouts-table.inc
koha-tmpl/intranet-tmpl/prog/en/includes/relatives-issues-table.inc
koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt
koha-tmpl/intranet-tmpl/prog/js/checkouts.js
svc/checkouts

index 4b86003..c1fdf39 100644 (file)
@@ -583,6 +583,8 @@ modules:
         -
           columnname: title
         -
+          columnname: record_type
+        -
           columnname: item_type
         -
           columnname: collection
@@ -796,6 +798,8 @@ modules:
         -
           columnname: title
         -
+          columnname: record_type
+        -
           columnname: item_type
         -
           columnname: collection
@@ -870,6 +874,8 @@ modules:
           columnname: dateaccessioned
           is_hidden: 1
         -
+          columnname: record_type
+        -
           columnname: itype
         -
           columnname: borrower
index ddce95a..5e7d8e2 100755 (executable)
@@ -589,6 +589,7 @@ foreach ( sort { $a <=> $b } keys %returneditems ) {
         my $item = Koha::Items->find({ barcode => $bar_code });
         next unless $item; # FIXME The item has been deleted in the meantime,
                            # we could handle that better displaying a message in the template
+
         my $biblio = $item->biblio;
         # FIXME pass $item to the template and we are done here...
         $ri{itembiblionumber}    = $biblio->biblionumber;
@@ -599,7 +600,8 @@ foreach ( sort { $a <=> $b } keys %returneditems ) {
         $ri{itemauthor}          = $biblio->author;
         $ri{itemcallnumber}      = $item->itemcallnumber;
         $ri{dateaccessioned}     = $item->dateaccessioned;
-        $ri{itemtype}            = $item->effective_itemtype;
+        $ri{recordtype}          = $biblio->itemtype;
+        $ri{itemtype}            = $item->itype;
         $ri{itemnote}            = $item->itemnotes;
         $ri{itemnotes_nonpublic} = $item->itemnotes_nonpublic;
         $ri{ccode}               = $item->ccode;
index 931d92f..9b62491 100644 (file)
@@ -1,6 +1,6 @@
 <tfoot>
        <tr>
-        <td colspan="13" style="text-align: right; font-weight:bold;">Totals:</td>
+        <td colspan="14" style="text-align: right; font-weight:bold;">Totals:</td>
         <td id="totaldue" style="text-align: right;"></td>
         <td id="totalfine" style="text-align: right;"></td>
         <td id="totalprice" style="text-align: right;"></td>
index f1bc60f..7b967be 100644 (file)
@@ -15,6 +15,7 @@
                         <th scope="col">Due date</th>
                         <th scope="col">Due date</th>
                         <th scope="col">Title</th>
+                        <th scope="col">Record-level item type</th>
                         <th scope="col">Item type</th>
                         <th scope="col">Collection</th>
                         <th scope="col">Location</th>
index 28addf4..97e9ba6 100644 (file)
@@ -7,6 +7,7 @@
                     <th scope="col">Due date (unformatted, hidden)</th>
                     <th scope="col">Due date</th>
                     <th scope="col">Title</th>
+                    <th scope="col">Record-level item type</th>
                     <th scope="col">Item type</th>
                     <th scope="col">Collection code</th>
                     <th scope="col">Location</th>
index bafaf0e..a65294b 100644 (file)
                                         <th class="ci-shelvinglocation">Shelving location</th>
                                         <th class="ci-callnumber">Call number</th>
                                         <th class="ci-dateaccessioned">Date acquired</th>
-                                        <th class="ci-type">Type</th>
+                                        <th class="ci-recordlevelitemtype">Record-level itemtype</th>
+                                        <th class="ci-itemtype">Item type</th>
                                         <th class="ci-patron">Patron</th>
                                         <th class="ci-note">Note</th>
                                     </tr>
                                         <td class="ci-dateaccessioned">
                                             [% riloo.dateaccessioned | $KohaDates %]
                                         </td>
-                                        <td class="ci-type">
+                                        <td class="ci-recordlevelitemtype">
+                                            [% ItemTypes.GetDescription( riloo.recordtype ) | html %]
+                                        </td>
+                                        <td class="ci-itemtype">
                                             [% ItemTypes.GetDescription( riloo.itemtype ) | html %] [% AuthorisedValues.GetByCode('CCODE', riloo.ccode) | html %]
                                         </td>
                                         <td class="ci-patron">
index 2bfd18e..d07f820 100644 (file)
@@ -348,6 +348,11 @@ $(document).ready(function() {
                 },
                 {
                     "mDataProp": function ( oObj ) {
+                        return oObj.recordtype_description.escapeHtml();
+                    }
+                },
+                {
+                    "mDataProp": function ( oObj ) {
                         return oObj.itemtype_description.escapeHtml();
                     }
                 },
@@ -607,7 +612,7 @@ $(document).ready(function() {
 
                 // Build a summary of checkouts grouped by itemtype
                 var checkoutsByItype = json.aaData.reduce(function (obj, row) {
-                    obj[row.itemtype_description] = (obj[row.itemtype_description] || 0) + 1;
+                    obj[row.type_for_stat] = (obj[row.type_for_stat] || 0) + 1;
                     return obj;
                 }, {});
                 var ul = $('<ul>');
@@ -726,6 +731,11 @@ $(document).ready(function() {
                     },
                     {
                         "mDataProp": function ( oObj ) {
+                            return oObj.recordtype_description.escapeHtml();
+                        }
+                    },
+                    {
+                        "mDataProp": function ( oObj ) {
                             return oObj.itemtype_description.escapeHtml();
                         }
                     },
index 053b589..2da2b01 100755 (executable)
@@ -161,7 +161,9 @@ while ( my $c = $sth->fetchrow_hashref() ) {
     my ( $renewals_count, $renewals_allowed, $renewals_remaining ) =
       GetRenewCount( $c->{borrowernumber}, $c->{itemnumber} );
 
-    my $itemtype = Koha::ItemTypes->find( $item_level_itypes ? $c->{itype} : $c->{itemtype} );
+    my $type_for_stat = Koha::ItemTypes->find( $item_level_itypes ? $c->{itype} : $c->{itemtype} );
+    my $itemtype = Koha::ItemTypes->find( $c->{itype} );
+    my $recordtype = Koha::ItemTypes->find( $c->{itemtype} );
     my $location;
     if ( $c->{location} ) {
         my $av = Koha::AuthorisedValues->search({ category => 'LOC', authorised_value => $c->{location} });
@@ -194,8 +196,9 @@ while ( my $c = $sth->fetchrow_hashref() ) {
         part_name            => $c->{part_name} // '',
         author               => $c->{author},
         barcode              => $c->{barcode},
-        itemtype             => $item_level_itypes ? $c->{itype} : $c->{itemtype},
+        type_for_stat        => $type_for_stat ? $type_for_stat->translated_description : q{},
         itemtype_description => $itemtype ? $itemtype->translated_description : q{},
+        recordtype_description => $recordtype ? $recordtype->translated_description : q{},
         collection           => $collection,
         location             => $location,
         homebranch           => $c->{homebranch},