From 802ee53becc3bcd8df21f39d624de7dd7540bbca Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 30 Sep 2014 12:19:21 +0200 Subject: [PATCH] Bug 12627: Fix default values The default value for *by and *date fields is NULL. But without this patch, the values are 0 or 0000-00-00. It comes from the fact that the form set to an empty string the values and DBIX::Class does not consider them as undefined. This patch is very ugly, not sure how we can fix that. --- C4/Suggestions.pm | 33 +++++++++++++++++++++++++++++++++ suggestion/suggestion.pl | 5 ++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index eae80a0..5070e7d 100644 --- a/C4/Suggestions.pm +++ b/C4/Suggestions.pm @@ -28,6 +28,8 @@ use C4::Output; use C4::Dates qw(format_date format_date_in_iso); use C4::Debug; use C4::Letters; +use Koha::DateUtils qw( dt_from_string ); + use List::MoreUtils qw(any); use C4::Dates qw(format_date_in_iso); use base qw(Exporter); @@ -428,6 +430,21 @@ sub NewSuggestion { $suggestion->{STATUS} = "ASKED" unless $suggestion->{STATUS}; + for my $field ( qw( + suggestedby + managedby + manageddate + acceptedby + accepteddate + rejectedby + rejecteddate + ) ) { + # Set the fields to NULL if not given. + $suggestion->{$field} ||= undef; + } + + $suggestion->{suggesteddate} = dt_from_string unless $suggestion->{suggesteddate}; + my $rs = Koha::Database->new->schema->resultset('Suggestion'); return $rs->create($suggestion)->id; } @@ -449,6 +466,22 @@ sub ModSuggestion { my ($suggestion) = @_; return unless( $suggestion and defined($suggestion->{suggestionid}) ); + for my $field ( qw( + suggestedby + managedby + manageddate + acceptedby + accepteddate + rejectedby + rejecteddate + ) ) { + # Set the fields to NULL if not given. + $suggestion->{$field} = undef + if exists $suggestion->{$field} + and ($suggestion->{$field} == '0' + or $suggestion->{$field} == '' ); + } + my $rs = Koha::Database->new->schema->resultset('Suggestion')->find($suggestion->{suggestionid}); my $status_update_table = 1; eval { diff --git a/suggestion/suggestion.pl b/suggestion/suggestion.pl index 14c90bd..f45d294 100755 --- a/suggestion/suggestion.pl +++ b/suggestion/suggestion.pl @@ -124,7 +124,10 @@ $template->param('borrowernumber' => $borrowernumber); ## Operations ## if ( $op =~ /save/i ) { - if ( $suggestion_only->{"STATUS"} ) { + $suggestion_only->{suggesteddate} = dt_from_string( $suggestion_only->{suggesteddate} ) + if $suggestion_only->{suggesteddate}; + + if ( $suggestion_only->{"STATUS"} ) { if ( my $tmpstatus = lc( $suggestion_only->{"STATUS"} ) =~ /ACCEPTED|REJECTED/i ) { $suggestion_only->{ lc( $suggestion_only->{"STATUS"}) . "date" } = dt_from_string; $suggestion_only->{ lc( $suggestion_only->{"STATUS"}) . "by" } = C4::Context->userenv->{number}; -- 2.1.0