Bug 11221: ensure that SQLHelper uses NULL rather than 0000-00-00 as default date value
The default values for date fields is undef, so if a date field contains an empty string, we should insert NULL in the DB, not 0000-00-00. The format_date_in_iso routine should be only called if a date is defined, is not equal to an empty string and does not match the iso regex. This patch fixes a bug where editing or creating a patron record without setting the birth date results in 0000-00-00 rather than null being set as the dateofbirth value. Partial test plan: 1. Create a new patron. Leave dateofbirth empty. 2. Save the record. 3. Open the record for editing. 4. Save the record without making changes. 5. Koha gives no error. Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz> Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> Passes all tests and QA script. Now when no date is given NULL is saved to the database. Tested: - Adding a patron without date of birth - Editing the patron, entering a date of birth - Editing the patron, deleting date of birth All worked as expected. Signed-off-by: Galen Charlton <gmc@esilibrary.com>
This commit is contained in:
parent
a1d4af3d73
commit
d63b4a766c
|
|
@ -404,9 +404,15 @@ sub _filter_hash{
|
|||
my $elements=join "|",@columns_filtered;
|
||||
foreach my $field (grep {/\b($elements)\b/} keys %$filter_input){
|
||||
## supposed to be a hash of simple values, hashes of arrays could be implemented
|
||||
$filter_input->{$field}=format_date_in_iso($filter_input->{$field})
|
||||
if $columns->{$field}{Type}=~/date/ &&
|
||||
($filter_input->{$field} && $filter_input->{$field} !~C4::Dates->regexp("iso"));
|
||||
if ( $columns->{$field}{Type}=~/date/ ) {
|
||||
if ( defined $filter_input->{$field} ) {
|
||||
if ( $filter_input->{$field} eq q{} ) {
|
||||
$filter_input->{$field} = undef;
|
||||
} elsif ( $filter_input->{$field} !~ C4::Dates->regexp("iso") ) {
|
||||
$filter_input->{$field} = format_date_in_iso($filter_input->{$field});
|
||||
}
|
||||
}
|
||||
}
|
||||
my ($tmpkeys, $localvalues)=_Process_Operands($filter_input->{$field},"$tablename.$field",$searchtype,$columns);
|
||||
if (@$tmpkeys){
|
||||
push @values, @$localvalues;
|
||||
|
|
|
|||
Loading…
Reference in New Issue