#!/usr/bin/perl
+
+# 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 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
+
+
+=head1 NAME
+
+acceptorreject.pl
+
+=head1 DESCRIPTION
+
+this script modify the status of a subscription to ACCEPTED or to REJECTED
+
+=head1 PARAMETERS
+
+=over 4
+
+=item title
+
+=item author
+
+=item note
+
+=item copyrightdate
+
+=item publishercode
+
+=item volumedesc
+
+=item publicationyear
+
+=item place
+
+=item isbn
+
+=item status
+
+=item suggestedbyme
+
+=item op
+
+op can be :
+ * aorr_confirm : to confirm accept or reject
+ * delete_confirm : to confirm the deletion
+ * accepted : to display only accepted.
+
+=back
+
+
+=cut
+
use strict;
-require Exporter;
+use warnings;
+
use CGI;
-use HTML::Template;
-use C4::Auth; # get_template_and_user
-use C4::Interface::CGI::Output;
+use C4::Auth; # get_template_and_user
+use C4::Output;
use C4::Suggestions;
+use C4::Koha; # GetAuthorisedValue
+use C4::Dates qw(format_date);
+
-my $input = new CGI;
-my $title = $input->param('title');
-my $author = $input->param('author');
-my $note = $input->param('note');
-my $copyrightdate =$input->param('copyrightdate');
-my $publishercode = $input->param('publishercode');
-my $volumedesc = $input->param('volumedesc');
+my $input = new CGI;
+my $title = $input->param('title');
+my $author = $input->param('author');
+my $note = $input->param('note');
+my $copyrightdate = $input->param('copyrightdate');
+my $publishercode = $input->param('publishercode');
+my $volumedesc = $input->param('volumedesc');
my $publicationyear = $input->param('publicationyear');
-my $place = $input->param('place');
-my $isbn = $input->param('isbn');
-my $status = $input->param('status');
-my $suggestedbyme = $input->param('suggestedbyme');
-my $op = $input->param('op');
-$op = 'else' unless $op;
+my $place = $input->param('place');
+my $isbn = $input->param('isbn');
+my $status = $input->param('status');
+my $suggestedbyme = $input->param('suggestedbyme');
+my $op = $input->param('op') || "aorr_confirm";
my $dbh = C4::Context->dbh;
-my ($template, $loggedinuser, $cookie)
- = get_template_and_user({template_name => "suggestion/acceptorreject.tmpl",
- type => "intranet",
- query => $input,
- authnotrequired => 1,
- flagsrequired => {borrow => 1},
- });
-if ($op eq "aorr_confirm") {
- my @suggestionlist = $input->param("aorr");
- foreach my $suggestion (@suggestionlist) {
- if ($suggestion =~ /(A|R)(.*)/) {
- my ($newstatus,$suggestionid) = ($1,$2);
- $newstatus="REJECTED" if $newstatus eq "R";
- $newstatus="ACCEPTED" if $newstatus eq "A";
- changestatus($suggestionid,$newstatus,$loggedinuser);
- }
- }
- $op="else";
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+ {
+ template_name => "suggestion/acceptorreject.tmpl",
+ type => "intranet",
+ query => $input,
+ authnotrequired => 1,
+ flagsrequired => { catalogue => 1 },
+ }
+);
+
+my $suggestions;
+
+my $branchcode;
+my $userenv = C4::Context->userenv;
+if ($userenv) {
+ unless ($userenv->{flags} == 1){
+ $branchcode=$userenv->{branch};
+ }
}
-if ($op eq "delete_confirm") {
- my @delete_field = $input->param("delete_field");
- foreach my $delete_field (@delete_field) {
- &delsuggestion($loggedinuser,$delete_field);
- }
- $op='else';
+if ( $op eq "aorr_confirm" ) {
+ my $parameters=$input->Vars;
+ my @deletelist;
+ my $suggestiontype=$parameters->{suggestiontype};
+ foreach my $suggestionid (keys %$parameters){
+ next unless $suggestionid=~/^\d+$/;
+ ## it is a suggestion
+ if ($parameters->{$suggestionid}=~/delete/i){
+ push @deletelist,$suggestionid;
+ }
+ else {
+ ## it is not a deletion
+ ## Get the Reason
+ my $reason = $parameters->{"reason$suggestionid"};
+ if ( $reason eq "other" ) {
+ $reason = $parameters->{"other-reason$suggestionid"};
+ }
+ unless ($reason){
+ $reason= $parameters->{"reason".$suggestiontype."all"};
+ if ( $reason eq "other" ) {
+ $reason = $parameters->{"other-reason".$suggestiontype."all"};
+ }
+ }
+ ModStatus( $suggestionid, $parameters->{$suggestionid}, $loggedinuser, '', $reason );
+ }
+ }
+ $op = "else";
+ if (scalar(@deletelist)>0){
+ my $params = "&delete_field=".join ("&delete_field=",@deletelist);
+ print $input->redirect("/cgi-bin/koha/suggestion/acceptorreject.pl?op=delete_confirm$params");
+ exit;
+ }
+}
+elsif ( $op eq "delete_confirm" ) {
+ my @delete_field = $input->param("delete_field");
+ foreach my $delete_field (@delete_field) {
+ &DelSuggestion( $loggedinuser, $delete_field,"intranet" );
+ }
+ $op = 'else';
}
-my $suggestions_loop= &searchsuggestion("","","","",'ASKED',"");
-$template->param(suggestions_loop => $suggestions_loop,
- "op_$op" => 1,
+my $reasonsloop = GetAuthorisedValues("SUGGEST");
+my $pending_suggestions = &SearchSuggestion("", "", "", "", 'ASKED', "", $branchcode);
+map { $_->{'reasonsloop'} = $reasonsloop; $_->{'date'} = format_date($_->{'date'}) } @$pending_suggestions;
+my $accepted_suggestions = &GetSuggestionByStatus('ACCEPTED', $branchcode);
+map { $_->{'reasonsloop'} = $reasonsloop; $_->{'date'} = format_date($_->{'date'}) } @$accepted_suggestions;
+my $rejected_suggestions = &GetSuggestionByStatus('REJECTED', $branchcode);
+map { $_->{'reasonsloop'} = $reasonsloop; $_->{'date'} = format_date($_->{'date'}) } @$rejected_suggestions;
+
+# FIXME: BAD use of map in VOID context.
+
+my @allsuggestions;
+push @allsuggestions,
+ { "suggestiontype" => "accepted",
+ 'suggestions_loop' => $accepted_suggestions,
+ 'reasonsloop' => $reasonsloop
+ };
+push @allsuggestions,
+ { "suggestiontype" => "pending",
+ 'suggestions_loop' => $pending_suggestions,
+ 'reasonsloop' => $reasonsloop
+ };
+push @allsuggestions,
+ { "suggestiontype" => "rejected",
+ 'suggestions_loop' => $rejected_suggestions,
+ 'reasonsloop' => $reasonsloop
+ };
+
+$template->param(
+ suggestions => \@allsuggestions,
+ "op_$op" => 1,
+ dateformat => C4::Context->preference("dateformat"),
);
+
output_html_with_http_headers $input, $cookie, $template->output;