X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=svc%2Fholds;h=8043297573afd7ee950f78f621c0cde035efc9ba;hb=db8261ef5e921de51e6fce0bb3a93f5c3349d040;hp=1db9338eaf6019d62563b4d90744892487d7d778;hpb=b9625bbc8ba3562602a8fe0e2375a5972f6d0cbd;p=srvgit diff --git a/svc/holds b/svc/holds index 1db9338eaf..8043297573 100755 --- a/svc/holds +++ b/svc/holds @@ -4,18 +4,18 @@ # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 3 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . use Modern::Perl; @@ -23,18 +23,17 @@ use CGI; use JSON qw(to_json); use C4::Auth qw(check_cookie_auth); -use C4::Biblio qw(GetMarcBiblio GetFrameworkCode GetRecordValue ); -use C4::Branch qw(GetBranchName); use C4::Charset; -use C4::Circulation qw(GetTransfers); use C4::Context; -use Koha::DateUtils; +use Koha::DateUtils qw( dt_from_string output_pref ); use Koha::Holds; +use Koha::ItemTypes; +use Koha::Libraries; -my $input = new CGI; +my $input = CGI->new; -my ( $auth_status, $sessionID ) = +my ( $auth_status ) = check_cookie_auth( $input->cookie('CGISESSID'), { circulate => 'circulate_remaining_permissions' } ); @@ -53,8 +52,8 @@ my $borrowernumber = $input->param('borrowernumber'); my $offset = $input->param('iDisplayStart'); my $results_per_page = $input->param('iDisplayLength'); my $sorting_direction = $input->param('sSortDir_0') || 'desc'; -my $sorting_column = $sort_columns[ $input->param('iSortCol_0') ] - || 'reservedate'; +my $iSortCol = $input->param('iSortCol_0') // 0; +my $sorting_column = $sort_columns[$iSortCol] // 'reservedate'; binmode STDOUT, ":encoding(UTF-8)"; print $input->header( -type => 'text/plain', -charset => 'UTF-8' ); @@ -66,26 +65,45 @@ my $holds_rs = Koha::Holds->search( } ); -my $borrower; my @holds; while ( my $h = $holds_rs->next() ) { my $item = $h->item(); + my $item_group = $h->item_group(); my $biblionumber = $h->biblio()->biblionumber(); + my $desk_id = $h->desk_id; + my $desk_name = ''; + if ($desk_id) { + $desk_name = $h->desk()->desk_name(); + } + my $itemtype_limit; if ( $h->itemtype ) { - my $itemtype = C4::Koha::getitemtypeinfo( $h->itemtype ); - $itemtype_limit = $itemtype->{translated_description}; + my $itemtype = Koha::ItemTypes->find( $h->itemtype ); + $itemtype_limit = $itemtype->translated_description; + } + + my $libraries = Koha::Libraries->search({}, { order_by => ['branchname'] })->unblessed; + for my $library ( @$libraries ) { + $library->{selected} = 1 if $library->{branchcode} eq $h->branchcode(); } + my $biblio = $h->biblio(); + my @subtitles = split(/ \| /, $biblio->subtitle() // ''); my $hold = { DT_RowId => $h->reserve_id(), biblionumber => $biblionumber, - title => $h->biblio()->title(), - author => $h->biblio()->author(), + title => $biblio->title(), + subtitle => \@subtitles, + medium => $biblio->medium() // '', + part_number => $biblio->part_number() // '', + part_name => $biblio->part_name() // '', + author => $biblio->author(), reserve_id => $h->reserve_id(), branchcode => $h->branch()->branchname(), + branches => $libraries, + desk_name => $desk_name, reservedate => $h->reservedate(), expirationdate => $h->expirationdate(), suspend => $h->suspend(), @@ -96,10 +114,6 @@ while ( my $h = $holds_rs->next() ) { waiting_here => $h->branch()->branchcode() eq $branch, priority => $h->priority(), itemtype_limit => $itemtype_limit, - subtitle => GetRecordValue( - 'subtitle', GetMarcBiblio($biblionumber), - GetFrameworkCode($biblionumber) - ), reservedate_formatted => $h->reservedate() ? output_pref( { dt => dt_from_string( $h->reservedate() ), dateonly => 1 } ) @@ -114,11 +128,6 @@ while ( my $h = $holds_rs->next() ) { : q{}, }; - if ( my $e = $h->waiting_expires_on() ) { - $hold->{expirationdate} = $e->ymd(); - $hold->{expirationdate_formatted} = output_pref( { dt => $e, dateonly => 1 }); - } - $hold->{transfered} = 0; $hold->{not_transfered} = 0; @@ -126,15 +135,16 @@ while ( my $h = $holds_rs->next() ) { $hold->{itemnumber} = $item->itemnumber(); $hold->{barcode} = $item->barcode(); $hold->{itemtype} = $item->effective_itemtype(); + $hold->{itemtype_description} = $item->itemtype->description; + $hold->{enumchron} = $item->enumchron(); $hold->{itemcallnumber} = $item->itemcallnumber() || q{}; - my ( $transferred_when, $transferred_from, $transferred_to ) = - GetTransfers( $item->itemnumber() ); - if ($transferred_when) { + my $transfer = $item->get_transfer; + if ( $transfer && $transfer->in_transit ) { $hold->{color} = 'transferred'; $hold->{transferred} = 1; - $hold->{date_sent} = output_pref( dt_from_string($transferred_when) ); - $hold->{from_branch} = GetBranchName($transferred_from); + $hold->{date_sent} = output_pref({ dt => dt_from_string($transfer->datesent) }); + $hold->{from_branch} = Koha::Libraries->find($transfer->frombranch)->branchname; } elsif ( $item->holding_branch() && $item->holding_branch()->branchcode() ne $h->branch()->branchcode() ) @@ -144,6 +154,11 @@ while ( my $h = $holds_rs->next() ) { } } + if ($item_group) { + $hold->{item_group_id} = $item_group->id; + $hold->{item_group_description} = $item_group->description; + } + push( @holds, $hold ); }