Bug 22907: Fix new suggestion with strict sql modes
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 14 May 2019 17:06:24 +0000 (12:06 -0500)
committerNick Clemens <nick@bywatersolutions.com>
Thu, 30 May 2019 10:19:06 +0000 (10:19 +0000)
With sql_strict_modes turned on, if you try to create a new suggestion
you will get:
Incorrect integer value: '' for column '$INT_COLUMN' at row 1

Test plan:
Turn on strict_sql_modes, create a new suggestion, then edit it.

Signed-off-by: Liz Rea <wizzyrea@gmail.com>

JD: Edit after SO, remove unecessary changes (not related to this bug)

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

C4/Suggestions.pm

index 05a7d20..495d380 100644 (file)
@@ -455,12 +455,12 @@ sub NewSuggestion {
 
     $suggestion->{suggesteddate} = dt_from_string unless $suggestion->{suggesteddate};
 
-    my $rs = Koha::Database->new->schema->resultset('Suggestion');
-    my $new_id = $rs->create($suggestion)->id;
+    my $suggestion_object = Koha::Suggestion->new( $suggestion )->store;
+    my $suggestion_id = $suggestion_object->suggestionid;
 
     my $emailpurchasesuggestions = C4::Context->preference("EmailPurchaseSuggestions");
     if ($emailpurchasesuggestions) {
-        my $full_suggestion = GetSuggestion( $new_id );
+        my $full_suggestion = GetSuggestion( $suggestion_id); # We should not need to refetch it!
         if (
             my $letter = C4::Letters::GetPreparedLetter(
                 module      => 'suggestions',
@@ -506,7 +506,7 @@ sub NewSuggestion {
         }
     }
 
-    return $new_id;
+    return $suggestion_id;
 }
 
 =head2 ModSuggestion
@@ -543,9 +543,9 @@ sub ModSuggestion {
             or $suggestion->{$field} eq '' );
     }
 
-    my $rs = Koha::Database->new->schema->resultset('Suggestion')->find($suggestion->{suggestionid});
+    my $suggestion_object = Koha::Suggestions->find( $suggestion->{suggestionid} );
     eval { # FIXME Must raise an exception instead
-        $rs->update($suggestion);
+        $suggestion_object->set($suggestion)->store;
     };
     return 0 if $@;