X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=svc%2Fcheckouts;h=a749494028eafe371eebec25f308acc9031c6b75;hb=7d8b96803f664d86762a6afb966051f7d565c40e;hp=d8d615694249445935b1a804934a8508bb9e038c;hpb=091d6c513bcbee224ff06477e79be48cea7fe825;p=srvgit diff --git a/svc/checkouts b/svc/checkouts index d8d6156942..a749494028 100755 --- a/svc/checkouts +++ b/svc/checkouts @@ -4,27 +4,25 @@ # # 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 strict; -use warnings; +use Modern::Perl; use CGI; use JSON qw(to_json); use C4::Auth qw(check_cookie_auth haspermission get_session); -use C4::Biblio qw(GetMarcBiblio GetFrameworkCode GetRecordValue ); use C4::Circulation qw(GetIssuingCharges CanBookBeRenewed GetRenewCount GetSoonestRenewDate); use C4::Overdues qw(GetFine); use C4::Context; @@ -42,7 +40,7 @@ my $session = get_session($sessionID); my $userid = $session->param('id'); unless (haspermission($userid, { circulate => 'circulate_remaining_permissions' }) - || haspermission($userid, { borrowers => '*' })) { + || haspermission($userid, { borrowers => 'edit_borrowers' })) { exit 0; } @@ -66,24 +64,28 @@ print $input->header( -type => 'text/plain', -charset => 'UTF-8' ); my @parameters; my $sql = ' SELECT - issuedate, - date_due, - date_due < now() as date_due_overdue, + issues.issuedate, + issues.date_due, + issues.date_due < now() as date_due_overdue, issues.timestamp, - onsite_checkout, + issues.onsite_checkout, - biblionumber, + biblio.biblionumber, biblio.title, - author, - - itemnumber, - barcode, + biblio.subtitle, + biblio.medium, + biblio.part_number, + biblio.part_name, + biblio.author, + + items.itemnumber, + items.barcode, branches2.branchname AS homebranch, - itemnotes, - itemnotes_nonpublic, - itemcallnumber, - replacementprice, + items.itemnotes, + items.itemnotes_nonpublic, + items.itemcallnumber, + items.replacementprice, issues.branchcode, branches.branchname, @@ -91,17 +93,25 @@ my $sql = ' items.itype, biblioitems.itemtype, - borrowernumber, - surname, - firstname, - cardnumber, + items.ccode AS collection, + + borrowers.borrowernumber, + borrowers.surname, + borrowers.firstname, + borrowers.cardnumber, - itemlost, - damaged, - location, + items.itemlost, + items.damaged, + items.location, items.enumchron, - DATEDIFF( issuedate, CURRENT_DATE() ) AS not_issued_today + DATEDIFF( issues.issuedate, CURRENT_DATE() ) AS not_issued_today, + + return_claims.id AS return_claim_id, + return_claims.notes AS return_claim_notes, + return_claims.created_on AS return_claim_created_on, + return_claims.updated_on AS return_claim_updated_on + FROM issues LEFT JOIN items USING ( itemnumber ) LEFT JOIN biblio USING ( biblionumber ) @@ -109,7 +119,8 @@ my $sql = ' LEFT JOIN borrowers USING ( borrowernumber ) LEFT JOIN branches ON ( issues.branchcode = branches.branchcode ) LEFT JOIN branches branches2 ON ( items.homebranch = branches2.branchcode ) - WHERE borrowernumber + LEFT JOIN return_claims USING ( issue_id ) + WHERE issues.borrowernumber '; if ( @borrowernumber == 1 ) { @@ -127,6 +138,7 @@ my $sth = $dbh->prepare($sql); $sth->execute(@parameters); my $item_level_itypes = C4::Context->preference('item-level_itypes'); +my $claims_returned_lost_value = C4::Context->preference('ClaimReturnedLostValue'); my @checkouts_today; my @checkouts_previous; @@ -149,29 +161,45 @@ 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} }); $location = $av->count ? $av->next->lib : ''; } + my $collection; + if ( $c->{collection} ) { + my $av = Koha::AuthorisedValues->search({ category => 'CCODE', authorised_value => $c->{collection} }); + $collection = $av->count ? $av->next->lib : ''; + } my $lost; + my $claims_returned; if ( $c->{itemlost} ) { my $av = Koha::AuthorisedValues->search({ category => 'LOST', authorised_value => $c->{itemlost} }); $lost = $av->count ? $av->next->lib : ''; + $claims_returned = $c->{itemlost} eq $claims_returned_lost_value; } my $damaged; if ( $c->{damaged} ) { my $av = Koha::AuthorisedValues->search({ category => 'DAMAGED', authorised_value => $c->{damaged} }); $damaged = $av->count ? $av->next->lib : ''; } + my @subtitles = split(/ \| /, $c->{'subtitle'} // '' ); my $checkout = { DT_RowId => $c->{itemnumber} . '-' . $c->{borrowernumber}, title => $c->{title}, + subtitle => \@subtitles, + medium => $c->{medium} // '', + part_number => $c->{part_number} // '', + part_name => $c->{part_name} // '', author => $c->{author}, barcode => $c->{barcode}, - itemtype => $item_level_itypes ? $c->{itype} : $c->{itemtype}, - itemtype_description => $itemtype->translated_description, + 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}, itemnotes => $c->{itemnotes}, @@ -197,6 +225,14 @@ while ( my $c = $sth->fetchrow_hashref() ) { renewals_count => $renewals_count, renewals_allowed => $renewals_allowed, renewals_remaining => $renewals_remaining, + + return_claim_id => $c->{return_claim_id}, + return_claim_notes => $c->{return_claim_notes}, + return_claim_created_on => $c->{return_claim_created_on}, + return_claim_updated_on => $c->{return_claim_updated_on}, + return_claim_created_on_formatted => $c->{return_claim_created_on} ? output_pref({ dt => dt_from_string( $c->{return_claim_created_on} ) }) : undef, + return_claim_updated_on_formatted => $c->{return_claim_updated_on} ? output_pref({ dt => dt_from_string( $c->{return_claim_updated_on} ) }) : undef, + issuedate_formatted => output_pref( { dt => dt_from_string( $c->{issuedate} ), @@ -209,9 +245,8 @@ while ( my $c = $sth->fetchrow_hashref() ) { as_due_date => 1 } ), - subtitle => - GetRecordValue( 'subtitle', GetMarcBiblio( $c->{biblionumber} ), GetFrameworkCode( $c->{biblionumber} ) ), lost => $lost, + claims_returned => $claims_returned, damaged => $damaged, borrower => { surname => $c->{surname}, @@ -230,13 +265,15 @@ while ( my $c = $sth->fetchrow_hashref() ) { } -@checkouts_today = sort { $a->{timestamp} cmp $b->{timestamp} } @checkouts_today; +@checkouts_today = sort { $a->{timestamp} cmp $b->{timestamp} } @checkouts_today; # latest to earliest @checkouts_today = reverse(@checkouts_today) - unless ( C4::Context->preference('todaysIssuesDefaultSortOrder') eq 'desc' ); + unless ( C4::Context->preference('todaysIssuesDefaultSortOrder') eq 'desc' ); # earliest to latest -@checkouts_previous = sort { $a->{date_due} cmp $b->{date_due} } @checkouts_previous; +@checkouts_previous = + sort { $a->{date_due} cmp $b->{date_due} || $a->{timestamp} cmp $b->{timestamp} } + @checkouts_previous; # latest to earliest @checkouts_previous = reverse(@checkouts_previous) - if ( C4::Context->preference('previousIssuesDefaultSortOrder') eq 'desc' ); + unless ( C4::Context->preference('previousIssuesDefaultSortOrder') eq 'desc' ); # earliest to latest my @checkouts = ( @checkouts_today, @checkouts_previous );