some (minor, functionnaly speaking) bugfixes
[koha.git] / serials / lateissues-excel.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use CGI;
5 use C4::Auth;
6 use C4::Serials;
7 use C4::Acquisition;
8 use C4::Output;
9 use C4::Context;
10
11 # use Date::Manip;
12 use Text::CSV_XS;
13
14
15 # &Date_Init("DateFormat=non-US"); # set non-USA date, eg:19/08/2005
16
17
18 my $csv = Text::CSV_XS->new(
19         {
20             'quote_char'  => '"',
21             'escape_char' => '"',
22             'sep_char'    => ',',
23             'binary'      => 1
24         }
25     );
26
27
28 my $query = new CGI;
29 my $supplierid = $query->param('supplierid');
30 my @serialid = $query->param('serialid');
31 my $op = $query->param('op');
32 my $serialidcount = @serialid;
33
34 my %supplierlist = GetSuppliersWithLateIssues;
35 my @select_supplier;
36
37 my @loop1;
38 my ($count, @lateissues);
39 if($op ne 'claims'){
40     ($count, @lateissues) = GetLateIssues($supplierid);
41     for (my $i=0;$i<@lateissues;$i++){
42         my @rows1 = ($lateissues[$i]->{'name'},          # lets build up a row
43                      $lateissues[$i]->{'title'}, 
44                      $lateissues[$i]->{'serialseq'},
45                      $lateissues[$i]->{'planneddate'},
46                      );
47         push (@loop1, \@rows1);
48     }
49 }
50 my $totalcount2 = 0;
51 my @loop2;
52 my ($count2, @missingissues);
53 for (my $k=0;$k<@serialid;$k++){
54     ($count2, @missingissues) = GetMissingIssues($supplierid, $serialid[$k]);
55
56     for (my $j=0;$j<@missingissues;$j++){
57         my @rows2 = ($missingissues[$j]->{'name'},          # lets build up a row
58                      $missingissues[$j]->{'title'}, 
59                      $missingissues[$j]->{'serialseq'},
60                      $missingissues[$j]->{'planneddate'},
61                      );
62         push (@loop2, \@rows2);
63     }
64     $totalcount2 = $totalcount2 + $count2;
65     # update claim date to let one know they have looked at this missing item
66     updateClaim($serialid[$k]);
67 }
68
69 my $heading ='';
70 my $filename ='';
71 if($supplierid){
72     if($missingissues[0]->{'name'}){ # if exists display supplier name in heading for neatness
73         # not necessarily needed as the name will appear in supplier column also
74         $heading = "FOR $missingissues[0]->{'name'}";
75         $filename = "_$missingissues[0]->{'name'}"; 
76     }
77 }
78
79 print $query->header(
80         -type       => 'application/vnd.ms-excel',
81         -attachment => "claims".$filename.".csv",
82     );
83
84 if($op ne 'claims'){
85     print "LATE ISSUES ".$heading."\n\n";
86     print "SUPPLIER,TITLE,ISSUE NUMBER,LATE SINCE\n";
87
88     for my $row ( @loop1 ) {
89     
90         $csv->combine(@$row);
91         my $string = $csv->string;
92         print $string, "\n";
93     }
94
95     print ",,,,,,,\n\n";
96 }
97 if($serialidcount == 1){
98     print "MISSING ISSUE ".$heading."\n\n";
99 } else {
100     print "MISSING ISSUES ".$heading."\n\n";
101 }
102 print "SUPPLIER,TITLE,ISSUE NUMBER,LATE SINCE\n";
103
104 for my $row ( @loop2 ) {
105     
106         $csv->combine(@$row);
107         my $string = $csv->string;
108         print $string, "\n";
109     }
110
111 print ",,,,,,,\n";
112 print ",,,,,,,\n";
113 if($op ne 'claims'){
114     print ",,Total Number Late, $count\n";
115 }
116 if($serialidcount == 1){
117
118 } else {
119     print ",,Total Number Missing, $totalcount2\n";
120 }