X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=serials%2Fsubscription-renew.pl;h=5da15363c19cb42a2f9d3d9ba8f7391940aa5cfd;hb=b0767f5eb60f087cfd9fbaabb4454fc786e18438;hp=02dce306e3b88786bb0137e248a20905fcab3ac3;hpb=9302e45442ae9e9c5522690a0effb556c381ff58;p=koha-ffzg.git diff --git a/serials/subscription-renew.pl b/serials/subscription-renew.pl index 02dce306e3..5da15363c1 100755 --- a/serials/subscription-renew.pl +++ b/serials/subscription-renew.pl @@ -4,18 +4,18 @@ # # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . =head1 NAME @@ -43,64 +43,93 @@ Id of the subscription this script has to renew =cut -use strict; -use warnings; +use Modern::Perl; -use CGI; -use Carp; +use CGI qw ( -utf8 ); +use Carp qw( carp ); use C4::Koha; -use C4::Auth; -use C4::Dates qw/format_date/; +use C4::Auth qw( get_template_and_user ); use C4::Context; -use C4::Auth; -use C4::Output; -use C4::Serials; +use C4::Auth qw( get_template_and_user ); +use C4::Output qw( output_and_exit output_html_with_http_headers ); +use C4::Serials qw( GetSubscription GetSubscriptionLength NewSubscription ReNewSubscription ); +use Koha::DateUtils qw( dt_from_string output_pref ); -my $query = new CGI; +my $query = CGI->new; my $dbh = C4::Context->dbh; -my $mode = $query->param('mode'); -my $op = $query->param('op') || q{}; -my $subscriptionid = $query->param('subscriptionid'); +my $mode = $query->param('mode') || q{}; +my $op = $query->param('op') || 'display'; +my @subscriptionids = $query->multi_param('subscriptionid'); +my $branchcode = $query->param('branchcode'); +my $sublength = $query->param('sublength'); +my $subtype = $query->param('subtype'); +my ($numberlength, $weeklength, $monthlength); + my $done = 0; # for after form has been submitted my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { - template_name => "serials/subscription-renew.tmpl", + template_name => "serials/subscription-renew.tt", query => $query, type => "intranet", - authnotrequired => 0, - flagsrequired => { serials => 1 }, - debug => 1, + flagsrequired => { serials => 'renew_subscription' }, } ); if ( $op eq "renew" ) { + # Do not use this script with op=renew and @subscriptionids > 1! + my $subscriptionid = $subscriptionids[0]; + # Make sure the subscription exists + my $subscription = GetSubscription( $subscriptionid ); + output_and_exit( $query, $cookie, $template, 'unknown_subscription') unless $subscription; + my $startdate = output_pref( { str => scalar $query->param('startdate'), dateonly => 1, dateformat => 'iso' } ); + ($numberlength, $weeklength, $monthlength) = GetSubscriptionLength( $subtype, $sublength ); ReNewSubscription( - $subscriptionid, $loggedinuser, - C4::Dates->new($query->param('startdate'))->output('iso'), $query->param('numberlength'), - $query->param('weeklength'), $query->param('monthlength'), - $query->param('note') + { + subscriptionid => $subscriptionid, + user => $loggedinuser, + startdate => $startdate, + numberlength => $numberlength, + weeklength => $weeklength, + monthlength => $monthlength, + note => scalar $query->param('note'), + branchcode => $branchcode + } ); -} +} elsif ( $op eq 'multi_renew' ) { + for my $subscriptionid ( @subscriptionids ) { + my $subscription = GetSubscription( $subscriptionid ); + next unless $subscription; + ReNewSubscription( + { + subscriptionid => $subscriptionid, + user => $loggedinuser, + startdate => $subscription->{enddate}, + numberlength => $subscription->{numberlength}, + weeklength => $subscription->{weeklength}, + monthlength => $subscription->{monthlength}, + } + ); + } +} else { + my $subscriptionid = $subscriptionids[0]; + my $subscription = GetSubscription($subscriptionid); + output_and_exit( $query, $cookie, $template, 'unknown_subscription') unless $subscription; + if ($subscription->{'cannotedit'}){ + carp "Attempt to renew subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; + print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); + } + + my $newstartdate = output_pref( { str => $subscription->{enddate}, dateonly => 1 } ) + or output_pref( { dt => dt_from_string, dateonly => 1 } ); -my $subscription = GetSubscription($subscriptionid); -if ($subscription->{'cannotedit'}){ - carp "Attempt to renew subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; - print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); + $template->param( + startdate => $newstartdate, + subscription => $subscription, + ); } $template->param( - startdate => format_date( - $subscription->{enddate} - || POSIX::strftime( "%Y-%m-%d", localtime ) - ), - numberlength => $subscription->{numberlength}, - weeklength => $subscription->{weeklength}, - monthlength => $subscription->{monthlength}, - subscriptionid => $subscriptionid, - bibliotitle => $subscription->{bibliotitle}, - $op => 1, - popup => ($query->param('mode')eq "popup"), + op => $op, ); -# Print the page output_html_with_http_headers $query, $cookie, $template->output;