Browse Source

Bug 27380: Add 'list' option to Koha report parameters

TODO: Need to address the svc endpoints

To test:
1 - Create a 'New SQL report' like:
    SELECT * FROM items WHERE itemnumber IN <<Itemnumbers|list>>
2 - Run the report
3 - You should have a text area where you can enter various itemnumbers
4 - Enter some valid and invalid itemnumbers
5 - You get the info for the valid itemnumbers, no error for the others
6 - Test adding other params to the report and ensure things still work as expected

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
21.05.x
Nick Clemens 2 years ago
committed by Jonathan Druart
parent
commit
3acbc9f4dc
  1. 1
      C4/Reports/Guided.pm
  2. 5
      koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt
  3. 16
      reports/guided_reports.pl

1
C4/Reports/Guided.pm

@ -916,6 +916,7 @@ Returns a hash containig all reserved words
sub GetReservedAuthorisedValues {
my %reserved_authorised_values =
map { $_ => 1 } ( 'date',
'list',
'branches',
'itemtypes',
'cn_source',

5
koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt

@ -823,6 +823,11 @@
<label for="sql_params[% loop.count | html %]">[% sql_param.entry | html %]: </label>
<input id="sql_params[% loop.count | html %]" type="text" name="sql_params" />
</li>
[% ELSIF ( sql_param.input == 'textarea' ) %]
<li>
<label for="sql_params[% loop.count | html %]">[% sql_param.entry | html %]: </label>
<textarea id="sql_params[% loop.count | html %]" name="sql_params" rows="5"></textarea>
</li>
[% ELSE %]
<li>
<label for="sql_params_[% sql_param.labelid | html %]">[% sql_param.entry | html %]:</label>

16
reports/guided_reports.pl

@ -220,7 +220,6 @@ elsif ( $phase eq 'Update SQL'){
my $cache_expiry_units = $input->param('cache_expiry_units');
my $public = $input->param('public');
my $save_anyway = $input->param('save_anyway');
my @errors;
# if we have the units, then we came from creating a report from SQL and thus need to handle converting units
@ -734,6 +733,9 @@ elsif ($phase eq 'Run this report'){
} elsif ( $authorised_value eq "date" ) {
# require a date, provide a date picker
$input = 'date';
} elsif ( $authorised_value eq "list" ) {
# require a list, provide a textarea
$input = 'textarea';
} else {
# defined $authorised_value, and not 'date'
my $dbh=C4::Context->dbh;
@ -1118,7 +1120,17 @@ sub get_prepped_report {
if ($split[$i*2+1] =~ /\|\s*date\s*$/) {
$quoted = output_pref({ dt => dt_from_string($quoted), dateformat => 'iso', dateonly => 1 }) if $quoted;
}
$quoted = C4::Context->dbh->quote($quoted);
unless( $split[$i*2+1] =~ /\|\s*list\s*$/ && $quoted ){
$quoted = C4::Context->dbh->quote($quoted);
} else {
my @list = split /\n/, $quoted;
my @quoted_list;
foreach my $item ( @list ){
$item =~ s/\r//;
push @quoted_list, C4::Context->dbh->quote($item);
}
$quoted="(".join(",",@quoted_list).")";
}
$sql =~ s/<<$split[$i*2+1]>>/$quoted/;
}
return $sql,$headers;

Loading…
Cancel
Save