Portuguese staff updates
[koha.git] / suggestion / acceptorreject.pl
index 8891886..6147b34 100755 (executable)
@@ -17,7 +17,6 @@
 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 # Suite 330, Boston, MA  02111-1307 USA
 
-# $Id$
 
 =head1 NAME
 
@@ -54,73 +53,136 @@ this script modify the status of a subscription to ACCEPTED or to REJECTED
 =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";
-                       ModStatus($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,
-               intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"),
-               intranetstylesheet => C4::Context->preference("intranetstylesheet"),
-               IntranetNav => C4::Context->preference("IntranetNav"),
+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;