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:
parent
d536bb46f7
commit
a71b96295f
3 changed files with 53 additions and 4 deletions
|
@ -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 {
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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,
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue