Bug 23734

Summary: Defaults set during patron imports throws warnings
Product: Koha Reporter: Nick Clemens (kidclamp) <nick>
Component: Architecture, internals, and plumbingAssignee: Bugs List <koha-bugs>
Status: NEW --- QA Contact: Testopia <testopia>
Severity: normal    
Priority: P5 - low CC: martin.renvoize
Version: Main   
Hardware: All   
OS: All   
GIT URL: Change sponsored?: ---
Patch complexity: --- Documentation contact:
Documentation submission: Text to go in the release notes:
Version(s) released in:
Circulation function:
Bug Depends on: 21465    
Bug Blocks:    

Description Nick Clemens (kidclamp) 2019-10-03 14:02:22 UTC
To recreate:
Create a small import file, with minimal columns, tail the logs, import and note warnings


IN DBIX/Class/Row:

elsif ($self->_is_column_numeric($col)) {  # do a numeric comparison if datatype allows it
    return $old == $new;

But in Koha/Patrons/Import.pm

We assume "" for all defaults

Even if we pass defaults of '0' for these columns
 elsif ( $defaults->{$key} ) {
won't be triggered by a 0 value, it should be 'exists'
Comment 1 Jonathan Druart 2019-11-19 11:40:27 UTC
What you suggest do not remove the warning.

I linked this bug report with bug 21761 as we saw that already in another (but similar) context.

I tried:
modified: Koha/Object.pm
───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
@ Object.pm:139 @ sub store {
                 } else {
                     # If cannot be null, get the default value
                     # What if cannot be null and does not have a default value? Possible?
+                    undef $self->{$col};
                     $self->$col($columns_info->{$col}->{default_value});
                 }
             }

And get rid of of one of the 2 warnings.

There is 2 warnings per attributes: on ->set_column (called from ->store, see previous diff), and a bit later, I guess in update_or_insert

The attributes are the tinyint and not null: privacy_guarantor_fines, privacy_guarantor_checkouts and anonymized.
We could fix that at controller level but I feel like it must be fixed at Koha::Object level.