@@ -, +, @@ --- C4/RotatingCollections.pm | 59 ---------------------- Koha/RotatingCollection.pm | 29 ++++++++++- .../rotating_collections/transferCollection.tt | 6 +-- rotating_collections/transferCollection.pl | 26 +++------- 4 files changed, 38 insertions(+), 82 deletions(-) --- a/C4/RotatingCollections.pm +++ a/C4/RotatingCollections.pm @@ -48,68 +48,9 @@ BEGIN { require Exporter; @ISA = qw( Exporter ); @EXPORT = qw( - TransferCollection ); } -=head2 TransferCollection - - ( $success, $errorcode, $errormessage ) = TransferCollection( $colId, $colBranchcode ); - -Transfers a collection to another branch - - Input: - $colId: id of the collection to be updated - $colBranchcode: branch where collection is moving to - - Output: - $success: 1 if all database operations were successful, 0 otherwise - $errorCode: Code for reason of failure, good for translating errors in templates - $errorMessage: English description of error - -=cut - -sub TransferCollection { - my ( $colId, $colBranchcode ) = @_; - - ## Check for all necessary parameters - if ( !$colId ) { - return ( 0, 1, "NO_ID" ); - } - if ( !$colBranchcode ) { - return ( 0, 2, "NO_BRANCHCODE" ); - } - - my $dbh = C4::Context->dbh; - - my $sth; - $sth = $dbh->prepare( - "UPDATE collections - SET - colBranchcode = ? - WHERE colId = ?" - ); - $sth->execute( $colBranchcode, $colId ) or return ( 0, 4, $sth->errstr() ); - - $sth = $dbh->prepare(q{ - SELECT items.itemnumber, items.barcode FROM collections_tracking - LEFT JOIN items ON collections_tracking.itemnumber = items.itemnumber - LEFT JOIN issues ON items.itemnumber = issues.itemnumber - WHERE issues.borrowernumber IS NULL - AND collections_tracking.colId = ? - }); - $sth->execute($colId) or return ( 0, 4, $sth->errstr ); - my @results; - while ( my $item = $sth->fetchrow_hashref ) { - my ($status) = CheckReserves( $item->{itemnumber} ); - my @transfers = C4::Circulation::GetTransfers( $item->{itemnumber} ); - C4::Circulation::transferbook( $colBranchcode, $item->{barcode}, my $ignore_reserves = 1 ) unless ( $status eq 'Waiting' || @transfers ); - } - - return 1; - -} - =head2 isItemInThisCollection $inCollection = isItemInThisCollection( $itemnumber, $colId ); --- a/Koha/RotatingCollection.pm +++ a/Koha/RotatingCollection.pm @@ -1,6 +1,6 @@ package Koha::RotatingCollection; -# Copyright Josef Moravec 2016 +# Copyright Josef Moravec 2017 # # This file is part of Koha. # @@ -23,6 +23,7 @@ use Carp; use Koha::Database; use Koha::Exceptions; +use Koha::Holds; use Koha::Items; use Koha::RotatingCollection::Trackings; @@ -113,6 +114,32 @@ sub remove_item { return $collection_tracking->delete; } +=head3 transfer + +$collection->transfer( $branchcode) + +throws + Koha::Exceptions::MissingParameter + +=cut + +sub transfer { + my ( $self, $branchcode ) = @_; + + Koha::Exceptions::MissingParameter->throw if not defined $branchcode; + + $self->colBranchcode( $branchcode )->store; + + my $items = $self->items; + while ( my $item = $items->next ) { + my $holds = Koha::Holds->search( { + itemnumber => $item->itemnumber, + found => 'W', + } ); + C4::Circulation::transferbook( $branchcode, $item->barcode, my $ignore_reserves = 1 ) unless ( $holds->count || $item->get_transfer ); + } +} + =head3 type =cut --- a/koha-tmpl/intranet-tmpl/prog/en/modules/rotating_collections/transferCollection.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/rotating_collections/transferCollection.tt @@ -7,14 +7,14 @@ [% INCLUDE 'header.inc' %] [% INCLUDE 'cat-search.inc' %] - +
-

Transfer collection [% colTitle %]

+

Transfer collection [% collection.colTitle %]

[% IF ( transferSuccess ) %]
@@ -32,7 +32,7 @@ [% ELSE %]
- +
  1. --- a/rotating_collections/transferCollection.pl +++ a/rotating_collections/transferCollection.pl @@ -21,7 +21,6 @@ use Modern::Perl; use C4::Output; use C4::Auth; use C4::Context; -use C4::RotatingCollections; use Koha::RotatingCollections; @@ -32,6 +31,8 @@ my $query = new CGI; my $colId = $query->param('colId'); my $toBranch = $query->param('toBranch'); +my $collection = Koha::RotatingCollections->find( $colId ); + my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { template_name => "rotating_collections/transferCollection.tt", @@ -44,31 +45,18 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( ); ## Transfer collection -my ( $success, $errorCode, $errorMessage ); if ($toBranch) { - ( $success, $errorCode, $errorMessage ) = - TransferCollection( $colId, $toBranch ); + my $transferred = eval ( $collection->transfer( $toBranch ) ); - if ($success) { + if ( $@ and not $transferred ) { + $template->param( transferFailure => 1 ); + } else { $template->param( transferSuccess => 1 ); } - else { - $template->param( - transferFailure => 1, - errorCode => $errorCode, - errorMessage => $errorMessage - ); - } } -## Get data about collection -my $collection = Koha::RotatingCollections->find($colId); - $template->param( - colId => $collection->colId, - colTitle => $collection->colTitle, - colDesc => $collection->colDesc, - colBranchcode => $collection->colBranchcode, + collection => $collection, ); output_html_with_http_headers $query, $cookie, $template->output; --