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

--- Comment #1 from Jonathan Druart <[email protected]> ---
Created attachment 179160
  -->
https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=179160&action=edit
Bug 39302: Fix logic flaw in the display count of checkins

Checkins can disappear from the checkin list if transfer modal is
triggered.

There is a flaw in the logic of the checkin code: we keep 20 (default
value for numReturnedItemsToShow) checkins in the table, but there can
be shift in the "counter" logic when the transfer modal is triggered.

This patch is removing the different hashes and use a single @checkins
array to pass to the template.
When a item is checked in, it is inserted at the beginning of the list
(unshift). Koha::Objects are passed for patron, item and biblio to
improve the readability (and maintenance cost) of the code.

Test plan:
Generate several checkouts (see below)
Some should generate the transfer modal
Check them in
=> Without this patch notice that at some point there will be a problem in the
list,
some checkins will be missing.
=> With this patch applied the checkin list always contain the last 20
checkins
(or whatever is the value of numReturnedItemsToShow, or "8" if pref is
empty, don't ask why 8!)

Code to generate 50 checkouts (all overdue):
```
use C4::Circulation qw( AddIssue );
use Koha::Items;
use Koha::Patrons;
use t::lib::Mocks;
use Koha::DateUtils qw(dt_from_string);
my $patron = Koha::Patrons->find(51);
t::lib::Mocks::mock_userenv({patron => $patron});
my $items = Koha::Items->search;
my $patron_unblessed = $patron->unblessed;
my $i;
while ( my $item = $items->next ) {
    my $due = dt_from_string->subtract(days => 45 +
rand(45))->set_hour(23)->set_minute(59)->set_second(00);
    AddIssue($patron, $item->barcode, $due);
    last if ++$i >= 50;
}
```
Then retrieve the barcodes:
> SELECT items.barcode FROM issues LEFT JOIN items ON 
> items.itemnumber=issues.itemnumber;

QA:
1. Do not be afraid by the length of this patch, most of the changes are
variable renames.
2. return_overdue is now only calculated once per checkin (per page
   load, could be improved)
3. date formatting is done template-side

-- 
You are receiving this mail because:
You are watching all bug changes.
_______________________________________________
Koha-bugs mailing list
[email protected]
https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-bugs
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to