X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=serials%2Fsubscription-renew.pl;h=a30b24940bb064110b92d4eb5d65bfaa0a78df32;hb=6f204fdf96f16340da184aa27142a391871dcc37;hp=127e47e89b4e1d36547c3cf28ac5e182d4c8cbd5;hpb=f408ead60b7d55eb9f6fde05097a4e99278c1d1f;p=srvgit diff --git a/serials/subscription-renew.pl b/serials/subscription-renew.pl index 127e47e89b..a30b24940b 100755 --- a/serials/subscription-renew.pl +++ b/serials/subscription-renew.pl @@ -1,24 +1,22 @@ #!/usr/bin/perl -# WARNING: 4-character tab stops here # Copyright 2000-2002 Katipo Communications # # 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . -# $Id$ =head1 NAME @@ -45,58 +43,93 @@ Id of the subscription this script has to renew =cut +use Modern::Perl; -use strict; -require Exporter; -use CGI; +use CGI qw ( -utf8 ); +use Carp; use C4::Koha; use C4::Auth; -use C4::Date; -use HTML::Template; use C4::Context; -use C4::Search; use C4::Auth; use C4::Output; -use C4::Interface::CGI::Output; use C4::Serials; - -my $query = new CGI; -my $dbh = C4::Context->dbh; - -my $op = $query->param('op'); -my $subscriptionid = $query->param('subscriptionid'); -my $done = 0; # for after form has been submitted -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "serials/subscription-renew.tmpl", - query => $query, - type => "intranet", - authnotrequired => 0, - flagsrequired => {catalogue => 1}, - debug => 1, - }); -if ($op eq "renew") { - ReNewSubscription($subscriptionid,$loggedinuser,$query->param('startdate'),$query->param('numberlength'),$query->param('weeklength'),$query->param('monthlength'),$query->param('note')); - $done = 1; +use Koha::DateUtils; + +my $query = CGI->new; +my $dbh = C4::Context->dbh; + +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.tt", + query => $query, + type => "intranet", + 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 => $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 } ); + + $template->param( + startdate => $newstartdate, + subscription => $subscription, + ); } -my $subscription= GetSubscription($subscriptionid); +$template->param( + op => $op, +); -$template->param(startdate => format_date(GetSubscriptionExpirationDate($subscriptionid)), - numberlength => $subscription->{numberlength}, - weeklength => $subscription->{weeklength}, - monthlength => $subscription->{monthlength}, - subscriptionid => $subscriptionid, - bibliotitle => $subscription->{bibliotitle}, - $op => 1, - done => $done, - intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - ); - -# Print the page output_html_with_http_headers $query, $cookie, $template->output; - -# Local Variables: -# tab-width: 4 -# End: