View | Details | Raw Unified | Return to bug 40136
Collapse All | Expand All

(-)a/Koha/Patron.pm (-26 / +5 lines)
Lines 375-394 sub store { Link Here
375
375
376
                # Actionlogs
376
                # Actionlogs
377
                if ( C4::Context->preference("BorrowersLog") || C4::Context->preference("CardnumberLog") ) {
377
                if ( C4::Context->preference("BorrowersLog") || C4::Context->preference("CardnumberLog") ) {
378
                    my $from_storage = $self_from_storage->unblessed;
378
                    my $from_storage = $self_from_storage->_unblessed_for_log;
379
                    my $from_object  = $self->unblessed;
379
                    my $from_object  = $self->_unblessed_for_log;
380
380
381
                    # Object's dateexpiry is a DateTime object which stringifies to iso8601 datetime,
381
                    my @keys = C4::Context->preference("BorrowersLog") ? keys %{$from_storage} : ('cardnumber');
382
                    # but the column is only a date so we need to convert the datetime to just a date
383
                    # to know if it has actually changed.
384
                    $from_object->{dateexpiry} = dt_from_string( $from_object->{dateexpiry} )->ymd
385
                        if $from_object->{dateexpiry};
386
387
                    my @skip_fields = (qw/lastseen updated_on password/);
388
                    my @keys        = C4::Context->preference("BorrowersLog") ? keys %{$from_storage} : ('cardnumber');
389
                    my $changed;
382
                    my $changed;
390
                    for my $key (@keys) {
383
                    for my $key (@keys) {
391
                        next if any { /$key/ } @skip_fields;
392
                        my $storage_value = $from_storage->{$key} // q{};
384
                        my $storage_value = $from_storage->{$key} // q{};
393
                        my $object_value  = $from_object->{$key}  // q{};
385
                        my $object_value  = $from_object->{$key}  // q{};
394
                        if (   ( $storage_value || $object_value )
386
                        if (   ( $storage_value || $object_value )
Lines 399-418 sub store { Link Here
399
                    }
391
                    }
400
392
401
                    if ( defined($changed) ) {
393
                    if ( defined($changed) ) {
402
                        my %log_from = map {
394
                        my %log_from = map { $_ => $from_storage->{$_} } keys %{$changed};
403
                            my $v = $from_storage->{$_};
395
                        my %log_to   = map { $_ => $from_object->{$_} } keys %{$changed};
404
                            $_ => ( blessed($v) ? "$v" : $v )
405
                        } grep {
406
                            my $k = $_;
407
                            !any { /$k/ } @skip_fields
408
                        } keys %{$from_storage};
409
                        my %log_to = map {
410
                            my $v = $from_object->{$_};
411
                            $_ => ( blessed($v) ? "$v" : $v )
412
                        } grep {
413
                            my $k = $_;
414
                            !any { /$k/ } @skip_fields
415
                        } keys %{$from_object};
416
396
417
                        logaction( "MEMBERS", "MODIFY", $self->borrowernumber, \%log_to, undef, \%log_from )
397
                        logaction( "MEMBERS", "MODIFY", $self->borrowernumber, \%log_to, undef, \%log_from )
418
                            if C4::Context->preference("BorrowersLog");
398
                            if C4::Context->preference("BorrowersLog");
419
- 

Return to bug 40136