From cdcb16a6fbf2826be56c91a106e371da6ff61ae9 Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Wed, 5 Apr 2017 10:00:35 -0400 Subject: [PATCH] LP 1673973: Remove the Koha code and make configuration changes. We've given up any pretense of sharing code with the Koha implementation of NCIPServer, so we remove the Koha.pm driver implementation. We also update the included configuration files for paths as expected in a typical Evergreen installation. Signed-off-by: Jason Stephenson --- config.yml | 2 +- lib/NCIP/ILS/Koha.pm | 351 --------------------------------------- t/config_sample/NCIP.xml | 2 +- 3 files changed, 2 insertions(+), 353 deletions(-) delete mode 100644 lib/NCIP/ILS/Koha.pm diff --git a/config.yml b/config.yml index 930ebd2..862d945 100644 --- a/config.yml +++ b/config.yml @@ -5,7 +5,7 @@ # Your application's name appname: "NCIP::Dancing" -views: "/home/chrisc/git/NCIPServer/templates/" +views: "/home/opensrf/NCIPServer/templates/" # The default layout to use for your application (located in # views/layouts/main.tt) diff --git a/lib/NCIP/ILS/Koha.pm b/lib/NCIP/ILS/Koha.pm deleted file mode 100644 index a33e37f..0000000 --- a/lib/NCIP/ILS/Koha.pm +++ /dev/null @@ -1,351 +0,0 @@ -# -#=============================================================================== -# -# FILE: Koha.pm -# -# DESCRIPTION: -# -# FILES: --- -# BUGS: --- -# NOTES: --- -# AUTHOR: Chris Cormack (rangi), chrisc@catalyst.net.nz -# ORGANIZATION: Koha Development Team -# VERSION: 1.0 -# CREATED: 05/11/13 11:14:09 -# REVISION: --- -#=============================================================================== -package NCIP::ILS::Koha; - -use Modern::Perl; -use Object::Tiny qw{ name }; - -use MARC::Record; -use MARC::Field; - -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 CancelReserve GetReservesFromBiblionumber}; -use C4::Biblio qw {AddBiblio GetMarcFromKohaField GetBiblioData}; -use C4::Barcodes::ValueBuilder; -use C4::Items qw{AddItem}; - -sub itemdata { - my $self = shift; - my $barcode = shift; - my $itemdata = GetItem( undef, $barcode ); - if ($itemdata) { - return ( $itemdata, undef ); - } - else { - return ( undef, 1 ); # item not found error - } -} - -sub userdata { - my $self = shift; - my $userid = shift; - my $userdata = GetMemberDetails( undef, $userid ); - return $userdata; -} - -sub userenv { - my $self = shift; - my $branch = shift || 'AS'; - my @USERENV = ( - 1, - 'test', - 'MASTERTEST', - 'Test', - 'Test', - $branch, #branchcode need to set this properly - 'Auckland', - 1, - ); - - C4::Context->_new_userenv('DUMMY_SESSION_ID'); - C4::Context::set_userenv(@USERENV); - return; -} - -sub checkin { - my $self = shift; - my $barcode = shift; - my $branch = shift; - my $exemptfine = undef; - my $dropbox = undef; - $self->userenv(); - unless ($branch) { - my $item = GetItem( undef, $barcode ); - $branch = $item->{holdingbranch}; - } - ( $success, $messages, $issue, $borrower ) = - AddReturn( $barcode, $branch, $exemptfine, $dropbox ); - my $result = { - success => $success, - messages => $messages, - iteminformation => $issue, - borrower => $borrower - }; - - return $result; -} - -sub checkout { - my $self = shift; - my $userid = shift; - my $barcode = shift; - my $borrower = GetMemberDetails( undef, $userid ); - my $item = GetItem( undef, $barcode ); - my $error; - my $confirm; - $self->userenv( $item->{holdingbranch} ); - - if ($borrower) { - - ( $error, $confirm ) = CanBookBeIssued( $borrower, $barcode ); - - if (%$error) { - - # Can't issue item, return error hash - return ( 1, $error ); - } - elsif (%$confirm) { - return ( 1, $confirm ); - } - else { - my $datedue = AddIssue( $borrower, $barcode ); - return ( 0, undef, $datedue ); #successfully issued - } - } - else { - $error->{'badborrower'} = 1; - return ( 1, $error ); - } -} - -sub renew { - my $self = shift; - my $barcode = shift; - my $userid = shift; - my $borrower = GetMemberDetails( undef, $userid ); - if ($borrower) { - my $datedue = AddRenewal( $barcode, $borrower->{'borrowernumber'} ); - my $result = { - success => 1, - datedue => $datedue - }; - return $result; - - } - else { - #handle stuff here - } -} - -sub request { - my $self = shift; - my $cardnumber = shift; - my $barcode = shift; - my $biblionumber = shift; - my $borrower = GetMemberDetails( undef, $cardnumber ); - my $result; - unless ($borrower) { - $result = { success => 0, messages => { 'BORROWER_NOT_FOUND' => 1 } }; - return $result; - } - my $itemdata; - if ($barcode) { - $itemdata = GetItem( undef, $barcode ); - } - else { - $itemdata = GetBiblioData($biblionumber); - } - 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 = 'CALG'; - - # Add reserve here - AddReserve( - $branchcode, $borrower->{borrowernumber}, - $itemdata->{biblionumber}, 'a', - [$biblioitemnumber], 1, - undef, undef, - 'Placed By ILL', '', - $itemdata->{'itemnumber'} || undef, undef - ); - my $request_id; - if ($biblionumber) { - my $reserves = GetReservesFromBiblionumber( - { biblionumber => $itemdata->{biblionumber} } ); - $request_id = $reserves->[1]->{reserve_id}; - } - else { - my ( $reservedate, $borrowernumber, $branchcode2, $reserve_id, - $wait ) - = GetReservesFromItemnumber( $itemdata->{'itemnumber'} ); - $request_id = $reserve_id; - } - $result = { - success => 1, - messages => { request_id => $request_id } - }; - return $result; - } - else { - $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"; - my $user = shift; - my $action = shift; - my $create = shift; - my $iteminfo = shift; - my $result; - - $self->userenv(); # set userenvironment - my ( $biblionumber, $biblioitemnumber ); - if ($create) { - my $record; - my $frameworkcode = 'FA'; # we should get this from config - - # we must make the item first - # Autographics workflow is to make the item each time - if ( C4::Context->preference('marcflavour') eq 'UNIMARC' ) { - - # TODO - } - elsif ( C4::Context->preference('marcflavour') eq 'NORMARC' ) { - - #TODO - } - else { - # MARC21 - # create a marc record - $record = MARC::Record->new(); - $record->leader(' nac 22 1u 4500'); - $record->insert_fields_ordered( - MARC::Field->new( '100', '1', '0', 'a' => $iteminfo->{author} ), - MARC::Field->new( '245', '1', '0', 'a' => $iteminfo->{title} ), - MARC::Field->new( - '260', '1', '0', - 'b' => $iteminfo->{publisher}, - 'c' => $iteminfo->{publicationdate} - ), - MARC::Field->new( - '942', '1', '0', 'c' => $iteminfo->{mediumtype} - ) - ); - - } - - ( $biblionumber, $biblioitemnumber ) = - AddBiblio( $record, $frameworkcode ); - my $itemnumber; - - my %args; - ( $args{tag}, $args{subfield} ) = - GetMarcFromKohaField( "items.barcode", '' ); - my ( $nextnum, $scr ) = - C4::Barcodes::ValueBuilder::incremental::get_barcode( \%args ); - $nextnum = sprintf( "%.0f", $nextnum ); - my $item = { 'barcode' => $nextnum }; - ( $biblionumber, $biblioitemnumber, $itemnumber ) = - AddItem( $item, $biblionumber ); - $barcode = $nextnum; - } - - # find hold and get branch for that, check in there - my $itemdata = GetItem( undef, $barcode ); - - my ( $reservedate, $borrowernumber, $branchcode, $reserve_id, $wait ) = - GetReservesFromItemnumber( $itemdata->{'itemnumber'} ); - - # now we have to check the requested action - if ( $action =~ /^Hold For Pickup And Notify/ ) { - unless ($reserve_id) { - $branchcode = 'CALG'; # set this properly - # no reserve, place one - if ($user) { - my $borrower = GetMemberDetails( undef, $user ); - if ($borrower) { - AddReserve( - $branchcode, - $borrower->{'borrowernumber'}, - $biblionumber, - 'a', - [$biblioitemnumber], - 1, - undef, - undef, - 'Placed By ILL', - '', - $itemdata->{'itemnumber'}, - undef - ); - } - - else { - $result = - { success => 0, messages => { NO_BORROWER => 1 } }; - return $result; - } - } - else { - $result = - { success => 0, messages => { NO_HOLD_BORROWER => 1 } }; - return $result; - } - } - } - else { - unless ($reserve_id) { - $result = { success => 0, messages => { NO_HOLD => 1 } }; - return $result; - } - } - my ( $success, $messages, $issue, $borrower ) = - AddReturn( $barcode, $branchcode, undef, undef ); - if ( $messages->{'NotIssued'} ) { - $success = 1 - ; # we do this because we are only doing the return to trigger the reserve - } - - $result = { - success => $success, - messages => $messages, - iteminformation => $issue, - borrower => $borrower, - newbarcode => $barcode - }; - - return $result; -} -1; diff --git a/t/config_sample/NCIP.xml b/t/config_sample/NCIP.xml index 5cea7d4..be353a3 100644 --- a/t/config_sample/NCIP.xml +++ b/t/config_sample/NCIP.xml @@ -35,5 +35,5 @@ - + -- 2.43.2