1 package C4::Circulation; #asummes C4/Circulation
3 #package to deal with circulation
9 use C4::Circulation::Issues;
10 use C4::Circulation::Returns;
11 use C4::Circulation::Renewals;
12 use C4::Circulation::Borrower;
17 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
19 # set the version for version checking
23 @EXPORT = qw(&Start_circ &scanborrower);
24 #@EXPORT = qw(&Start_circ checkoverdues);
25 %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
27 # your exported package globals go here,
28 # as well as any optionally exported functions
30 @EXPORT_OK = qw($Var1 %Hashit);
33 # non-exported package globals go here
34 use vars qw(@more $stuff);
36 # initalize package globals, first exported ones
41 # then the others (which are still accessible as $Some::Module::stuff)
45 # all file-scoped lexicals must be created before
46 # the functions below that use them.
48 # file-private lexicals go here
52 # here's a file-private function as a closure,
53 # callable as &$priv_func; it cannot be prototyped.
58 # make all your functions, whether exported or not;
64 &startint($env,'Circulation');
68 while ($donext ne 'Quit') {
69 if ($donext eq "Circ") {
71 ($reason,$data) = menu($env,'console','Circulation',
72 ('Issues','Returns','Borrower Enquiries','Reserves','Log In'));
73 #debug_msg($env,"data = $data");
77 if ($data eq 'Issues') {
78 $donext=Issue($env); #C4::Circulation::Issues
79 #debug_msg("","do next $donext");
80 } elsif ($data eq 'Returns') {
81 $donext=Returns($env); #C4::Circulation::Returns
82 } elsif ($data eq 'Borrower Enquiries'){
83 $donext=Borenq($env); #C4::Circulation::Borrower
84 } elsif ($data eq 'Reserves'){
85 $donext=EnterReserves($env); #C4::Reserves
86 } elsif ($data eq 'Log In') {
88 &Login($env); #C4::Security
89 &startint($env,'Circulation');
90 } elsif ($data eq 'Quit') {
93 #debug_msg($env,"donext - $donext");
99 #Get list of all items borrower has currently on issue
100 my ($env,$bornum,$dbh)=@_;
101 my $sth=$dbh->prepare("Select * from issues,items,biblio
102 where borrowernumber=$bornum and issues.itemnumber=items.itemnumber
103 and items.biblionumber=biblio.biblionumber
104 and returndate is null
114 while (my $data=$sth->fetchrow_hashref) {
115 my $line = "$data->{'date_due'} $data->{'title'}";
116 # $items[$i]=fmtstr($env,$line,"L29");
117 $items[$i]=fmtstr($env,$line,"L72");
120 return(\@items,\@items2);
125 #checks whether a borrower has overdue items
126 my ($env,$bornum,$dbh)=@_;
127 my $sth=$dbh->prepare("Select * from issues,items,biblio where
128 borrowernumber=$bornum and issues.itemnumber=items.itemnumber and
129 items.biblionumber=biblio.biblionumber");
133 while (my $data=$sth->fetchrow_hashref){
134 output($row,$col,$data->{'title'});
141 my ($env,$itemnum,$dbh,$bornum)=@_;
142 my $sth=$dbh->prepare("Select firstname,surname,issues.borrowernumber,cardnumber,returndate
143 from issues,borrowers where
144 issues.itemnumber='$itemnum' and
145 issues.borrowernumber=borrowers.borrowernumber and issues.returndate is
148 my $borrower=$sth->fetchrow_hashref;
150 if ($borrower->{'borrowernumber'} ne ''){
151 if ($bornum eq $borrower->{'borrowernumber'}){
153 my ($renewstatus) = &renewstatus($env,$dbh,$bornum,$itemnum);
154 my $resp = &msg_yn("Book is issued to this borrower", "Renew?");
156 &renewbook($env,$dbh,$bornum,$itemnum);
160 my $text="Issued to $borrower->{'firstname'} $borrower->{'surname'} ($borrower->{'cardnumber'})";
161 my $resp = &msg_yn($text,"Mark as returned?");
163 &returnrecord($env,$dbh,$borrower->{'borrowernumber'},$itemnum);
170 return($borrower->{'borrowernumber'});
176 # Check for reserves for biblio
177 # does not look at constraints yet
178 my ($env,$dbh,$itemnum)=@_;
180 my $query = "select * from reserves,items
181 where (items.itemnumber = '$itemnum')
182 and (items.biblionumber = reserves.biblionumber)
183 and (reserves.found is null) order by priority";
184 my $sth = $dbh->prepare($query);
186 if (my $data=$sth->fetchrow_hashref) {
187 $resbor = $data->{'borrowernumber'};
194 # check for reserves waiting
195 my ($env,$dbh,$bornum)=@_;
197 my $query = "select * from reserves
198 where (borrowernumber = '$bornum')
199 and (reserves.found='W')";
200 my $sth = $dbh->prepare($query);
202 if (my $data=$sth->fetchrow_hashref) {
203 push @itemswaiting,$data->{'itemnumber'};
205 return (\@itemswaiting);
210 my ($env,$interface)=@_;
212 my ($number,$reason)=dialog("Book Barcode:");
214 return ($number,$reason);
218 my ($env,$interface)=@_;
220 my ($number,$reason,$book)=&borrower_dialog($env); #C4::Interface
223 return ($number,$reason,$book);
227 END { } # module clean-up code here (global destructor)