Bugzilla – Attachment 20310 Details for
Bug 10718
items with no checkouts report does not work
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 10718 - perltidy on reports/catalogue_out.pl
0005-Bug-10718-perltidy-on-reports-catalogue_out.pl.patch (text/plain), 12.74 KB, created by
Fridolin Somers
on 2013-08-13 13:53:48 UTC
(
hide
)
Description:
Bug 10718 - perltidy on reports/catalogue_out.pl
Filename:
MIME Type:
Creator:
Fridolin Somers
Created:
2013-08-13 13:53:48 UTC
Size:
12.74 KB
patch
obsolete
>From 99eef4e850abb90290462ab1aad41baec5a4283e Mon Sep 17 00:00:00 2001 >From: Fridolyn SOMERS <fridolyn.somers@biblibre.com> >Date: Tue, 13 Aug 2013 15:46:45 +0200 >Subject: [PATCH 5/5] Bug 10718 - perltidy on reports/catalogue_out.pl > >--- > reports/catalogue_out.pl | 283 ++++++++++++++++++++++++---------------------- > 1 file changed, 150 insertions(+), 133 deletions(-) > >diff --git a/reports/catalogue_out.pl b/reports/catalogue_out.pl >index f13e96b..6f142c2 100755 >--- a/reports/catalogue_out.pl >+++ b/reports/catalogue_out.pl >@@ -24,9 +24,9 @@ use CGI; > use C4::Auth; > use C4::Context; > use C4::Debug; >-use C4::Branch; # GetBranchesLoop >+use C4::Branch; # GetBranchesLoop > use C4::Output; >-use C4::Koha; # GetItemTypes >+use C4::Koha; # GetItemTypes > # use Date::Manip; # TODO: add not borrowed since date X criteria > use Data::Dumper; > >@@ -36,108 +36,117 @@ Report that shows unborrowed items. > > =cut > >-my $input = new CGI; >-my $do_it = $input->param('do_it'); >-my $limit = $input->param("Limit") || 10; >-my $column = $input->param("Criteria"); >-my @filters = $input->param("Filter"); >- >-my ($template, $borrowernumber, $cookie) = get_template_and_user({ >- template_name => "reports/catalogue_out.tmpl", >- query => $input, >- type => "intranet", >- authnotrequired => 0, >- flagsrequired => {reports => 'execute_reports'}, >- debug => 1, >-}); >- >-$template->param(do_it => $do_it); >+my $input = new CGI; >+my $do_it = $input->param('do_it'); >+my $limit = $input->param("Limit") || 10; >+my $column = $input->param("Criteria"); >+my @filters = $input->param("Filter"); >+ >+my ( $template, $borrowernumber, $cookie ) = get_template_and_user( >+ { >+ template_name => "reports/catalogue_out.tmpl", >+ query => $input, >+ type => "intranet", >+ authnotrequired => 0, >+ flagsrequired => { reports => 'execute_reports' }, >+ debug => 1, >+ } >+); >+ >+$template->param( do_it => $do_it ); > if ($do_it) { >- my $results = calculate($limit, $column, \@filters); >- $template->param(mainloop => $results); >+ my $results = calculate( $limit, $column, \@filters ); >+ $template->param( mainloop => $results ); > output_html_with_http_headers $input, $cookie, $template->output; >- exit; # in either case, exit after do_it >+ exit; # in either case, exit after do_it > } > > # Displaying choices (i.e., not do_it) >- > my $itemtypes = GetItemTypes(); > my @itemtypeloop; >-foreach (sort {$itemtypes->{$a}->{description} cmp $itemtypes->{$b}->{description}} keys %$itemtypes) { >- push @itemtypeloop, { >- value => $_, >- description => $itemtypes->{$_}->{'description'}, >- }; >+foreach ( >+ sort { $itemtypes->{$a}->{'description'} cmp $itemtypes->{$b}->{'description'} } >+ keys %$itemtypes >+ ) >+{ >+ push @itemtypeloop, >+ { >+ value => $_, >+ description => $itemtypes->{$_}->{'description'}, >+ }; > } > > $template->param( >- itemtypeloop => \@itemtypeloop, >- branchloop => GetBranchesLoop(), >+ itemtypeloop => \@itemtypeloop, >+ branchloop => GetBranchesLoop(), > ); > output_html_with_http_headers $input, $cookie, $template->output; > >- > sub calculate { >- my ($limit, $column, $filters) = @_; >+ my ( $limit, $column, $filters ) = @_; > my @loopline; > my @looprow; > my %globalline; >- my %columns = (); >- my $dbh = C4::Context->dbh; >+ my %columns = (); >+ my $dbh = C4::Context->dbh; > >-# Filters >-# Checking filters >-# >+ # Filters >+ # Checking filters >+ # > my @loopfilter; >- for (my $i=0;$i<=6;$i++) { >+ for ( my $i = 0 ; $i <= 6 ; $i++ ) { > if ( @$filters[$i] ) { >- my %cell = (filter=>@$filters[$i]); >- if (($i==1) and (@$filters[$i-1])) { >- $cell{err} = 1 if (@$filters[$i]<@$filters[$i-1]) ; >+ my %cell = ( filter => @$filters[$i] ); >+ if ( ( $i == 1 ) and ( @$filters[ $i - 1 ] ) ) { >+ $cell{err} = 1 if ( @$filters[$i] < @$filters[ $i - 1 ] ); > } >- $cell{crit} = "Branch" if ($i==0); >- $cell{crit} = "Doc Type" if ($i==1); >+ $cell{crit} = "Branch" if ( $i == 0 ); >+ $cell{crit} = "Doc Type" if ( $i == 1 ); > push @loopfilter, \%cell; > } > } >- push @loopfilter, {crit=>'limit', filter=>$limit} if ($limit); >- if ($column){ >- push @loopfilter, {crit=>'by', filter=>$column}; >- my $tablename = ($column =~ /branchcode/) ? 'branches' : 'items'; >- $column = ($column =~ /branchcode/ or $column =~ /itype/) ? "$tablename.$column" : $column; >- my $strsth2 = ($tablename eq 'branches') ? >- "SELECT $column as coltitle, count(items.itemnumber) AS coltitle_count FROM $tablename LEFT JOIN items ON items.homebranch=$column " : >- "SELECT $column as coltitle, count(*) AS coltitle_count FROM $tablename " ; >- if ($tablename eq 'branches') { >- my $f = @$filters[0]; >+ push @loopfilter, { crit => 'limit', filter => $limit } if ($limit); >+ if ($column) { >+ push @loopfilter, { crit => 'by', filter => $column }; >+ my $tablename = ( $column =~ /branchcode/ ) ? 'branches' : 'items'; >+ $column = >+ ( $column =~ /branchcode/ or $column =~ /itype/ ) >+ ? "$tablename.$column" >+ : $column; >+ my $strsth2 = >+ ( $tablename eq 'branches' ) >+ ? "SELECT $column as coltitle, count(items.itemnumber) AS coltitle_count FROM $tablename LEFT JOIN items ON items.homebranch=$column " >+ : "SELECT $column as coltitle, count(*) AS coltitle_count FROM $tablename "; >+ if ( $tablename eq 'branches' ) { >+ my $f = @$filters[0]; > $f =~ s/\*/%/g; >- $strsth2 .= " AND $column LIKE '$f' " ; >+ $strsth2 .= " AND $column LIKE '$f' "; > } >- $strsth2 .=" GROUP BY $column ORDER BY $column "; # needed for count >- push @loopfilter, {crit=>'SQL', sql=>1, filter=>$strsth2}; >- $debug and warn "catalogue_out SQL: ". $strsth2; >+ $strsth2 .= " GROUP BY $column ORDER BY $column "; # needed for count >+ push @loopfilter, { crit => 'SQL', sql => 1, filter => $strsth2 }; >+ $debug and warn "catalogue_out SQL: " . $strsth2; > my $sth2 = $dbh->prepare($strsth2); > $sth2->execute; >- >- while (my ($celvalue, $count) = $sth2->fetchrow) { >- ($celvalue) or $celvalue = 'UNKNOWN'; >- $columns{$celvalue} = $count; >+ >+ while ( my ( $celvalue, $count ) = $sth2->fetchrow ) { >+ ($celvalue) or $celvalue = 'UNKNOWN'; >+ $columns{$celvalue} = $count; > } > } >- >- my %tables = (map {$_=>[]} keys %columns); > >-# preparing calculation >- my @exe_args = (); >- my $query = " >+ my %tables = ( map { $_ => [] } keys %columns ); >+ >+ # preparing calculation >+ my @exe_args = (); >+ my $query = " > SELECT items.barcode as barcode, > items.homebranch as branch, > items.itemcallnumber as itemcallnumber, > biblio.title as title, > biblio.biblionumber as biblionumber, > biblio.author as author"; >- ($column) and $query .= ",\n$column as col "; >- $query .= " >+ ($column) and $query .= ",\n$column as col "; >+ $query .= " > FROM items > LEFT JOIN biblio USING (biblionumber) > LEFT JOIN issues USING (itemnumber) >@@ -145,79 +154,87 @@ sub calculate { > WHERE issues.itemnumber IS NULL > AND old_issues.itemnumber IS NULL > "; >- if ($filters->[0]) { >- $filters->[0]=~ s/\*/%/g; >- push @exe_args, $filters->[0]; >- $query .= " AND items.homebranch LIKE ?"; >- } >- if ($filters->[1]) { >- $filters->[1]=~ s/\*/%/g; >- push @exe_args, $filters->[1]; >- $query .= " AND items.itype LIKE ?"; >- } >- if ($column) { >- $query .= " AND $column = ? GROUP BY items.itemnumber, $column "; # placeholder handled below >- } else { >- $query .= " GROUP BY items.itemnumber "; >- } >- $query .= " ORDER BY items.itemcallnumber DESC, barcode"; >+ if ( $filters->[0] ) { >+ $filters->[0] =~ s/\*/%/g; >+ push @exe_args, $filters->[0]; >+ $query .= " AND items.homebranch LIKE ?"; >+ } >+ if ( $filters->[1] ) { >+ $filters->[1] =~ s/\*/%/g; >+ push @exe_args, $filters->[1]; >+ $query .= " AND items.itype LIKE ?"; >+ } >+ if ($column) { >+ $query .= " AND $column = ? GROUP BY items.itemnumber, $column "; >+ # placeholder handled below >+ } >+ else { >+ $query .= " GROUP BY items.itemnumber "; >+ } >+ $query .= " ORDER BY items.itemcallnumber DESC, barcode"; > $query .= " LIMIT 0,$limit" if ($limit); > $debug and warn "SQL : $query"; >+ > # warn "SQL : $query"; >- push @loopfilter, {crit=>'SQL', sql=>1, filter=>$query}; >+ push @loopfilter, { crit => 'SQL', sql => 1, filter => $query }; > my $dbcalc = $dbh->prepare($query); > >- if ($column) { >- foreach (sort keys %columns) { >- my (@more_exe_args) = @exe_args; # execute(@exe_args,$_) would fail when the array is empty. >- push @more_exe_args, $_; # but @more_exe_args will work >- $dbcalc->execute(@more_exe_args) or die "Query execute(@more_exe_args) failed: $query"; >- while (my $data = $dbcalc->fetchrow_hashref) { >- my $col = $data->{col} || 'NULL'; >- $tables{$col} or $tables{$col} = []; >- push @{$tables{$col}}, $data; >- } >- } >- } else { >- (scalar @exe_args) ? $dbcalc->execute(@exe_args) : $dbcalc->execute; >- while (my $data = $dbcalc->fetchrow_hashref) { >- my $col = $data->{col} || 'NULL'; >- $tables{$col} or $tables{$col} = []; >- push @{$tables{$col}}, $data; >- } >- } >- >- foreach my $tablename (sort keys %tables) { >- my (@temptable); >- my $i=0; >- foreach my $cell (@{$tables{$tablename}}) { >- if (0 == $i++ and $debug) { >- my $dump = Dumper($cell); >- $dump =~ s/\n/ /gs; >- $dump =~ s/\s+/ /gs; >- print STDERR "first cell for $tablename: $dump"; >- } >- push @temptable, $cell; >- } >- my $count = scalar(@temptable); >- my $allitems = $columns{$tablename}; >- $globalline{total_looptable_count} += $count; >- $globalline{total_coltitle_count} += $allitems; >- push @{$globalline{looptables}}, { >- looprow => \@temptable, >- coltitle => $tablename, >- coltitle_count => $allitems, >- looptable_count => $count, >- looptable_first => ($count) ? $temptable[ 0]->{itemcallnumber} : '', >- looptable_last => ($count) ? $temptable[-1]->{itemcallnumber} : '', >- }; >- } >+ if ($column) { >+ foreach ( sort keys %columns ) { >+ # execute(@exe_args,$_) would fail when the array is empty >+ # but @more_exe_args will work >+ my (@more_exe_args) = @exe_args; >+ push @more_exe_args, $_; >+ $dbcalc->execute(@more_exe_args) >+ or die "Query execute(@more_exe_args) failed: $query"; >+ while ( my $data = $dbcalc->fetchrow_hashref ) { >+ my $col = $data->{col} || 'NULL'; >+ $tables{$col} or $tables{$col} = []; >+ push @{ $tables{$col} }, $data; >+ } >+ } >+ } >+ else { >+ ( scalar @exe_args ) ? $dbcalc->execute(@exe_args) : $dbcalc->execute; >+ while ( my $data = $dbcalc->fetchrow_hashref ) { >+ my $col = $data->{col} || 'NULL'; >+ $tables{$col} or $tables{$col} = []; >+ push @{ $tables{$col} }, $data; >+ } >+ } >+ >+ foreach my $tablename ( sort keys %tables ) { >+ my (@temptable); >+ my $i = 0; >+ foreach my $cell ( @{ $tables{$tablename} } ) { >+ if ( 0 == $i++ and $debug ) { >+ my $dump = Dumper($cell); >+ $dump =~ s/\n/ /gs; >+ $dump =~ s/\s+/ /gs; >+ print STDERR "first cell for $tablename: $dump"; >+ } >+ push @temptable, $cell; >+ } >+ my $count = scalar(@temptable); >+ my $allitems = $columns{$tablename}; >+ $globalline{total_looptable_count} += $count; >+ $globalline{total_coltitle_count} += $allitems; >+ push @{ $globalline{looptables} }, >+ { >+ looprow => \@temptable, >+ coltitle => $tablename, >+ coltitle_count => $allitems, >+ looptable_count => $count, >+ looptable_first => ($count) ? $temptable[0]->{itemcallnumber} : '', >+ looptable_last => ($count) ? $temptable[-1]->{itemcallnumber} : '', >+ }; >+ } > > # the header of the table >- $globalline{loopfilter}=\@loopfilter; >- $globalline{limit} = $limit; >- $globalline{column} = $column; >- return [(\%globalline)]; # reference to array of reference to hash >+ $globalline{loopfilter} = \@loopfilter; >+ $globalline{limit} = $limit; >+ $globalline{column} = $column; >+ return [ ( \%globalline ) ]; # reference to array of reference to hash > } > > 1; >-- >1.7.10.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 10718
:
20306
|
20307
|
20308
|
20309
|
20310
|
20570
|
20600
|
20886
|
20887