$vars->{'messagetype'} = 'CheckInItemResponse';
$vars->{'barcode'} = $itemid;
if ( !$checkin->{success} ) {
- $var->{'processingerror'} = 1;
- $var->{'processingerrortype'} = $checkin->{'messages'};
- $var->{'processingerrorelement'} = 'UniqueItemIdentifier';
+ $vars->{'processingerror'} = 1;
+ $vars->{'processingerrortype'} = $checkin->{'messages'};
+ $vars->{'processingerrorelement'} = 'UniqueItemIdentifier';
$output = $self->render_output( 'problem.tt', $vars );
}
else {
my @elements = $root->findnodes('CheckOutItem/ItemElementType/Value');
# checkout the item
- my $checkout = $self->ils->checkout( $userid, $itemid );
+ my ( $error, $messages ) = $self->ils->checkout( $userid, $itemid );
my $vars;
+ my $output;
+ my $vars->{'barcode'}=$itemid;
$vars->{'messagetype'} = 'CheckOutItemResponse';
- $vars->{'elements'} = \@elements;
- $vars->{'checkout'} = $checkout;
- my $output = $self->render_output( 'response.tt', $vars );
+ if ($error) {
+ $vars->{'processingerror'} = 1;
+ $vars->{'processingerrortype'} = $messages;
+ $vars->{'processingerrorelement'} = 'UniqueItemIdentifier';
+ $output = $self->render_output( 'problem.tt', $vars );
+ }
+ else {
+ $vars->{'elements'} = \@elements;
+
+ $output = $self->render_output( 'response.tt', $vars );
+ }
return $output;
}
}
--- /dev/null
+package NCIP::Handler::RenewItem;
+
+=head1
+
+ NCIP::Handler::RenewItem
+
+=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;
+
+our @ISA = qw(NCIP::Handler);
+
+sub handle {
+ my $self = shift;
+ my $xmldoc = shift;
+ if ($xmldoc) {
+ my $root = $xmldoc->documentElement();
+ my $itemid =
+ $root->findnodes('RenewItem/UniqueItemId/ItemIdentifierValue');
+ my @elements = $root->findnodes('RenewItem/ItemElementType/Value');
+
+ # checkin the item
+ my $renewed = $self->ils->renew( $itemid );
+ my $output;
+ my $vars;
+ $vars->{'messagetype'} = 'RenewItemResponse';
+ $vars->{'barcode'} = $itemid;
+ if ( !$checkin->{success} ) {
+ $vars->{'processingerror'} = 1;
+ $vars->{'processingerrortype'} = $checkin->{'messages'};
+ $vars->{'processingerrorelement'} = 'UniqueItemIdentifier';
+ $output = $self->render_output( 'problem.tt', $vars );
+ }
+ else {
+
+ $vars->{'elements'} = \@elements;
+ $vars->{'checkin'} = $checkin;
+ $output = $self->render_output( 'response.tt', $vars );
+ }
+ return $output;
+ }
+}
+
+1;
}
sub checkout {
+ my $self = shift;
+ my $userid = shift;
+ my $barcode = shift;
+ my ($error, $confirm) = CanBookBeIssued ( $userid, $barcode );
+ #( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $borrower,
+ # $barcode, $duedatespec, $inprocess, $ignore_reserves );
+ if ($error) { # plus the confirmation?
+# Can't issue item, return error hash
+ return ( 1, $error);
+ }
+ else {
+ AddIssue($userid,$barcode);
+ return ( 0 );
+ }
}
1;