[Koha-bugs] [Bug 22280] New: The ILL module assumes every status needs a next/previous status

bugzilla-daemon at bugs.koha-community.org bugzilla-daemon at bugs.koha-community.org
Wed Feb 6 10:57:03 CET 2019


https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=22280

            Bug ID: 22280
           Summary: The ILL module assumes every status needs a
                    next/previous status
 Change sponsored?: ---
           Product: Koha
           Version: master
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P5 - low
         Component: ILL
          Assignee: koha-bugs at lists.koha-community.org
          Reporter: magnus at libriotech.no
  Target Milestone: ---

Swedish ILL is very centrally driven, so some status changes are only done by
updates from the API. That means that these statuses do not need a prev_actions
or a next_actions:

        IN_NEG => {
            prev_actions => [ ],
            id             => 'IN_NEG',
            name           => 'Inlån Negativt svar',
            ui_method_name => 'Negativt svar',
            method         => 'requestitem',
            next_actions   => [ ],
            ui_method_icon => 'fa-send-o'
        },

But leaving these blank as above leads to errors, around line 386 of
/usr/share/koha/lib/Koha/Illrequest.pm: 

        # Update all core methods' next_actions.
        foreach my $prev_action ( @{$backend_status->{prev_actions}} ) {
            if ( grep $prev_action, @core_status_ids ) {
                my @next_actions =
                     @{$status_graph->{$prev_action}->{next_actions}}; ###
ERROR HERE
                push @next_actions, $backend_status_key;
                $status_graph->{$prev_action}->{next_actions}
                    = \@next_actions;
            }
        }
        # Update all core methods' prev_actions
        foreach my $next_action ( @{$backend_status->{next_actions}} ) {
            if ( grep $next_action, @core_status_ids ) {
                my @prev_actions =
                     @{$status_graph->{$next_action}->{prev_actions}}; ### AND
HERE
                push @prev_actions, $backend_status_key;
                $status_graph->{$next_action}->{prev_actions}
                    = \@prev_actions;
            }
        }

The error is something like "Can't treat an undefined value as an array". 

Changing those lines to check if an array is defined makes the error go away,
and I have not seen any bad side effects:

   @{$status_graph->{$prev_action}->{next_actions}} if
$status_graph->{$prev_action}->{next_actions}; ### NO MORE ERROR HERE
   @{$status_graph->{$next_action}->{prev_actions}} if
$status_graph->{$next_action}->{prev_actions}; ### OR HERE

Does that change make sense to others, or am I missing some other way to work
around this?

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are watching all bug changes.


More information about the Koha-bugs mailing list