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.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
No regressions found, adding and editing suggestions from
OPAC and staff.
Passes tests and QA script.

Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
This commit is contained in:
Jonathan Druart 2014-09-30 12:19:21 +02:00 committed by Tomas Cohen Arazi
parent d536bb46f7
commit a71b96295f
3 changed files with 53 additions and 4 deletions

View file

@ -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);
@ -426,8 +428,23 @@ Insert a new suggestion on database with value given on input arg.
sub NewSuggestion {
my ($suggestion) = @_;
for my $field ( qw(
suggestedby
managedby
manageddate
acceptedby
accepteddate
rejectedby
rejecteddate
) ) {
# Set the fields to NULL if not given.
$suggestion->{$field} ||= undef;
}
$suggestion->{STATUS} = "ASKED" unless $suggestion->{STATUS};
$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} eq '0'
or $suggestion->{$field} eq '' );
}
my $rs = Koha::Database->new->schema->resultset('Suggestion')->find($suggestion->{suggestionid});
my $status_update_table = 1;
eval {

View file

@ -115,7 +115,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};

View file

@ -21,7 +21,9 @@ use C4::Context;
use C4::Members;
use C4::Letters;
use Test::More tests => 91;
use Koha::DateUtils qw( dt_from_string );
use Test::More tests => 97;
use Test::Warn;
BEGIN {
@ -57,6 +59,10 @@ my $my_suggestion = {
publishercode => 'my publishercode',
suggestedby => $borrowernumber,
biblionumber => $biblionumber1,
managedby => '',
manageddate => '',
accepteddate => dt_from_string,
note => 'my note',
};
@ -66,7 +72,6 @@ is( CountSuggestion('CHECKED'), 0, 'CountSuggestion returns the correct number o
is( CountSuggestion('ACCEPTED'), 0, 'CountSuggestion returns the correct number of suggestions' );
is( CountSuggestion('REJECTED'), 0, 'CountSuggestion returns the correct number of suggestions' );
my $my_suggestionid = NewSuggestion($my_suggestion);
isnt( $my_suggestionid, 0, 'NewSuggestion returns an not null id' );
@ -78,7 +83,8 @@ is( $suggestion->{publishercode}, $my_suggestion->{publishercode}, 'NewSuggestio
is( $suggestion->{suggestedby}, $my_suggestion->{suggestedby}, 'NewSuggestion stores the borrower number correctly' );
is( $suggestion->{biblionumber}, $my_suggestion->{biblionumber}, 'NewSuggestion stores the biblio number correctly' );
is( $suggestion->{STATUS}, 'ASKED', 'NewSuggestion stores a suggestion with the status ASKED by default' );
is( $suggestion->{managedby}, undef, 'NewSuggestion stores empty string as undef for non existent foreign key (integer)' );
is( $suggestion->{manageddate}, undef, 'NewSuggestion stores empty string as undef for date' );
is( CountSuggestion('ASKED'), 1, 'CountSuggestion returns the correct number of suggestions' );
@ -87,6 +93,8 @@ my $mod_suggestion1 = {
title => 'my modified title',
author => 'my modified author',
publishercode => 'my modified publishercode',
managedby => '',
manageddate => '',
};
my $status = ModSuggestion($mod_suggestion1);
is( $status, undef, 'ModSuggestion without the suggestion id returns undef' );
@ -98,6 +106,11 @@ $suggestion = GetSuggestion($my_suggestionid);
is( $suggestion->{title}, $mod_suggestion1->{title}, 'ModSuggestion modifies the title correctly' );
is( $suggestion->{author}, $mod_suggestion1->{author}, 'ModSuggestion modifies the author correctly' );
is( $suggestion->{publishercode}, $mod_suggestion1->{publishercode}, 'ModSuggestion modifies the publishercode correctly' );
is( $suggestion->{managedby}, undef, 'ModSuggestion stores empty string as undef for non existent foreign key (integer)' );
is( $suggestion->{manageddate}, undef, 'ModSuggestion stores empty string as undef for date' );
isnt( $suggestion->{accepteddate}, undef, 'ModSuggestion does not update a non given date value' );
is( $suggestion->{note}, 'my note', 'ModSuggestion should not erase data if not given' );
my $messages = C4::Letters::GetQueuedMessages({
borrowernumber => $borrowernumber,
});