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 );
55 'AS', #branchcode need to set this properly
60 C4::Context->_new_userenv('DUMMY_SESSION_ID');
61 C4::Context->set_userenv(@USERENV);
69 my $exemptfine = undef;
72 my ( $success, $messages, $issue, $borrower ) =
73 AddReturn( $barcode, $branch, $exemptfine, $dropbox );
76 messages => $messages,
77 iteminformation => $issue,
88 my $borrower = GetMemberDetails( undef, $userid );
94 ( $error, $confirm ) = CanBookBeIssued( $borrower, $barcode );
96 #( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $borrower,
97 # $barcode, $duedatespec, $inprocess, $ignore_reserves );
100 # Can't issue item, return error hash
101 return ( 1, $error );
104 return ( 1, $confirm );
107 my $datedue = AddIssue( $borrower, $barcode );
108 return ( 0, undef, $datedue ); #successfully issued
112 $error->{'badborrower'} = 1;
113 return ( 1, $error );
121 my $borrower = GetMemberDetails( undef, $userid );
123 my $datedue = AddRenewal( $barcode, $borrower->{'borrowernumber'} );
138 my $biblionumber = shift;
139 my $borrowernumber = shift;
140 if ( CanBookBeReserved( $borrowernumber, $biblionumber ) ) {
143 return ( undef, "Requested" );
146 return ( 1, "Book can not be requested" );
155 # find hold and get branch for that, check in there
156 my $itemdata = GetItem( undef, $barcode );
157 my ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $wait ) =
158 GetReservesFromItemnumber( $itemdata->{'itemnumber'} );
159 unless ($reserve_id) {
160 $result = { success => 0, messages => { NO_HOLD => 1 } };
163 my ( $success, $messages, $issue, $borrower ) =
164 AddReturn( $barcode, $branchcode, undef, undef );
165 if ( $messages->{'NotIssued'} ) {
167 ; # we do this because we are only doing the return to trigger the reserve
172 messages => $messages,
173 iteminformation => $issue,
174 borrower => $borrower