convert barcode to number in sql
[share-koha-fer] / intranet / cgi-bin / fer / inventura.pl
1 #!/usr/bin/perl
2
3 use Modern::Perl;
4
5 use C4::Context;
6 use C4::Circulation;
7 use Data::Dump qw(dump);
8 use CGI qw ( -utf8 );
9 use utf8;
10
11 binmode STDOUT, ':encoding(UTF-8)';
12
13 my $q = new CGI;
14
15 my $barcode = $q->param('barcode');
16 warn "# barcode: $barcode\n";
17 $q->delete('barcode'); # empty form field
18
19 my $row;
20
21 $ENV{REQUEST_URI} =~ s{/intranet/}{/cgi-bin/koha/}; # fix plack rewrite
22
23 print $q->header( -charset => 'utf-8' ), qq{
24 <!DOCTYPE html>
25 <html>
26   <head>
27   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
28   <style>
29         body {
30                 font-size: 200%;
31         }
32   </style>
33   <title>Inventura</title>
34 </head>
35   <body>
36 };
37
38 # Authentication
39 my ($status, $cookie, $sessionId) = C4::Auth::check_api_auth($q, { tools => 'inventory' });
40 if ($status ne "ok") {
41         print "This requres tools - inventory permission";
42         goto end_body;
43 }
44
45
46 print
47       $q->start_form( -autocomplete => 'off' )
48     , $q->textfield( -name => 'barcode', -autofocus => 'autofocus' )
49     , $q->submit( -value => 'Search' )
50 #    , $q->checkbox( -name => 'izdatnice', -label => 'izdatnice' )
51 #    , $q->checkbox( -name => 'proizvodi', -label => 'prozivodi', -checked => 1 )
52     , $q->end_form
53     , qq|
54 <!--
55 <script type="text/javascript">
56 document.getElementsByName('barcode')[0].focus();
57 </script>
58 -->
59         |
60 ;
61
62 if ( $barcode ) {
63
64         my $dbh = C4::Context->dbh;
65
66         warn "inventura barcode: $barcode ",dump($barcode);
67
68         my $sql = qq{
69         select
70                 itemnumber,
71                 items.biblionumber as biblionumber,
72                 title,
73                 author,
74                 biblioitems.publishercode,
75                 biblioitems.editionstatement,
76                 biblio.copyrightdate,
77                 items.stocknumber,
78                 items.itemcallnumber,
79                 items.barcode,
80                 items.homebranch,
81                 items.location
82         from items
83         join biblio on items.biblionumber = biblio.biblionumber
84         join biblioitems on items.biblionumber = biblioitems.biblionumber
85         where barcode = ? + 0
86         };
87
88         #warn "# sql $sql\n";
89
90         my $sth = $dbh->prepare( $sql );
91         $sth->execute( $barcode );
92         if ( $sth->rows ) {
93
94                         $row = $sth->fetchrow_hashref;
95
96                         print qq|
97 barcode: <tt>$barcode</tt><br>
98 naslov: <b>$row->{title}</b><br>
99 autor: $row->{author}<br>
100 izdavač: $row->{publishercode}<br>
101 izdanje: $row->{editionstatement}<br>
102 godina izdanja: $row->{copyrightdate}<br>
103 inventarni broj: $row->{stocknumber}<br>
104 signatura: $row->{itemcallnumber}<br>
105 stalna lokacija: $row->{homebranch}<br>
106 lokacija na polici: $row->{location}<br>
107                         |;
108
109                         my $sth_update = $dbh->prepare(qq{
110                         update items set datelastseen = now() where barcode = ?
111                         });
112                         $sth_update->execute( $barcode );
113
114                         my $sth_inventura = $dbh->prepare(qq{
115                         insert ignore into fer_inventura (date_scanned,barcode,source_id) values (date(now()), ?, ?)
116                         });
117                         $sth_inventura->execute( $barcode, C4::Context->userenv->{'id'} );
118
119                         my $sth_issues = $dbh->prepare(qq{
120                         select firstname,surname,userid,email from issues join borrowers on issues.borrowernumber = borrowers.borrowernumber where itemnumber = ?
121                         });
122
123                         $sth_issues->execute( $row->{'itemnumber'} );
124                         while ( my $row = $sth_issues->fetchrow_hashref ) {
125                                 warn "# issues row ",dump($row);
126                                 print "issued to ", $row->{firstname}, ' ', $row->{surname}, " returning...";
127                                 AddReturn( $barcode, C4::Context->userenv->{'branch'} );
128                         }
129         } else {
130                         print "no barcode $barcode\n";
131                         warn "ERROR: can't find $barcode\n";
132         }
133
134 }
135
136 end_body:
137
138 print qq{
139 </body>
140 </html>
141 };