Bug 22296: Add Invoice Adjustments to GetBudgetHierarchy
[koha.git] / C4 / Suggestions.pm
index 02e32b9..e2dd3e7 100644 (file)
@@ -32,7 +32,6 @@ use Koha::DateUtils;
 use List::MoreUtils qw(any);
 use base qw(Exporter);
 
-our $VERSION = 3.07.00.049;
 our @EXPORT  = qw(
   ConnectSuggestionAndBiblio
   CountSuggestion
@@ -64,7 +63,7 @@ The functions in this module deal with the aqorders in OPAC and in librarian int
 
 A suggestion is done in the OPAC. It has the status "ASKED"
 
-When a librarian manages the suggestion, he can set the status to "REJECTED" or "ACCEPTED".
+When a librarian manages the suggestion, they can set the status to "REJECTED" or "ACCEPTED".
 
 When the book is ordered, the suggestion status becomes "ORDERED"
 
@@ -161,7 +160,10 @@ sub SearchSuggestion {
         if ( exists $suggestion->{$field}
                 and defined $suggestion->{$field}
                 and $suggestion->{$field} ne '__ANY__'
-                and $suggestion->{$field} ne q||
+                and (
+                    $suggestion->{$field} ne q||
+                        or $field eq 'STATUS'
+                )
         ) {
             if ( $suggestion->{$field} eq '__NONE__' ) {
                 push @query, qq{ AND (suggestions.$field = '' OR suggestions.$field IS NULL) };
@@ -177,10 +179,15 @@ sub SearchSuggestion {
     foreach my $field (qw( suggesteddate manageddate accepteddate )) {
         my $from = $field . "_from";
         my $to   = $field . "_to";
+        my $from_dt;
+        $from_dt = eval { dt_from_string( $suggestion->{$from} ) } if ( $suggestion->{$from} );
+        my $from_sql = '0000-00-00';
+        $from_sql = output_pref({ dt => $from_dt, dateformat => 'iso', dateonly => 1 })
+            if ($from_dt);
+        $debug && warn "SQL for start date ($field): $from_sql";
         if ( $suggestion->{$from} || $suggestion->{$to} ) {
             push @query, qq{ AND suggestions.$field BETWEEN ? AND ? };
-            push @sql_params,
-              output_pref({ dt => dt_from_string( $suggestion->{$from} ), dateformat => 'iso', dateonly => 1 }) || '0000-00-00';
+            push @sql_params, $from_sql;
             push @sql_params,
               output_pref({ dt => dt_from_string( $suggestion->{$to} ), dateformat => 'iso', dateonly => 1 }) || output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 });
         }
@@ -495,11 +502,16 @@ sub ModSuggestion {
 
         # fetch the entire updated suggestion so that we can populate the letter
         my $full_suggestion = GetSuggestion( $suggestion->{suggestionid} );
+        my $patron = Koha::Patrons->find( $full_suggestion->{suggestedby} );
+
+        my $transport = (C4::Context->preference("FallbackToSMSIfNoEmail")) && ($patron->smsalertnumber) && (!$patron->email) ? 'sms' : 'email';
+
         if (
             my $letter = C4::Letters::GetPreparedLetter(
                 module      => 'suggestions',
                 letter_code => $full_suggestion->{STATUS},
                 branchcode  => $full_suggestion->{branchcode},
+                lang        => $patron->lang,
                 tables      => {
                     'branches'    => $full_suggestion->{branchcode},
                     'borrowers'   => $full_suggestion->{suggestedby},
@@ -515,7 +527,7 @@ sub ModSuggestion {
                     borrowernumber => $full_suggestion->{suggestedby},
                     suggestionid   => $full_suggestion->{suggestionid},
                     LibraryName    => C4::Context->preference("LibraryName"),
-                    message_transport_type => 'email',
+                    message_transport_type => $transport,
                 }
             ) or warn "can't enqueue letter $letter";
         }
@@ -547,7 +559,7 @@ sub ConnectSuggestionAndBiblio {
 
 &DelSuggestion($borrowernumber,$ordernumber)
 
-Delete a suggestion. A borrower can delete a suggestion only if he is its owner.
+Delete a suggestion. A borrower can delete a suggestion only if they are its owner.
 
 =cut
 
@@ -579,12 +591,13 @@ sub DelSuggestion {
     &DelSuggestionsOlderThan($days)
 
     Delete all suggestions older than TODAY-$days , that have be accepted or rejected.
+    We do now allow a negative number. If you want to delete all suggestions, just use Koha::Suggestions->delete or so.
 
 =cut
 
 sub DelSuggestionsOlderThan {
     my ($days) = @_;
-    return unless $days;
+    return unless $days && $days > 0;
     my $dbh = C4::Context->dbh;
     my $sth = $dbh->prepare(
         q{