From: Chris Cormack Date: Sun, 30 Mar 2014 21:07:52 +0000 (+1300) Subject: Working on the CancelRequest message X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=7a45afd2705e438e0f3bde0ff2f0feee39f75d1c;p=working%2FNCIPServer.git Working on the CancelRequest message --- diff --git a/lib/NCIP/Handler/CancelRequestItem.pm b/lib/NCIP/Handler/CancelRequestItem.pm new file mode 100644 index 0000000..2cc984f --- /dev/null +++ b/lib/NCIP/Handler/CancelRequestItem.pm @@ -0,0 +1,45 @@ +package NCIP::Handler::LookupUser; + +=head1 + + NCIP::Handler::LookupUser + +=head1 SYNOPSIS + + Not to be called directly, NCIP::Handler will pick the appropriate Handler + object, given a message type + +=head1 FUNCTIONS + +=cut + +use Modern::Perl; + +use NCIP::Handler; +use NCIP::User; + +our @ISA = qw(NCIP::Handler); + +sub handle { + my $self = shift; + my $xmldoc = shift; + if ($xmldoc) { + + # Given our xml document, lets find the itemid + my ($user_id) = + $xmldoc->getElementsByTagNameNS( $self->namespace(), + 'UserIdentifierValue' ); + + my $user = NCIP::User->new( + { userid => $user_id->textContent(), ils => $self->ils } ); + $user->initialise(); + my $vars; + $vars->{'messagetype'} = 'LookupUserResponse'; + $vars->{'user'} = $user; + my $output = $self->render_output('response.tt',$vars); + return $output; + + } +} + +1; diff --git a/lib/NCIP/Handler/RequestItem.pm b/lib/NCIP/Handler/RequestItem.pm index aa2fa86..67aa8ff 100644 --- a/lib/NCIP/Handler/RequestItem.pm +++ b/lib/NCIP/Handler/RequestItem.pm @@ -34,7 +34,7 @@ sub handle { $xpc->findnodes( 'ns:RequestItem/UniqueItemId/ItemIdentifierValue', $root ); - # checkout the item + # request the item my ( $error, $messages ) = $self->ils->request( $userid, $itemid ); my $vars; my $output; diff --git a/lib/NCIP/ILS/Koha.pm b/lib/NCIP/ILS/Koha.pm index 236437b..ebac487 100644 --- a/lib/NCIP/ILS/Koha.pm +++ b/lib/NCIP/ILS/Koha.pm @@ -26,7 +26,8 @@ use C4::Members qw{ GetMemberDetails }; use C4::Circulation qw { AddReturn CanBookBeIssued AddIssue }; use C4::Context; use C4::Items qw { GetItem }; -use C4::Reserves qw {CanBookBeReserved AddReserve GetReservesFromItemnumber}; +use C4::Reserves + qw {CanBookBeReserved AddReserve GetReservesFromItemnumber CancelReserve}; use C4::Biblio qw {AddBiblio GetMarcFromKohaField}; use C4::Barcodes::ValueBuilder; use C4::Items qw{AddItem}; @@ -140,19 +141,60 @@ sub renew { } sub request { - my $self = shift; - my $biblionumber = shift; - my $borrowernumber = shift; - if ( CanBookBeReserved( $borrowernumber, $biblionumber ) ) { + my $self = shift; + my $carnumber = shift; + my $barcode = shift; + my my $borrower = GetMemberDetails( undef, $cardnumber ); + my $result; + unless ($borrower) { + $result = { success => 0, messages => { 'BORROWER_NOT_FOUND' => 1 } }; + return $result; + } + my $Itemdata = GetItem( undef, $barcode ); + unless ($itemdata) { + $result = { success => 0, messages => {'ITEM_NOT_FOUND'} }; + return $result; + } + $self->userenv(); + if ( + CanBookBeReserved( + $borrower->{borrowernumber}, + $itemdata->{biblionumber} + ) + ) + { + my $biblioitemnumber = $itemdata->{biblionumber}; + my $branchcode = 'AS'; # Add reserve here - return ( undef, "Requested" ); + AddReserve( + $branch, $borrower->{borrwerborrowernumber}, + $itemdata->{biblionumber}, 'a', + [$biblioitemnumber], 1, + undef, undef, + 'Placed By ILL', '', + $itemdata->{'itemnumber'}, undef + ); + + $result = { success => 1, request_id => 'something' }; + return $result; } else { - return ( 1, "Book can not be requested" ); + $result = { success => 0, messages => { CANNOT_REQUEST => 1 } }; + return $result; + } } +sub cancelrequest { + my $self = shift; + my $requestid = shift; + CancelReserve( { reserve_id => $requestid } ); + + my $result = { success => 1 }; + return $result; +} + sub acceptitem { my $self = shift || die "Not called as a method, we must bail out"; my $barcode = shift || die "No barcode passed can not continue"; @@ -167,8 +209,6 @@ sub acceptitem { if ($create) { my $record; my $frameworkcode = 'FA'; # we should get this from config - warn "Create yo"; - warn $iteminfo->{title}; # we must make the item first # Autographics workflow is to make the item each time @@ -217,11 +257,10 @@ sub acceptitem { # find hold and get branch for that, check in there my $itemdata = GetItem( undef, $barcode ); - warn $itemdata->{'itemnumber'}; my ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $wait ) = GetReservesFromItemnumber( $itemdata->{'itemnumber'} ); - warn "barcode $barcode"; + # now we have to check the requested action if ( $action =~ /^Hold For Pickup And Notify/ ) { unless ($reserve_id) { @@ -277,7 +316,7 @@ sub acceptitem { messages => $messages, iteminformation => $issue, borrower => $borrower, - newbarcode => $barcode + newbarcode => $barcode }; return $result;