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

(-)a/Koha/Schema/Result/Suggestion.pm (+24 lines)
Lines 572-577 __PACKAGE__->belongs_to( Link Here
572
  },
572
  },
573
);
573
);
574
574
575
__PACKAGE__->belongs_to(
576
    "manager",
577
    "Koha::Schema::Result::Borrower",
578
    { "foreign.borrowernumber" => "self.managedby" },
579
    {
580
        is_deferrable => 1,
581
        join_type     => "LEFT",
582
        on_delete     => "SET NULL",
583
        on_update     => "CASCADE",
584
    },
585
);
586
587
__PACKAGE__->belongs_to(
588
    "last_modifier",
589
    "Koha::Schema::Result::Borrower",
590
    { "foreign.borrowernumber" => "self.managedby" },
591
    {
592
        is_deferrable => 1,
593
        join_type     => "LEFT",
594
        on_delete     => "SET NULL",
595
        on_update     => "CASCADE",
596
    },
597
);
598
575
__PACKAGE__->add_columns(
599
__PACKAGE__->add_columns(
576
    '+archived' => { is_boolean => 1 },
600
    '+archived' => { is_boolean => 1 },
577
);
601
);
(-)a/suggestion/suggestion.pl (-43 / +60 lines)
Lines 425-491 if ( $op eq 'else' ) { Link Here
425
        $suggestion_ref->{branchcode} = C4::Context->userenv->{'branch'};
425
        $suggestion_ref->{branchcode} = C4::Context->userenv->{'branch'};
426
    }
426
    }
427
427
428
    my $search_params = {%$suggestion_ref};
429
430
    # filter on date fields
431
    foreach my $field (qw( suggesteddate manageddate accepteddate )) {
432
        my $from = delete $search_params->{"${field}_from"};
433
        my $to   = delete $search_params->{"${field}_to"};
434
435
        my $from_dt = $from && eval { dt_from_string($from) };
436
        my $to_dt   = $to   && eval { dt_from_string($to) };
437
438
        if ( $from_dt || $to_dt ) {
439
            my $dtf = Koha::Database->new->schema->storage->datetime_parser;
440
            if ( $from_dt && $to_dt ) {
441
                $search_params->{$field} =
442
                    { -between => [ $dtf->format_date($from_dt), $dtf->format_date($to_dt) ] };
443
            } elsif ($from_dt) {
444
                $search_params->{$field} = { '>=' => $dtf->format_date($from_dt) };
445
            } elsif ($to_dt) {
446
                $search_params->{$field} = { '<=' => $dtf->format_date($to_dt) };
447
            }
448
        }
449
    }
450
    if ( $search_params->{budgetid} && $search_params->{budgetid} eq '__NONE__' ) {
451
        $search_params->{budgetid} = [ undef, '' ];
452
    }
453
    for my $f (qw (branchcode budgetid)) {
454
        delete $search_params->{$f}
455
            if $search_params->{$f} eq '__ANY__'
456
            || $search_params->{$f} eq '';
457
    }
458
    for my $bi (qw (title author isbn publishercode copyrightdate collectiontitle)) {
459
        $search_params->{$bi} = { 'LIKE' => "%" . $search_params->{$bi} . "%" } if $search_params->{$bi};
460
    }
461
462
    $search_params->{archived} = 0 if !$filter_archived;
463
    foreach my $key ( keys %$search_params ) {
464
        if ( $key eq 'branchcode' ) {
465
            my $branch_param = delete $search_params->{$key};
466
            $search_params->{"me.branchcode"} = $branch_param;
467
        }
468
    }
469
470
    # Retrieve the count to display on each tab
471
    my $suggestion_tabs = Koha::Suggestions->search_limited(
472
        $search_params,
473
        {
474
            select   => [ $displayby, { count => $displayby, -as => 'count' } ],
475
            as       => [ $displayby, 'count' ],
476
            group_by => [$displayby],
477
        }
478
    );
479
    my $tab_counts = { map { $_->get_column($displayby) => $_->get_column('count') } $suggestion_tabs->as_list };
480
428
    my @allsuggestions;
481
    my @allsuggestions;
429
    foreach my $criteriumvalue (@criteria_dv) {
482
    foreach my $criteriumvalue (@criteria_dv) {
430
        my $search_params = {%$suggestion_ref};
431
483
484
        # By default, display suggestions from current working branch
485
        my $definedvalue = defined $$suggestion_ref{$displayby} && $$suggestion_ref{$displayby} ne "";
432
        next
486
        next
433
            if $search_params->{STATUS}
487
            if $search_params->{STATUS}
434
            && $displayby eq 'STATUS'
488
            && $displayby eq 'STATUS'
435
            && $criteriumvalue ne $search_params->{STATUS};
489
            && $criteriumvalue ne $search_params->{STATUS};
436
490
437
        # By default, display suggestions from current working branch
438
        my $definedvalue = defined $$suggestion_ref{$displayby} && $$suggestion_ref{$displayby} ne "";
439
440
        next
491
        next
441
            if ( $definedvalue && $$suggestion_ref{$displayby} ne $criteriumvalue )
492
            if ( $definedvalue && $$suggestion_ref{$displayby} ne $criteriumvalue )
442
            and ( $displayby ne 'branchcode' && $branchfilter ne '__ANY__' );
493
            and ( $displayby ne 'branchcode' && $branchfilter ne '__ANY__' );
443
494
444
        $search_params->{$displayby} = $criteriumvalue;
495
        my $criterium_search_params = {%$search_params};
445
496
        $criterium_search_params->{"me.$displayby"} = $criteriumvalue;
446
        # filter on date fields
447
        foreach my $field (qw( suggesteddate manageddate accepteddate )) {
448
            my $from = delete $search_params->{"${field}_from"};
449
            my $to   = delete $search_params->{"${field}_to"};
450
451
            my $from_dt = $from && eval { dt_from_string($from) };
452
            my $to_dt   = $to   && eval { dt_from_string($to) };
453
454
            if ( $from_dt || $to_dt ) {
455
                my $dtf = Koha::Database->new->schema->storage->datetime_parser;
456
                if ( $from_dt && $to_dt ) {
457
                    $search_params->{$field} =
458
                        { -between => [ $dtf->format_date($from_dt), $dtf->format_date($to_dt) ] };
459
                } elsif ($from_dt) {
460
                    $search_params->{$field} = { '>=' => $dtf->format_date($from_dt) };
461
                } elsif ($to_dt) {
462
                    $search_params->{$field} = { '<=' => $dtf->format_date($to_dt) };
463
                }
464
            }
465
        }
466
        if ( $search_params->{budgetid} && $search_params->{budgetid} eq '__NONE__' ) {
467
            $search_params->{budgetid} = [ undef, '' ];
468
        }
469
        for my $f (qw (branchcode budgetid)) {
470
            delete $search_params->{$f}
471
                if $search_params->{$f} eq '__ANY__'
472
                || $search_params->{$f} eq '';
473
        }
474
        for my $bi (qw (title author isbn publishercode copyrightdate collectiontitle)) {
475
            $search_params->{$bi} = { 'LIKE' => "%" . $search_params->{$bi} . "%" } if $search_params->{$bi};
476
        }
477
478
        $search_params->{archived} = 0 if !$filter_archived;
479
        my @suggestions = Koha::Suggestions->search_limited($search_params)->as_list;
480
497
481
        push @allsuggestions,
498
        push @allsuggestions,
482
            {
499
            {
483
            "suggestiontype"      => $criteriumvalue                                 || "suggest",
500
            "suggestiontype"      => $criteriumvalue                                 || "suggest",
484
            "suggestiontypelabel" => GetCriteriumDesc( $criteriumvalue, $displayby ) || "",
501
            "suggestiontypelabel" => GetCriteriumDesc( $criteriumvalue, $displayby ) || "",
485
            'suggestions'         => \@suggestions,
486
            'reasonsloop'         => $reasonsloop,
502
            'reasonsloop'         => $reasonsloop,
503
            'search_params'       => $criterium_search_params,
504
            'tab_count'           => $tab_counts->{$criteriumvalue},
487
            }
505
            }
488
            if scalar @suggestions > 0;
506
            if $tab_counts->{$criteriumvalue} > 0;
489
507
490
        delete $$suggestion_ref{$displayby} unless $definedvalue;
508
        delete $$suggestion_ref{$displayby} unless $definedvalue;
491
    }
509
    }
492
- 

Return to bug 33430