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