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

(-)a/C4/UsageStats.pm (+1 lines)
Lines 314-319 sub _shared_preferences { Link Here
314
        autoMemberNum
314
        autoMemberNum
315
        BorrowerRenewalPeriodBase
315
        BorrowerRenewalPeriodBase
316
        EnableBorrowerFiles
316
        EnableBorrowerFiles
317
        EnableFilteringReports
317
        EnhancedMessagingPreferences
318
        EnhancedMessagingPreferences
318
        ExtendedPatronAttributes
319
        ExtendedPatronAttributes
319
        intranetreadinghistory
320
        intranetreadinghistory
(-)a/Koha/Manual.pm (+1 lines)
Lines 117-122 our $mapping = { Link Here
117
    'admin/preferences#logs'                   => '/logspreferences.html',
117
    'admin/preferences#logs'                   => '/logspreferences.html',
118
    'admin/preferences#opac'                   => '/opacpreferences.html',
118
    'admin/preferences#opac'                   => '/opacpreferences.html',
119
    'admin/preferences#patrons'                => '/patronspreferences.html',
119
    'admin/preferences#patrons'                => '/patronspreferences.html',
120
    'admin/preferences#reports'                => '/reportspreferences.html',
120
    'admin/preferences#searching'              => '/searchingpreferences.html',
121
    'admin/preferences#searching'              => '/searchingpreferences.html',
121
    'admin/preferences#serials'                => '/serialspreferences.html',
122
    'admin/preferences#serials'                => '/serialspreferences.html',
122
    'admin/preferences#staff_interface'        => '/staffclientpreferences.html',
123
    'admin/preferences#staff_interface'        => '/staffclientpreferences.html',
(-)a/Koha/Report.pm (-1 / +19 lines)
Lines 20-28 use Modern::Perl; Link Here
20
use Koha::Database;
20
use Koha::Database;
21
use Koha::Reports;
21
use Koha::Reports;
22
22
23
use Koha::Object;
24
use Koha::Object::Limit::Library;
25
26
use base qw(Koha::Object Koha::Object::Limit::Library);
27
23
#use Koha::DateUtils qw( dt_from_string output_pref );
28
#use Koha::DateUtils qw( dt_from_string output_pref );
24
29
25
use base qw(Koha::Object);
26
#
30
#
27
# FIXME We could only return an error code instead of the arrayref
31
# FIXME We could only return an error code instead of the arrayref
28
# Only 1 error is returned
32
# Only 1 error is returned
Lines 268-271 sub _type { Link Here
268
    return 'SavedSql';
272
    return 'SavedSql';
269
}
273
}
270
274
275
=head3 _library_limits
276
277
Configurable library limits
278
279
=cut
280
281
sub _library_limits {
282
    return {
283
        class   => "ReportsBranch",
284
        id      => "report_id",
285
        library => "branchcode",
286
    };
287
}
288
271
1;
289
1;
(-)a/Koha/Reports.pm (-1 / +26 lines)
Lines 21-27 use Koha::Database; Link Here
21
21
22
use Koha::Report;
22
use Koha::Report;
23
23
24
use base qw(Koha::Objects);
24
use base qw(Koha::Objects Koha::Objects::Limit::Library);
25
25
26
=head1 NAME
26
=head1 NAME
27
27
Lines 33-38 Koha::Reports - Koha Report Object set class Link Here
33
33
34
=cut
34
=cut
35
35
36
=head3 search_with_localization
37
38
=cut
39
40
sub search_with_localization {
41
    my ( $self, $params, $attributes ) = @_;
42
43
    my $language = C4::Languages::getlanguage();
44
    $Koha::Schema::Result::Itemtype::LANGUAGE = $language;
45
    $attributes->{order_by}                   = 'translated_description' unless exists $attributes->{order_by};
46
    $attributes->{join}                       = 'localization';
47
    $attributes->{'+select'}                  = [
48
        {
49
            coalesce => [qw( localization.translation me.description )],
50
            -as      => 'translated_description'
51
        }
52
    ];
53
    if ( defined $params->{branchcode} ) {
54
        my $branchcode = delete $params->{branchcode};
55
        $self->search_with_library_limits( $params, $attributes, $branchcode );
56
    } else {
57
        $self->SUPER::search( $params, $attributes );
58
    }
59
}
60
36
=head3 _type
61
=head3 _type
37
62
38
Returns name of corresponding DBIC resultset
63
Returns name of corresponding DBIC resultset
(-)a/installer/data/mysql/atomicupdate/bug_16631.pl (+27 lines)
Line 0 Link Here
1
use Modern::Perl;
2
use Koha::Installer::Output qw(say_warning say_success say_info);
3
4
return {
5
    bug_number  => "16631",
6
    description => "Add library limits to reports",
7
    up          => sub {
8
        my ($args) = @_;
9
        my ( $dbh, $out ) = @$args{qw(dbh out)};
10
11
        $dbh->do(
12
            q{CREATE TABLE `reports_branches` (
13
            `report_id` int(11) NOT NULL,
14
            `branchcode` varchar(10) NOT NULL,
15
            KEY `report_id` (`report_id`),
16
            KEY `branchcode` (`branchcode`),
17
            CONSTRAINT `reports_branches_ibfk_1` FOREIGN KEY (`report_id`) REFERENCES `saved_sql` (`id`) ON DELETE CASCADE,
18
            CONSTRAINT `reports_branches_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE
19
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
20
            INSERT IGNORE INTO systempreferences
21
            (variable,value,options,explanation,type) VALUES ('EnableFilteringReports', '0', NULL, 'Enable ability for staff to filter report access based on home library.', 'YesNo');}
22
        );
23
24
        say $out "Added new table 'reports_branches'";
25
        say $out "Added new system preference 'EnableFilteringReports'";
26
    },
27
};
(-)a/installer/data/mysql/kohastructure.sql (+13 lines)
Lines 5772-5777 CREATE TABLE `saved_reports` ( Link Here
5772
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
5772
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
5773
/*!40101 SET character_set_client = @saved_cs_client */;
5773
/*!40101 SET character_set_client = @saved_cs_client */;
5774
5774
5775
DROP TABLE IF EXISTS `reports_branches`;
5776
/*!40101 SET @saved_cs_client     = @@character_set_client */;
5777
/*!40101 SET character_set_client = utf8mb4 */;
5778
CREATE TABLE `reports_branches` (
5779
  `report_id` int(11) NOT NULL,
5780
  `branchcode` varchar(10) NOT NULL,
5781
  KEY `report_id` (`report_id`),
5782
  KEY `branchcode` (`branchcode`),
5783
  CONSTRAINT `reports_branches_ibfk_1` FOREIGN KEY (`report_id`) REFERENCES `saved_sql` (`id`) ON DELETE CASCADE,
5784
  CONSTRAINT `reports_branches_ibfk_2` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE
5785
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
5786
/*!40101 SET character_set_client = @saved_cs_client */;
5787
5775
--
5788
--
5776
-- Table structure for table `saved_sql`
5789
-- Table structure for table `saved_sql`
5777
--
5790
--
(-)a/installer/data/mysql/mandatory/sysprefs.sql (+1 lines)
Lines 253-258 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
253
('EnableAdvancedCatalogingEditor','0','','Enable the Rancor advanced cataloging editor','YesNo'),
253
('EnableAdvancedCatalogingEditor','0','','Enable the Rancor advanced cataloging editor','YesNo'),
254
('EnableBorrowerFiles','0',NULL,'If enabled, allows librarians to upload and attach arbitrary files to a borrower record.','YesNo'),
254
('EnableBorrowerFiles','0',NULL,'If enabled, allows librarians to upload and attach arbitrary files to a borrower record.','YesNo'),
255
('EnableExpiredPasswordReset', '0', NULL, 'Enable ability for patrons with expired password to reset their password directly', 'YesNo'),
255
('EnableExpiredPasswordReset', '0', NULL, 'Enable ability for patrons with expired password to reset their password directly', 'YesNo'),
256
('EnableFilteringReports', '0', NULL, 'Enable ability for staff to filter report access based on home library.', 'YesNo'),
256
('EnableItemGroupHolds','0','','Enable item groups holds feature','YesNo'),
257
('EnableItemGroupHolds','0','','Enable item groups holds feature','YesNo'),
257
('EnableItemGroups','0','','Enable the item groups feature','YesNo'),
258
('EnableItemGroups','0','','Enable the item groups feature','YesNo'),
258
('EnableOpacSearchHistory','1','YesNo','Enable or disable opac search history',''),
259
('EnableOpacSearchHistory','1','YesNo','Enable or disable opac search history',''),
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/prefs-menu.inc (+11 lines)
Lines 165-170 Link Here
165
            </li>
165
            </li>
166
        [% END %]
166
        [% END %]
167
167
168
        [% IF ( reports ) %]
169
            <li class="active">
170
                <a title="Reports" href="/cgi-bin/koha/admin/preferences.pl?tab=reports">Reports</a>
171
                [% PROCESS subtabs %]
172
            </li>
173
        [% ELSE %]
174
            <li>
175
                <a title="Reports" href="/cgi-bin/koha/admin/preferences.pl?tab=reports">Reports</a>
176
            </li>
177
        [% END %]
178
        
168
        [% IF ( searching ) %]
179
        [% IF ( searching ) %]
169
            <li class="active">
180
            <li class="active">
170
                <a title="Searching" href="/cgi-bin/koha/admin/preferences.pl?tab=searching">Searching</a>
181
                <a title="Searching" href="/cgi-bin/koha/admin/preferences.pl?tab=searching">Searching</a>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/reports.pref (+9 lines)
Line 0 Link Here
1
Reports:
2
    Reports Access:
3
     -
4
         - pref: EnableFilteringReports
5
           choices:
6
               1: Enable
7
               0: Disable
8
         - "filtering report access based on staff home library."
9
         - "<br><strong>NOTE:</strong> A NOTE ABOUT THE EFFECTS OF THIS PREFERENCE / SETTING"
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt (-2 / +26 lines)
Lines 3-8 Link Here
3
[% USE AuthorisedValues %]
3
[% USE AuthorisedValues %]
4
[% USE KohaDates %]
4
[% USE KohaDates %]
5
[% USE Koha %]
5
[% USE Koha %]
6
[% USE Branches %]
6
[% USE TablesSettings %]
7
[% USE TablesSettings %]
7
[% USE HtmlScrubber %]
8
[% USE HtmlScrubber %]
8
[% USE JSON.Escape %]
9
[% USE JSON.Escape %]
Lines 850-855 Link Here
850
                            <input type="hidden" name="reportname" value="[% reportname | html %]" />
851
                            <input type="hidden" name="reportname" value="[% reportname | html %]" />
851
                            <input type="hidden" name="group" value="[% group | html %]" />
852
                            <input type="hidden" name="group" value="[% group | html %]" />
852
                            <input type="hidden" name="subgroup" value="[% subgroup | html %]" />
853
                            <input type="hidden" name="subgroup" value="[% subgroup | html %]" />
854
                            <input type="hidden" name="branches" value="[% branches | html %] />
853
                            <input type="hidden" name="notes" value="[% notes | scrub_html type => 'note' | $raw %]" />
855
                            <input type="hidden" name="notes" value="[% notes | scrub_html type => 'note' | $raw %]" />
854
                            <input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
856
                            <input type="hidden" name="cache_expiry" value="[% cache_expiry | html %]" />
855
                            <input type="hidden" name="cache_expiry_units" value="[% cache_expiry_units | html %]" />
857
                            <input type="hidden" name="cache_expiry_units" value="[% cache_expiry_units | html %]" />
Lines 1434-1440 Link Here
1434
                                <span class="required">Required</span>
1436
                                <span class="required">Required</span>
1435
                            </div>
1437
                            </div>
1436
                        </fieldset>
1438
                        </fieldset>
1437
1439
                        [% IF ( Koha.Preference('EnableFilteringReports') ) %]
1440
                            <fieldset class="rows">
1441
                                <legend>Library limitation:</legend>
1442
                                <div
1443
                                ><label for="library_limitation">Library limitation: </label>
1444
                                   <select id="library_limitation" name="branches" multiple size="10">
1445
                                        [% PROCESS options_for_libraries libraries => Branches.all( selected => report.get_library_limits, unfiltered => 1, do_not_select_my_library => 1 ) %]
1446
                                    </select>
1447
                                    <div class="hint">Limits the use of this report to the selected libraries.</div>
1448
                                </div>
1449
                            </fieldset>
1450
                        [% END %]       
1438
                        <fieldset class="action">
1451
                        <fieldset class="action">
1439
                            <input type="hidden" name="op" value="cud-save" />
1452
                            <input type="hidden" name="op" value="cud-save" />
1440
                            <input type="submit" name="submit" class="btn btn-primary" value="Save report" />
1453
                            <input type="submit" name="submit" class="btn btn-primary" value="Save report" />
Lines 1548-1554 Link Here
1548
                            <br />
1561
                            <br />
1549
                            <span class="required" style="margin-left:30px;">Required</span>
1562
                            <span class="required" style="margin-left:30px;">Required</span>
1550
                        </fieldset>
1563
                        </fieldset>
1551
1564
                        [% IF ( Koha.Preference('EnableFilteringReports') ) %]
1565
                            <fieldset class="rows">
1566
                                <legend>Library limitation:</legend>
1567
                                <div
1568
                                ><label for="library_limitation">Library limitation: </label>
1569
                                   <select id="library_limitation" name="branches" multiple size="10">
1570
                                        [% PROCESS options_for_libraries libraries => Branches.all( selected => report.get_library_limits, unfiltered => 1, do_not_select_my_library => 1 ) %]
1571
                                    </select>
1572
                                    <div class="hint">Limits the use of this report to the selected libraries.</div>
1573
                                </div>
1574
                            </fieldset>
1575
                        [% END %]                        
1552
                        <fieldset class="action">
1576
                        <fieldset class="action">
1553
                            <button class="btn btn-primary" type="submit" name="op" value="cud-update_sql">Update SQL</button>
1577
                            <button class="btn btn-primary" type="submit" name="op" value="cud-update_sql">Update SQL</button>
1554
                            <button class="btn btn-default" type="submit" name="op" value="cud-update_and_run_sql">Update and run SQL</button>
1578
                            <button class="btn btn-default" type="submit" name="op" value="cud-update_and_run_sql">Update and run SQL</button>
(-)a/reports/guided_reports.pl (-24 / +72 lines)
Lines 127-133 if ( !$op ) { Link Here
127
        'showsql'       => 1,
127
        'showsql'       => 1,
128
        'mana_success'  => scalar $input->param('mana_success'),
128
        'mana_success'  => scalar $input->param('mana_success'),
129
        'mana_id'       => $report->{mana_id},
129
        'mana_id'       => $report->{mana_id},
130
        'mana_comments' => $report->{comments}
130
        'mana_comments' => $report->{comments},
131
    );
131
    );
132
132
133
} elsif ( $op eq 'edit_form' ) {
133
} elsif ( $op eq 'edit_form' ) {
Lines 148-158 if ( !$op ) { Link Here
148
        'editsql'               => 1,
148
        'editsql'               => 1,
149
        'mana_id'               => $report->{mana_id},
149
        'mana_id'               => $report->{mana_id},
150
        'mana_comments'         => $report->{comments},
150
        'mana_comments'         => $report->{comments},
151
        'tables'                => $tables
151
        'tables'                => $tables,
152
        'report'                => $report,
152
    );
153
    );
153
154
154
} elsif ( $op eq 'cud-update_sql' || $op eq 'cud-update_and_run_sql' ) {
155
} elsif ( $op eq 'cud-update_sql' || $op eq 'cud-update_and_run_sql' ) {
155
    my $id                 = $input->param('id');
156
    my $id                 = $input->param('id');
157
    my $report             = Koha::Reports->find($id);
156
    my $sql                = $input->param('sql');
158
    my $sql                = $input->param('sql');
157
    my $reportname         = $input->param('reportname');
159
    my $reportname         = $input->param('reportname');
158
    my $group              = $input->param('group');
160
    my $group              = $input->param('group');
Lines 163-169 if ( !$op ) { Link Here
163
    my $public             = $input->param('public');
165
    my $public             = $input->param('public');
164
    my $save_anyway        = $input->param('save_anyway');
166
    my $save_anyway        = $input->param('save_anyway');
165
    my @errors;
167
    my @errors;
166
    my $tables = get_tables();
168
    my $tables   = get_tables();
169
    my @branches = grep { $_ ne q{} } $input->multi_param('branches');
167
170
168
    # if we have the units, then we came from creating a report from SQL and thus need to handle converting units
171
    # if we have the units, then we came from creating a report from SQL and thus need to handle converting units
169
    if ($cache_expiry_units) {
172
    if ($cache_expiry_units) {
Lines 211-216 if ( !$op ) { Link Here
211
                'problematic_authvals' => $problematic_authvals,
214
                'problematic_authvals' => $problematic_authvals,
212
                'warn_authval_problem' => 1,
215
                'warn_authval_problem' => 1,
213
                'phase_update'         => 1,
216
                'phase_update'         => 1,
217
                'branches'             => @branches,
218
                'report'               => $report,
214
            );
219
            );
215
220
216
        } else {
221
        } else {
Lines 225-234 if ( !$op ) { Link Here
225
                    subgroup     => $subgroup,
230
                    subgroup     => $subgroup,
226
                    notes        => $notes,
231
                    notes        => $notes,
227
                    public       => $public,
232
                    public       => $public,
228
                    cache_expiry => $cache_expiry,
233
                    cache_expiry => $cache_expiry
229
                }
234
                }
230
            );
235
            );
231
236
237
            $report->store;
238
            $report->replace_library_limits( \@branches );
239
232
            my $editsql = 1;
240
            my $editsql = 1;
233
            if ( $op eq 'cud-update_and_run_sql' ) {
241
            if ( $op eq 'cud-update_and_run_sql' ) {
234
                $editsql = 0;
242
                $editsql = 0;
Lines 245-251 if ( !$op ) { Link Here
245
                'cache_expiry'          => $cache_expiry,
253
                'cache_expiry'          => $cache_expiry,
246
                'public'                => $public,
254
                'public'                => $public,
247
                'usecache'              => $usecache,
255
                'usecache'              => $usecache,
248
                'tables'                => $tables
256
                'tables'                => $tables,
257
                'report'                => $report
249
            );
258
            );
250
            logaction( "REPORTS", "MODIFY", $id, "$reportname | $sql" ) if C4::Context->preference("ReportsLog");
259
            logaction( "REPORTS", "MODIFY", $id, "$reportname | $sql" ) if C4::Context->preference("ReportsLog");
251
        }
260
        }
Lines 514-519 if ( !$op ) { Link Here
514
    my $public             = $input->param('public');
523
    my $public             = $input->param('public');
515
    my $save_anyway        = $input->param('save_anyway');
524
    my $save_anyway        = $input->param('save_anyway');
516
    my $tables             = get_tables();
525
    my $tables             = get_tables();
526
    my @branches           = grep { $_ ne q{} } $input->multi_param('branches');
517
527
518
    # if we have the units, then we came from creating a report from SQL and thus need to handle converting units
528
    # if we have the units, then we came from creating a report from SQL and thus need to handle converting units
519
    if ($cache_expiry_units) {
529
    if ($cache_expiry_units) {
Lines 591-596 if ( !$op ) { Link Here
591
                    public         => $public,
601
                    public         => $public,
592
                }
602
                }
593
            );
603
            );
604
            my $report = Koha::Reports->find($id);
605
            $report->replace_library_limits( \@branches );
606
594
            logaction( "REPORTS", "ADD", $id, "$name | $sql" ) if C4::Context->preference("ReportsLog");
607
            logaction( "REPORTS", "ADD", $id, "$name | $sql" ) if C4::Context->preference("ReportsLog");
595
            $template->param(
608
            $template->param(
596
                'save_successful'       => 1,
609
                'save_successful'       => 1,
Lines 603-609 if ( !$op ) { Link Here
603
                'cache_expiry'          => $cache_expiry,
616
                'cache_expiry'          => $cache_expiry,
604
                'public'                => $public,
617
                'public'                => $public,
605
                'usecache'              => $usecache,
618
                'usecache'              => $usecache,
606
                'tables'                => $tables
619
                'tables'                => $tables,
620
                'report'                => $report,
607
            );
621
            );
608
        }
622
        }
609
    }
623
    }
Lines 746-765 if ( !$op ) { Link Here
746
760
747
} elsif ( $op eq 'add_form_sql' || $op eq 'duplicate' ) {
761
} elsif ( $op eq 'add_form_sql' || $op eq 'duplicate' ) {
748
762
749
    my ( $group, $subgroup, $sql, $reportname, $notes );
763
    my ( $group, $subgroup, $sql, $reportname, $notes, @branches, $report );
750
    if ( $input->param('sql') ) {
764
    if ( $input->param('sql') ) {
751
        $group      = $input->param('report_group');
765
        $group      = $input->param('report_group');
752
        $subgroup   = $input->param('report_subgroup');
766
        $subgroup   = $input->param('report_subgroup');
753
        $sql        = $input->param('sql')        // '';
767
        $sql        = $input->param('sql')        // '';
754
        $reportname = $input->param('reportname') // '';
768
        $reportname = $input->param('reportname') // '';
755
        $notes      = $input->param('notes')      // '';
769
        $notes      = $input->param('notes')      // '';
770
        @branches   = grep { $_ ne q{} } $input->multi_param('branches');
771
756
    } elsif ( my $report_id = $input->param('id') ) {
772
    } elsif ( my $report_id = $input->param('id') ) {
757
        my $report = Koha::Reports->find($report_id);
773
        $report     = Koha::Reports->find($report_id);
758
        $group      = $report->report_group;
774
        $group      = $report->report_group;
759
        $subgroup   = $report->report_subgroup;
775
        $subgroup   = $report->report_subgroup;
760
        $sql        = $report->savedsql    // '';
776
        $sql        = $report->savedsql    // '';
761
        $reportname = $report->report_name // '';
777
        $reportname = $report->report_name // '';
762
        $notes      = $report->notes       // '';
778
        $notes      = $report->notes       // '';
779
        @branches   = grep { $_ ne q{} } $input->multi_param('branches');
780
763
    }
781
    }
764
782
765
    my $tables = get_tables();
783
    my $tables = get_tables();
Lines 775-780 if ( !$op ) { Link Here
775
        'usecache'              => $usecache,
793
        'usecache'              => $usecache,
776
        'tables'                => $tables,
794
        'tables'                => $tables,
777
795
796
        # 'branches'              => \@branches,
797
        'report' => $report,
798
778
    );
799
    );
779
}
800
}
780
801
Lines 1081-1104 if ( $op eq 'list' || $op eq 'convert' ) { Link Here
1081
    my $subgroup = $input->param('subgroup');
1102
    my $subgroup = $input->param('subgroup');
1082
    $filter->{group}    = $group;
1103
    $filter->{group}    = $group;
1083
    $filter->{subgroup} = $subgroup;
1104
    $filter->{subgroup} = $subgroup;
1084
    my $reports = get_saved_reports($filter);
1105
1085
    my $has_obsolete_reports;
1106
    my $pref_enable_filtering_reports = C4::Context->preference("EnableFilteringReports");
1086
    for my $report (@$reports) {
1107
    if ( $pref_enable_filtering_reports == "1" ) {
1087
        $report->{results} = C4::Reports::Guided::get_results( $report->{id} );
1108
        my $reports_with_library_limits_results =
1088
        if ( $report->{savedsql} =~ m|biblioitems| and $report->{savedsql} =~ m|marcxml| ) {
1109
            Koha::Reports->search_with_library_limits( {}, {}, C4::Context::mybranch() );
1089
            $report->{seems_obsolete} = 1;
1110
        my $reports_list = $reports_with_library_limits_results->unblessed;
1090
            $has_obsolete_reports++;
1111
        my $has_obsolete_reports;
1112
        while ( my $report = $reports_with_library_limits_results->next ) {
1113
            $report->{results} = C4::Reports::Guided::get_results( $report->{id} );
1114
            if ( $report->{savedsql} =~ m|biblioitems| and $report->{savedsql} =~ m|marcxml| ) {
1115
                $report->{seems_obsolete} = 1;
1116
                $has_obsolete_reports++;
1117
            }
1118
            $template->param(
1119
                'manamsg'               => $input->param('manamsg') || '',
1120
                'saved1'                => 1,
1121
                'savedreports'          => $reports_list,
1122
                'usecache'              => $usecache,
1123
                'groups_with_subgroups' => groups_with_subgroups( $group, $subgroup ),
1124
                filters                 => $filter,
1125
                has_obsolete_reports    => $has_obsolete_reports,
1126
            );
1127
        }
1128
    } else {
1129
1130
        my $reports = get_saved_reports($filter);
1131
        my $has_obsolete_reports;
1132
1133
        for my $report (@$reports) {
1134
            $report->{results} = C4::Reports::Guided::get_results( $report->{id} );
1135
            if ( $report->{savedsql} =~ m|biblioitems| and $report->{savedsql} =~ m|marcxml| ) {
1136
                $report->{seems_obsolete} = 1;
1137
                $has_obsolete_reports++;
1138
            }
1091
        }
1139
        }
1140
        $template->param(
1141
            'manamsg'               => $input->param('manamsg') || '',
1142
            'saved1'                => 1,
1143
            'savedreports'          => $reports,
1144
            'usecache'              => $usecache,
1145
            'groups_with_subgroups' => groups_with_subgroups( $group, $subgroup ),
1146
            filters                 => $filter,
1147
            has_obsolete_reports    => $has_obsolete_reports,
1148
        );
1092
    }
1149
    }
1093
    $template->param(
1094
        'manamsg'               => $input->param('manamsg') || '',
1095
        'saved1'                => 1,
1096
        'savedreports'          => $reports,
1097
        'usecache'              => $usecache,
1098
        'groups_with_subgroups' => groups_with_subgroups( $group, $subgroup ),
1099
        filters                 => $filter,
1100
        has_obsolete_reports    => $has_obsolete_reports,
1101
    );
1102
}
1150
}
1103
1151
1104
# pass $sth, get back an array of names for the column headers
1152
# pass $sth, get back an array of names for the column headers
(-)a/t/db_dependent/Koha/Reports.t (-2 / +37 lines)
Lines 18-24 Link Here
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::NoWarnings;
20
use Test::NoWarnings;
21
use Test::More tests => 9;
21
use Test::More tests => 10;
22
22
23
use Koha::Report;
23
use Koha::Report;
24
use Koha::Reports;
24
use Koha::Reports;
Lines 185-188 subtest '_might_add_limit' => sub { Link Here
185
    );
185
    );
186
};
186
};
187
187
188
subtest 'reports_branches are added and removed from report_branches table' => sub {
189
    plan tests => 4;
190
191
    my $updated_nb_of_reports = Koha::Reports->search->count;
192
    my $report                = Koha::Report->new(
193
        {
194
            report_name => 'report_name_for_test_1',
195
            savedsql    => 'SELECT * FROM items WHERE itemnumber IN <<Test|list>>',
196
        }
197
    )->store;
198
199
    my $id       = $report->id;
200
    my $library1 = $builder->build_object( { class => 'Koha::Libraries' } );
201
    my $library2 = $builder->build_object( { class => 'Koha::Libraries' } );
202
    my $library3 = $builder->build_object( { class => 'Koha::Libraries' } );
203
    my @branches = ( $library1->branchcode, $library2->branchcode, $library3->branchcode );
204
205
    $report->replace_library_limits( \@branches );
206
207
    my @branches_loop = $report->get_library_limits->as_list;
208
    is( scalar @branches_loop, 3, '3 branches added to report_branches table' );
209
210
    $report->replace_library_limits( [ $library1->branchcode, $library2->branchcode ] );
211
212
    @branches_loop = $report->get_library_limits->as_list;
213
    is( scalar @branches_loop, 2, '1 branch removed from report_branches table' );
214
215
    $report->delete;
216
    is( Koha::Reports->search->count, $updated_nb_of_reports, 'Report deleted, count is back to original' );
217
    is(
218
        $schema->resultset('ReportsBranch')->search( { report_id => $id } )->count,
219
        0,
220
        'No branches left in reports_branches table after report deletion'
221
    );
222
};
223
188
$schema->storage->txn_rollback;
224
$schema->storage->txn_rollback;
189
- 

Return to bug 16631