1 package C4::Circulation; #assumes 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);
19 # set the version for version checking
23 @EXPORT = qw(&Start_circ &scanborrower);
29 &startint($env,'Circulation');
33 while ($donext ne 'Quit') {
34 if ($donext eq "Circ") {
36 ($reason,$data) = menu($env,'console','Circulation',
37 ('Issues','Returns','Borrower Enquiries','Reserves','Log In'));
38 #debug_msg($env,"data = $data");
42 if ($data eq 'Issues') {
43 $donext=Issue($env); #C4::Circulation::Issues
44 #debug_msg("","do next $donext");
45 } elsif ($data eq 'Returns') {
46 $donext=Returns($env); #C4::Circulation::Returns
47 } elsif ($data eq 'Borrower Enquiries'){
48 $donext=Borenq($env); #C4::Circulation::Borrower
49 } elsif ($data eq 'Reserves'){
50 $donext=EnterReserves($env); #C4::Reserves
51 } elsif ($data eq 'Log In') {
53 &Login($env); #C4::Security
54 &startint($env,'Circulation');
55 } elsif ($data eq 'Quit') {
58 #debug_msg($env,"donext - $donext");
64 #Get list of all items borrower has currently on issue
65 my ($env,$bornum,$dbh)=@_;
66 my $sth=$dbh->prepare("Select * from issues,items,biblio
67 where borrowernumber=$bornum and issues.itemnumber=items.itemnumber
68 and items.biblionumber=biblio.biblionumber
69 and returndate is null
79 while (my $data=$sth->fetchrow_hashref) {
80 my $line = "$data->{'date_due'} $data->{'title'}";
81 # $items[$i]=fmtstr($env,$line,"L29");
82 $items[$i]=fmtstr($env,$line,"L72");
85 return(\@items,\@items2);
90 #checks whether a borrower has overdue items
91 my ($env,$bornum,$dbh)=@_;
92 my $sth=$dbh->prepare("Select * from issues,items,biblio where
93 borrowernumber=$bornum and issues.itemnumber=items.itemnumber and
94 items.biblionumber=biblio.biblionumber");
98 while (my $data=$sth->fetchrow_hashref){
99 output($row,$col,$data->{'title'});
106 my ($env,$itemnum,$dbh,$bornum)=@_;
107 my $sth=$dbh->prepare("Select firstname,surname,issues.borrowernumber,cardnumber,returndate
108 from issues,borrowers where
109 issues.itemnumber='$itemnum' and
110 issues.borrowernumber=borrowers.borrowernumber and issues.returndate is
113 my $borrower=$sth->fetchrow_hashref;
115 if ($borrower->{'borrowernumber'} ne ''){
116 if ($bornum eq $borrower->{'borrowernumber'}){
118 my ($renewstatus) = &renewstatus($env,$dbh,$bornum,$itemnum);
119 my $resp = &msg_yn("Book is issued to this borrower", "Renew?");
121 &renewbook($env,$dbh,$bornum,$itemnum);
125 my $text="Issued to $borrower->{'firstname'} $borrower->{'surname'} ($borrower->{'cardnumber'})";
126 my $resp = &msg_yn($text,"Mark as returned?");
128 &returnrecord($env,$dbh,$borrower->{'borrowernumber'},$itemnum);
135 return($borrower->{'borrowernumber'});
141 # Check for reserves for biblio
142 # does not look at constraints yet
143 my ($env,$dbh,$itemnum)=@_;
145 my $query = "select * from reserves,items
146 where (items.itemnumber = '$itemnum')
147 and (items.biblionumber = reserves.biblionumber)
148 and (reserves.found is null) order by priority";
149 my $sth = $dbh->prepare($query);
151 if (my $data=$sth->fetchrow_hashref) {
152 $resbor = $data->{'borrowernumber'};
159 # check for reserves waiting
160 my ($env,$dbh,$bornum)=@_;
162 my $query = "select * from reserves
163 where (borrowernumber = '$bornum')
164 and (reserves.found='W')";
165 my $sth = $dbh->prepare($query);
167 if (my $data=$sth->fetchrow_hashref) {
168 push @itemswaiting,$data->{'itemnumber'};
170 return (\@itemswaiting);
175 my ($env,$interface)=@_;
177 my ($number,$reason)=dialog("Book Barcode:");
179 return ($number,$reason);
183 my ($env,$interface)=@_;
185 my ($number,$reason,$book)=&borrower_dialog($env); #C4::Interface
188 return ($number,$reason,$book);
192 END { } # module clean-up code here (global destructor)