- my @loopfilter;
- for (my $i=0;$i<=6;$i++) {
- my %cell;
- if ( @$filters[$i] ) {
- if (($i==1) and (@$filters[$i-1])) {
- $cell{err} = 1 if (@$filters[$i]<@$filters[$i-1]) ;
- }
- $cell{filter} .= @$filters[$i];
- $cell{crit} .="Issue From" if ($i==0);
- $cell{crit} .="Issue To" if ($i==1);
- $cell{crit} .="Return From" if ($i==2);
- $cell{crit} .="Return To" if ($i==3);
- $cell{crit} .="Branch" if ($i==4);
- $cell{crit} .="Doc Type" if ($i==5);
- $cell{crit} .="Bor Cat" if ($i==6);
- $cell{crit} .="Day" if ($i==7);
- $cell{crit} .="Month" if ($i==8);
- $cell{crit} .="Year" if ($i==9);
- push @loopfilter, \%cell;
- }
- }
- my $colfield;
- my $colorder;
- if ($column){
- $column = "issues.".$column if (($column=~/branchcode/) or ($column=~/timestamp/));
- $column = "biblioitems.".$column if $column=~/itemtype/;
- $column = "borrowers.".$column if $column=~/categorycode/;
- my @colfilter ;
- $colfilter[0] = @$filters[0] if ($column =~ /timestamp/ ) ;
- $colfilter[1] = @$filters[1] if ($column =~ /timestamp/ ) ;
- $colfilter[0] = @$filters[2] if ($column =~ /returndate/ ) ;
- $colfilter[1] = @$filters[3] if ($column =~ /returndate/ ) ;
- $colfilter[0] = @$filters[4] if ($column =~ /branch/ ) ;
- $colfilter[0] = @$filters[5] if ($column =~ /itemtype/ ) ;
- $colfilter[0] = @$filters[6] if ($column =~ /category/ ) ;
- # $colfilter[0] = @$filters[11] if ($column =~ /sort2/ ) ;
- $colfilter[0] = @$filters[7] if ($column =~ /timestamp/ ) ;
- $colfilter[0] = @$filters[8] if ($column =~ /timestamp/ ) ;
- $colfilter[0] = @$filters[9] if ($column =~ /timestamp/ ) ;
- #warn "filtre col ".$colfilter[0]." ".$colfilter[1];
-
- # loop cols.
- if ($column eq "Day") {
- #Display by day
- $column = "issues.timestamp";
- $colfield .="dayname($column)";
- $colorder .="weekday($column)";
- } elsif ($column eq "Month") {
- #Display by Month
- $column = "issues.timestamp";
- $colfield .="monthname($column)";
- $colorder .="month($column)";
- } elsif ($column eq "Year") {
- #Display by Year
- $column = "issues.timestamp";
- $colfield .="Year($column)";
- $colorder .= $column;
- } else {
- $colfield .= $column;
- $colorder .= $column;
- }
-
- my $strsth2;
- $strsth2 .= "select distinctrow $colfield FROM `issues`,borrowers,biblioitems LEFT JOIN items ON (biblioitems.biblioitemnumber=items.biblioitemnumber) WHERE issues.itemnumber=items.itemnumber AND issues.borrowernumber=borrowers.borrowernumber and returndate is not null";
- if (($column=~/timestamp/) or ($column=~/returndate/)){
- if ($colfilter[1] and ($colfilter[0])){
- $strsth2 .= " and $column between '$colfilter[0]' and '$colfilter[1]' " ;
- } elsif ($colfilter[1]) {
- $strsth2 .= " and $column < '$colfilter[1]' " ;
- } elsif ($colfilter[0]) {
- $strsth2 .= " and $column > '$colfilter[0]' " ;
- }
- } elsif ($colfilter[0]) {
- $colfilter[0] =~ s/\*/%/g;
- $strsth2 .= " and $column LIKE '$colfilter[0]' " ;
- }
- $strsth2 .=" group by $colfield";
- $strsth2 .=" order by $colorder";
- warn "". $strsth2;
-
- my $sth2 = $dbh->prepare( $strsth2 );
- if (( @colfilter ) and ($colfilter[1])){
- $sth2->execute("'".$colfilter[0]."'","'".$colfilter[1]."'");
- } elsif ($colfilter[0]) {
- $sth2->execute($colfilter[0]);
- } else {
- $sth2->execute;
- }
-
-
- while (my ($celvalue) = $sth2->fetchrow) {
- my %cell;
- # my %ft;
- # warn "coltitle :".$celvalue;
- $cell{coltitle} = $celvalue;
- # $ft{totalcol} = 0;
- push @loopcol, \%cell;
- }
- # warn "fin des titres colonnes";
- }
-
- my $i=0;
+ my @loopfilter;
+ for (my $i=0;$i<=6;$i++) {
+ my %cell;
+ if ( @$filters[$i] ) {
+ if (($i==1) and (@$filters[$i-1])) {
+ $cell{err} = 1 if (@$filters[$i]<@$filters[$i-1]) ;
+ }
+ # format the dates filters, otherwise just fill as is
+ if ($i>=2) {
+ $cell{filter} .= @$filters[$i];
+ } else {
+ $cell{filter} .= format_date(@$filters[$i]);
+ } $cell{crit} .="Issue From" if ($i==0);
+ $cell{crit} .="Issue To" if ($i==1);
+ $cell{crit} .="Return From" if ($i==2);
+ $cell{crit} .="Return To" if ($i==3);
+ $cell{crit} .="Branch" if ($i==4);
+ $cell{crit} .="Doc Type" if ($i==5);
+ $cell{crit} .="Bor Cat" if ($i==6);
+ $cell{crit} .="Day" if ($i==7);
+ $cell{crit} .="Month" if ($i==8);
+ $cell{crit} .="Year" if ($i==9);
+ push @loopfilter, \%cell;
+ }
+ }
+ my $colfield;
+ my $colorder;
+ if ($column){
+ $column = "old_issues.".$column if (($column=~/branchcode/) or ($column=~/timestamp/));
+ if($column=~/itemtype/){
+ $column = C4::Context->preference('item-level_itypes') ? "items.itype": "biblioitems.itemtype";
+ }
+ $column = "borrowers.".$column if $column=~/categorycode/;
+ my @colfilter ;
+ $colfilter[0] = @$filters[0] if ($column =~ /timestamp/ ) ;
+ $colfilter[1] = @$filters[1] if ($column =~ /timestamp/ ) ;
+ $colfilter[0] = @$filters[2] if ($column =~ /returndate/ ) ;
+ $colfilter[1] = @$filters[3] if ($column =~ /returndate/ ) ;
+ $colfilter[0] = @$filters[4] if ($column =~ /branch/ ) ;
+ $colfilter[0] = @$filters[5] if ($column =~ /itemtype/ ) ;
+ $colfilter[0] = @$filters[6] if ($column =~ /category/ ) ;
+ # $colfilter[0] = @$filters[11] if ($column =~ /sort2/ ) ;
+ $colfilter[0] = @$filters[7] if ($column =~ /timestamp/ ) ;
+ $colfilter[0] = @$filters[8] if ($column =~ /timestamp/ ) ;
+ $colfilter[0] = @$filters[9] if ($column =~ /timestamp/ ) ;
+ #warn "filtre col ".$colfilter[0]." ".$colfilter[1];
+
+ # loop cols.
+ if ($column eq "Day") {
+ #Display by day
+ $column = "old_issues.timestamp";
+ $colfield .="dayname($column)";
+ $colorder .="weekday($column)";
+ } elsif ($column eq "Month") {
+ #Display by Month
+ $column = "old_issues.timestamp";
+ $colfield .="monthname($column)";
+ $colorder .="month($column)";
+ } elsif ($column eq "Year") {
+ #Display by Year
+ $column = "old_issues.timestamp";
+ $colfield .="Year($column)";
+ $colorder .= $column;
+ } else {
+ $colfield .= $column;
+ $colorder .= $column;
+ }
+
+ my $strsth2;
+ $strsth2 .= "SELECT distinctrow $colfield
+ FROM `old_issues`
+ LEFT JOIN borrowers ON borrowers.borrowernumber=old_issues.borrowernumber
+ LEFT JOIN items ON old_issues.itemnumber=items.itemnumber
+ LEFT JOIN biblioitems ON biblioitems.biblioitemnumber=items.biblioitemnumber
+ WHERE 1";
+ if (($column=~/timestamp/) or ($column=~/returndate/)){
+ if ($colfilter[1] and ($colfilter[0])){
+ $strsth2 .= " and $column between '$colfilter[0]' and '$colfilter[1]' " ;
+ } elsif ($colfilter[1]) {
+ $strsth2 .= " and $column < '$colfilter[1]' " ;
+ } elsif ($colfilter[0]) {
+ $strsth2 .= " and $column > '$colfilter[0]' " ;
+ }
+ } elsif ($colfilter[0]) {
+ $colfilter[0] =~ s/\*/%/g;
+ $strsth2 .= " and $column LIKE '$colfilter[0]' " ;
+ }
+ $strsth2 .=" group by $colfield";
+ $strsth2 .=" order by $colorder";
+
+ my $sth2 = $dbh->prepare( $strsth2 );
+ if (( @colfilter ) and ($colfilter[1])){
+ $sth2->execute("'".$colfilter[0]."'","'".$colfilter[1]."'");
+ } elsif ($colfilter[0]) {
+ $sth2->execute($colfilter[0]);
+ } else {
+ $sth2->execute;
+ }
+
+
+ while (my ($celvalue) = $sth2->fetchrow) {
+ my %cell;
+ $cell{coltitle} = ($celvalue?$celvalue:"NULL");
+ push @loopcol, \%cell;
+ }
+ # warn "fin des titres colonnes";
+ }
+
+ my $i=0;