use Bull; changed by use Serials;
[koha.git] / barcodes / label-manager.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use CGI;
5 use C4::Auth;
6 use C4::Output;
7 use C4::Interface::CGI::Output;
8 use HTML::Template;
9 use POSIX;
10
11 my $dbh          = C4::Context->dbh;
12 my $query        = new CGI;
13 my $op           = $query->param('op');
14 my $barcodetype  = $query->param('barcodetype');
15 my $title        = $query->param('title');
16 my $isbn         = $query->param('isbn');
17 my $itemtype     = $query->param('itemtype');
18 my $bcn          = $query->param('bcn');
19 my $dcn          = $query->param('dcn');
20 my $classif      = $query->param('classif');
21 my $author       = $query->param('author');
22 my $papertype    = $query->param('papertype');
23 my $itemnumber   = $query->param('itemnumber');
24 my $summary      = $query->param('summary');
25 my $startrow     = $query->param('startrow');
26 my $printingtype = $query->param('printingtype');
27 my $guidebox     = $query->param('guidebox');
28
29 warn $printingtype;
30
31 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
32     {
33         template_name   => "barcodes/label-manager.tmpl",
34         query           => $query,
35         type            => "intranet",
36         authnotrequired => 1,
37         flagsrequired   => { catalogue => 1 },
38         debug           => 1,
39     }
40 );
41
42 if ( $op eq 'save_conf' ) {
43     my $query2 = "DELETE FROM labels_conf";
44     my $sth2   = $dbh->prepare($query2);
45     $sth2->execute();
46     $sth2->finish;
47     my $query2 = "INSERT INTO labels_conf 
48                         ( barcodetype, title, isbn, itemtype, barcode,  
49                           dewey, class, author, papertype, printingtype, 
50                                 guidebox, startrow)
51                            values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";
52     my $sth2 = $dbh->prepare($query2);
53     $sth2->execute(
54         $barcodetype, $title,        $isbn,     $itemtype,
55         $bcn,         $dcn,          $classif,  $author,
56         $papertype,   $printingtype, $guidebox, $startrow
57     );
58     $sth2->finish;
59
60 }
61 elsif ( $op eq 'add' ) {
62     my $query2 = "INSERT INTO labels ( itemnumber ) values ( ? )";
63     my $sth2   = $dbh->prepare($query2);
64     $sth2->execute($itemnumber);
65     $sth2->finish;
66 }
67 elsif ( $op eq 'deleteall' ) {
68     my $query2 = "DELETE FROM labels";
69     my $sth2   = $dbh->prepare($query2);
70     $sth2->execute();
71     $sth2->finish;
72 }
73 elsif ( $op eq 'delete' ) {
74     warn "MASON, deleting label..";
75     my $query2 = "DELETE FROM labels where itemnumber = ?";
76     my $sth2   = $dbh->prepare($query2);
77     $sth2->execute($itemnumber);
78     $sth2->finish;
79 }
80
81 #  first lets do a read of the labels table , to get the a list of the
82 # currently entered items to be prinited
83
84 my @resultsloop = ();
85 my $count;
86 my @data;
87 my $query3 = "Select * from labels";
88 my $sth    = $dbh->prepare($query3);
89 $sth->execute();
90
91 my $cnt = $sth->rows;
92 my $i1  = 1;
93 while ( my $data = $sth->fetchrow_hashref ) {
94
95     # lets get some summary info from each item
96     my $query1 = "
97                         select * from biblio,biblioitems,items where itemnumber=? and 
98                                 items.biblioitemnumber=biblioitems.biblioitemnumber and 
99                                 biblioitems.biblionumber=biblio.biblionumber";
100
101     my $sth1 = $dbh->prepare($query1);
102     $sth1->execute( $data->{'itemnumber'} );
103     my $data1 = $sth1->fetchrow_hashref();
104
105     $data1->{'labelno'} = $i1;
106     $data1->{'summary'} =
107       "$data1->{'barcode'}, $data1->{'title'}, $data1->{'isbn'}";
108
109     push( @resultsloop, $data1 );
110     $sth1->finish;
111
112     $i1++;
113 }
114 $sth->finish;
115
116 # this script can be run from the side nav, and is not passed a value for $startrow
117 # so lets get it from the DB
118 if ( !$startrow ) {
119
120     my $dbh    = C4::Context->dbh;
121     my $query2 = "SELECT * FROM labels_conf LIMIT 1";
122     my $sth    = $dbh->prepare($query2);
123     $sth->execute();
124
125     my $data = $sth->fetchrow_hashref;
126     $startrow = $data->{'startrow'};
127     $sth->finish;
128 }
129
130 #calc-ing number of sheets
131 my $number_of_results = scalar @resultsloop;
132 my $sheets_needed = ( ( --$number_of_results + $startrow ) / 8 );
133 $sheets_needed = ceil($sheets_needed);    # rounding up int's
134
135 my $tot_labels       = ( $sheets_needed * 8 );
136 my $start_results    = ( $number_of_results + $startrow );
137 my $labels_remaining = ( $tot_labels - $start_results );
138
139 $template->param(
140     resultsloop      => \@resultsloop,
141     startrow         => $startrow,
142     sheets           => $sheets_needed,
143     labels_remaining => $labels_remaining,
144
145     intranetcolorstylesheet =>
146       C4::Context->preference("intranetcolorstylesheet"),
147     intranetstylesheet => C4::Context->preference("intranetstylesheet"),
148     IntranetNav        => C4::Context->preference("IntranetNav"),
149 );
150 output_html_with_http_headers $query, $cookie, $template->output;