3 # Copyright 2016 PTFS-Europe Ltd
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
20 =head1 stockrotation.pl
22 Script to manage item assignments to stock rotation rotas. Including their
30 use C4::Auth qw( get_template_and_user );
31 use C4::Output qw( output_html_with_http_headers );
32 use C4::Search qw( enabled_staff_search_views );
33 use C4::Serials qw( CountSubscriptionFromBiblionumber );
37 use Koha::StockRotationRotas;
38 use Koha::StockRotationStages;
39 use Koha::Util::StockRotation qw( get_stages get_branches toggle_indemand remove_from_stage move_to_next_stage );
43 unless (C4::Context->preference('StockRotation')) {
44 # redirect to Intranet home if self-check is not enabled
45 print $input->redirect("/cgi-bin/koha/mainpage.pl");
49 my %params = $input->Vars();
53 my $biblionumber = $input->param('biblionumber');
55 my ($template, $loggedinuser, $cookie) = get_template_and_user(
57 template_name => 'catalogue/stockrotation.tt',
62 stockrotation => 'manage_rota_items',
69 # List all items along with their associated rotas
70 my $biblio = Koha::Biblios->find($biblionumber);
72 my $items = $biblio->items;
74 # Get only rotas with stages
75 my $rotas = Koha::StockRotationRotas->search(
77 'stockrotationstages.stage_id' => { '!=', undef }
80 join => 'stockrotationstages',
86 # Construct a model to pass to the view
89 while (my $item = $items->next) {
95 my $stockrotationitem = $item->stockrotationitem;
97 # If this item is on a rota
98 if ($stockrotationitem != 0) {
101 my $rota = $stockrotationitem->stage->rota;
104 my $stages = get_stages($rota);
106 $item_hashref->{rota} = $rota;
108 $item_hashref->{stockrotationitem} = $stockrotationitem;
110 $item_hashref->{stages} = $stages;
114 push @item_data, $item_hashref;
121 items => \@item_data,
122 branches => get_branches(),
124 biblionumber => $biblio->biblionumber,
125 stockrotationview => 1,
126 subscriptionsnumber => CountSubscriptionFromBiblionumber($biblionumber),
127 C4::Search::enabled_staff_search_views
130 } elsif ($op eq "toggle_in_demand") {
133 toggle_indemand($params{item_id}, $params{stage_id});
135 # Return to items list
136 print $input->redirect("?biblionumber=$biblionumber");
138 } elsif ($op eq "remove_item_from_stage") {
140 # Remove from the stage
141 remove_from_stage($params{item_id}, $params{stage_id});
143 # Return to items list
144 print $input->redirect("?biblionumber=$biblionumber");
146 } elsif ($op eq "move_to_next_stage") {
148 move_to_next_stage($params{item_id}, $params{stage_id});
150 # Return to items list
151 print $input->redirect("?biblionumber=" . $params{biblionumber});
153 } elsif ($op eq "add_item_to_rota") {
155 my $item = Koha::Items->find($params{item_id});
157 $item->add_to_rota($params{rota_id});
159 print $input->redirect("?biblionumber=" . $params{biblionumber});
161 } elsif ($op eq "confirm_remove_from_rota") {
165 stage_id => $params{stage_id},
166 item_id => $params{item_id},
167 biblionumber => $params{biblionumber},
168 stockrotationview => 1,
169 subscriptionsnumber => CountSubscriptionFromBiblionumber($biblionumber),
170 C4::Search::enabled_staff_search_views
175 output_html_with_http_headers $input, $cookie, $template->output;
179 Andrew Isherwood <andrew.isherwood@ptfs-europe.com>