Koha/suggestion/acceptorreject.pl
Henri-Damien LAURENT 5e9465a14a Accept or reject : Bug Fix and improvements.
Improving workflow : A suggestion can be edited and status can be changed if mistaken as soon as it is not deleted or acquired.
Adding dates display.
Adding deletion of suggestions.

Signed-off-by: Joshua Ferraro <jmf@liblime.com>
2008-04-17 05:52:47 -05:00

179 lines
5.3 KiB
Perl
Executable file

#!/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 CGI;
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 $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') || "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 => { catalogue => 1 },
}
);
my $suggestions;
my $branchcode;
my $userenv = C4::Context->userenv;
if ($userenv) {
unless ($userenv->{flags} == 1){
$branchcode=$userenv->{branch};
}
}
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);
warn $params;
print $input->redirect("/cgi-bin/koha/suggestion/acceptorreject.pl?op=delete_confirm$params");
}
}
if ( $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 $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;
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,
);
output_html_with_http_headers $input, $cookie, $template->output;