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