2 #===============================================================================
11 # AUTHOR: Chris Cormack (rangi), chrisc@catalyst.net.nz
12 # ORGANIZATION: Koha Development Team
14 # CREATED: 05/11/13 11:14:09
16 #===============================================================================
17 package NCIP::ILS::Koha;
20 use Object::Tiny qw{ name };
22 use C4::Members qw{ GetMemberDetails };
23 use C4::Circulation qw { AddReturn CanBookBeIssued AddIssue };
25 use C4::Items qw { GetItem };
26 use C4::Reserves qw {CanBookBeReserved AddReserve GetReservesFromItemnumber};
31 my $itemdata = GetItem( undef, $barcode );
33 return ( $itemdata, undef );
36 return ( undef, 1 ); # item not found error
43 my $userdata = GetMemberDetails( undef, $userid );
51 my $exemptfine = undef;
53 my ( $success, $messages, $issue, $borrower ) =
54 AddReturn( $barcode, $branch, $exemptfine, $dropbox );
57 messages => $messages,
58 iteminformation => $issue,
68 my $borrower = GetMemberDetails( undef, $userid );
77 'AS', #branchcode need to set this properly
82 C4::Context->_new_userenv('DUMMY_SESSION_ID');
83 C4::Context->set_userenv(@USERENV);
87 ( $error, $confirm ) = CanBookBeIssued( $borrower, $barcode );
89 #( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $borrower,
90 # $barcode, $duedatespec, $inprocess, $ignore_reserves );
93 # Can't issue item, return error hash
97 return ( 1, $confirm );
100 my $datedue = AddIssue( $borrower, $barcode );
101 return ( 0, undef, $datedue ); #successfully issued
105 $error->{'badborrower'} = 1;
106 return ( 1, $error );
114 my $borrower = GetMemberDetails( undef, $userid );
116 my $datedue = AddRenewal( $barcode, $borrower->{'borrowernumber'} );
131 my $biblionumber = shift;
132 my $borrowernumber = shift;
133 if ( CanBookBeReserved( $borrowernumber, $biblionumber ) ) {
136 return ( undef, "Requested" );
139 return ( 1, "Book can not be requested" );
148 # find hold and get branch for that, check in there
149 my $itemdata = GetItem( undef, $barcode );
150 my ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $wait ) =
151 GetReservesFromItemnumber( $itemdata->{'itemnumber'} );
152 unless ($reserve_id) {
153 $result = { success => 0, messages => 'No hold found for that item' };
156 $result = $self->checkin( $barcode, $branch );