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

(-)a/C4/Circulation.pm (-29 / +36 lines)
Lines 451-497 sub TooMany { Link Here
451
                $checkouts = $patron->checkouts; # if branch is the patron's home branch, then count all loans by patron
451
                $checkouts = $patron->checkouts; # if branch is the patron's home branch, then count all loans by patron
452
            } else {
452
            } else {
453
                $checkouts = $patron->checkouts->search(
453
                $checkouts = $patron->checkouts->search(
454
                    { 'item.homebranch' => $maxissueqty_rule->branchcode },
454
                    { 'item.homebranch' => $maxissueqty_rule->branchcode } );
455
                    { prefetch          => 'item' } );
456
            }
455
            }
457
        } else {
456
        } else {
458
            $checkouts = $patron->checkouts; # if rule is not branch specific then count all loans by patron
457
            $checkouts = $patron->checkouts; # if rule is not branch specific then count all loans by patron
459
        }
458
        }
459
        $checkouts = $checkouts->search(undef, { prefetch => 'item' });
460
460
        my $sum_checkouts;
461
        my $sum_checkouts;
461
        my $rule_itemtype = $maxissueqty_rule->itemtype;
462
        my $rule_itemtype = $maxissueqty_rule->itemtype;
462
        while ( my $c = $checkouts->next ) {
463
            my $itemtype = $c->item->effective_itemtype;
464
            my @types;
465
            unless ( $rule_itemtype ) {
466
                # matching rule has the default item type, so count only
467
                # those existing loans that don't fall under a more
468
                # specific rule
469
                @types = Koha::CirculationRules->search(
470
                    {
471
                        branchcode => $maxissueqty_rule->branchcode,
472
                        categorycode => [ $maxissueqty_rule->categorycode, $cat_borrower ],
473
                        itemtype  => { '!=' => undef },
474
                        rule_name => 'maxissueqty'
475
                    }
476
                )->get_column('itemtype');
477
463
478
                next if grep {$_ eq $itemtype} @types;
464
        my @types;
479
            } else {
465
        unless ( $rule_itemtype ) {
480
                my @types;
466
            # matching rule has the default item type, so count only
481
                if ( $parent_maxissueqty_rule ) {
467
            # those existing loans that don't fall under a more
468
            # specific rule
469
            @types = Koha::CirculationRules->search(
470
                {
471
                    branchcode => $maxissueqty_rule->branchcode,
472
                    categorycode => [ $maxissueqty_rule->categorycode, $cat_borrower ],
473
                    itemtype  => { '!=' => undef },
474
                    rule_name => 'maxissueqty'
475
                }
476
            )->get_column('itemtype');
477
        } else {
478
            if ( $parent_maxissueqty_rule ) {
482
                # if we have a parent item type then we count loans of the
479
                # if we have a parent item type then we count loans of the
483
                # specific item type or its siblings or parent
480
                # specific item type or its siblings or parent
484
                    my $children = Koha::ItemTypes->search({ parent_type => $parent_type });
481
                my $children = Koha::ItemTypes->search({ parent_type => $parent_type });
485
                    @types = $children->get_column('itemtype');
482
                @types = $children->get_column('itemtype');
486
                    push @types, $parent_type;
483
                push @types, $parent_type;
487
                } elsif ( $child_types ) {
484
            } elsif ( $child_types ) {
488
                # If we are a parent type, we need to count all child types and our own type
485
                # If we are a parent type, we need to count all child types and our own type
489
                    @types = $child_types->get_column('itemtype');
486
                @types = $child_types->get_column('itemtype');
490
                    push @types, $type; # And don't forget to count our own types
487
                push @types, $type; # And don't forget to count our own types
491
                } else { push @types, $type; } # Otherwise only count the specific itemtype
488
            } else {
489
                # Otherwise only count the specific itemtype
490
                push @types, $type;
491
            }
492
        }
493
494
        while ( my $c = $checkouts->next ) {
495
            my $itemtype = $c->item->effective_itemtype;
492
496
497
            unless ( $rule_itemtype ) {
498
                next if grep {$_ eq $itemtype} @types;
499
            } else {
493
                next unless grep {$_ eq $itemtype} @types;
500
                next unless grep {$_ eq $itemtype} @types;
494
            }
501
            }
502
495
            $sum_checkouts->{total}++;
503
            $sum_checkouts->{total}++;
496
            $sum_checkouts->{onsite_checkouts}++ if $c->onsite_checkout;
504
            $sum_checkouts->{onsite_checkouts}++ if $c->onsite_checkout;
497
            $sum_checkouts->{itemtype}->{$itemtype}++;
505
            $sum_checkouts->{itemtype}->{$itemtype}++;
498
- 

Return to bug 30004