Browse Source

Add list of items waiting

master
olwen 25 years ago
parent
commit
09e848cb8e
  1. 31
      C4/Circulation/Borrower.pm
  2. 92
      C4/Circulation/Issues.pm
  3. 8
      C4/Circulation/Main.pm
  4. 22
      C4/Interface/FlagsCDK.pm

31
C4/Circulation/Borrower.pm

@ -14,6 +14,7 @@ use C4::Circulation::Main;
use C4::Circulation::Issues;
use C4::Circulation::Renewals;
use C4::Scan;
use C4::Search;
use C4::Stats;
use C4::Format;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
@ -197,12 +198,13 @@ sub checktraps {
my $odues = &C4::Circulation::Main::checkoverdues($env,$bornum,$dbh);
if ($odues > 0) {push (@traps_set,"ODUES");}
#check if borrower has any items waiting
my $itemswaiting = &C4::Circulation::Main::checkwaiting($env,$dbh,$bornum);
my $nowaiting = @$itemswaiting;
if ($nowaiting > 0) { push (@traps_set,"WAITING");}
my ($nowaiting,$itemswaiting) =
&C4::Circulation::Main::checkwaiting($env,$dbh,$bornum);
if ($nowaiting > 0) { push (@traps_set,"WAITING"); }
if (@traps_set[0] ne "" ) {
$issuesallowed,$traps_done =
process_traps($env,$dbh,$bornum,$borrower,$amount,$odues,\@traps_set);
process_traps($env,$dbh,$bornum,$borrower,
$amount,$odues,\@traps_set,$itemswaiting);
#debug_msg($env,"returned issuesallowed $env->{'IssuesAllowed'}");
} else {
$traps_done = "DONE";
@ -213,7 +215,7 @@ sub checktraps {
}
sub process_traps {
my ($env,$dbh,$bornum,$borrower,$amount,$odues,$traps_set) = @_;
my ($env,$dbh,$bornum,$borrower,$amount,$odues,$traps_set,$waiting) = @_;
my $issuesallowed = 1;
my $x = 0;
my %traps;
@ -228,6 +230,8 @@ sub process_traps {
$trapact = &trapscreen($env,$bornum,$borrower,$amount,$traps_set);
if ($trapact eq "FINES") {
&reconcileaccount($env,$dbh,$bornum,$amount,$borrower,$odues);
} elsif ($trapact eq "WAITING") {
reserveslist($env,$borrower,$amount,$odues,$waiting);
} elsif ($trapact eq "ODUES") {
&bulkrenew($env,$dbh,$bornum,$amount,$borrower,$odues);
} elsif ($trapact eq "NOTES") {
@ -293,6 +297,22 @@ sub modifyuser {
#return;
}
sub reserveslist {
my ($env,$borrower,$amount,$odues,$waiting) = @_;
my $dbh=C4Connect;
my @items;
my $x=0;
while (@$waiting[$x] ne "") {
my $resrec = @$waiting[$x];
debug_msg($env,$resrec->{'itemnumber'});
my $itemdata = itemnodata($env,$dbh,$resrec->{'itemnumber'});
push @items,$itemdata;
$x++;
}
reservesdisplay($env,$borrower,$amount,$odues,\@items);
$dbh->disconnect;
}
sub NewBorrowerNumber {
my $dbh=C4Connect;
my $sth=$dbh->prepare("Select max(borrowernumber) from borrowers");
@ -301,6 +321,7 @@ sub NewBorrowerNumber {
$sth->finish;
$data->{'max(borrowernumber)'}++;
return($data->{'max(borrowernumber)'});
}
END { } # module clean-up code here (global destructor)

92
C4/Circulation/Issues.pm

@ -61,45 +61,42 @@ my $priv_func = sub {
sub Issue {
my ($env) = @_;
my $dbh=&C4Connect;
#clear help
helptext('');
#clearscreen();
my $done;
my ($items,$items2,$amountdue);
$env->{'sysarea'} = "Issues";
$done = "Issues";
while ($done eq "Issues") {
my ($bornum,$issuesallowed,$borrower,$reason,$amountdue) = &findborrower($env,$dbh);
#C4::Circulation::Borrowers
$env->{'loanlength'}="";
if ($reason ne "") {
$done = $reason;
#} elsif ($issuesallowed eq "0") {
} elsif ($env->{'IssuesAllowed'} eq '0') {
error_msg($env,"No Issues Allowed =$env->{'IssuesAllowed'}");
} else {
$env->{'bornum'} = $bornum;
$env->{'bcard'} = $borrower->{'cardnumber'};
#deal with alternative loans
#now check items
($items,$items2)=
C4::Circulation::Main::pastitems($env,$bornum,$dbh); #from Circulation.pm
$done = "No";
my $it2p=0;
while ($done eq 'No'){
($done,$items2,$it2p,$amountdue) =
&processitems($env,$bornum,$borrower,$items,
$items2,$it2p,$amountdue);
}
#debug_msg("","after processitems done = $done");
}
#debug_msg($env,"after borrd $done");
}
$dbh->disconnect;
return ($done);
my ($env) = @_;
my $dbh=&C4Connect;
#clear help
helptext('');
#clearscreen();
my $done;
my ($items,$items2,$amountdue);
$env->{'sysarea'} = "Issues";
$done = "Issues";
while ($done eq "Issues") {
my ($bornum,$issuesallowed,$borrower,$reason,$amountdue) = &findborrower($env,$dbh);
#C4::Circulation::Borrowers
$env->{'loanlength'}="";
if ($reason ne "") {
$done = $reason;
#} elsif ($issuesallowed eq "0") {
} elsif ($env->{'IssuesAllowed'} eq '0') {
error_msg($env,"No Issues Allowed =$env->{'IssuesAllowed'}");
} else {
$env->{'bornum'} = $bornum;
$env->{'bcard'} = $borrower->{'cardnumber'};
#deal with alternative loans
#now check items
($items,$items2)=
C4::Circulation::Main::pastitems($env,$bornum,$dbh); #from Circulation.pm
$done = "No";
my $it2p=0;
while ($done eq 'No'){
($done,$items2,$it2p,$amountdue) =
&processitems($env,$bornum,$borrower,$items,
$items2,$it2p,$amountdue);
}
}
}
$dbh->disconnect;
return ($done);
}
@ -113,21 +110,20 @@ sub processitems {
if ($itemnum eq ""){
$reason = "Finished user";
} else {
my ($item,$charge,$datedue) = &issueitem($env,$dbh,$itemnum,$bornum,$items);
if ($datedue ne "") {
my $line = formatitem($env,$item,$datedue,$charge);
$items2->[$it2p] = $line;
$it2p++;
$amountdue += $charge;
}
#$env->{'loanlength'}="";
my ($item,$charge,$datedue) = &issueitem($env,$dbh,$itemnum,$bornum,$items);
if ($datedue ne "") {
my $line = formatitem($env,$item,$datedue,$charge);
$items2->[$it2p] = $line;
$it2p++;
$amountdue += $charge;
}
}
$dbh->disconnect;
#check to see if more books to process for this user
my @done;
if ($env->{'newborrower'} ne "") {$reason = "Finished user";}
if ($reason eq 'Finished user'){
if ($items2 ne "") {
if (@$items2[0] ne "") {
remoteprint($env,$items2,$borrower);
if ($amountdue > 0) {
&reconcileaccount($env,$dbh,$borrower->{'borrowernumber'},$amountdue);

8
C4/Circulation/Main.pm

@ -200,16 +200,18 @@ sub checkreserve{
sub checkwaiting{
# check for reserves waiting
my ($env,$dbh,$bornum)=@_;
my @itemswaiting="";
my @itemswaiting;
my $query = "select * from reserves
where (borrowernumber = '$bornum')
and (reserves.found='W')";
my $sth = $dbh->prepare($query);
$sth->execute();
my $cnt=0;
if (my $data=$sth->fetchrow_hashref) {
push @itemswaiting,$data->{'itemnumber'};
@itemswaiting[$cnt] =$data;
$cnt ++
}
return (\@itemswaiting);
return ($cnt,\@itemswaiting);
}
sub scanbook {

22
C4/Interface/FlagsCDK.pm

@ -13,7 +13,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = 0.01;
@ISA = qw(Exporter);
@EXPORT = qw(&trapscreen &trapsnotes);
@EXPORT = qw(&trapscreen &trapsnotes &reservesdisplay);
%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ],
# your exported package globals go here,
@ -92,4 +92,24 @@ sub trapsnotes {
return $notes;
}
sub reservesdisplay {
my ($env,$borrower,$amount,$odues,$items) = @_;
my $titlepanel = titlepanel($env,$env->{'sysarea'},"Reserves Waiting");
my $borpanel = borrowerbox($env,$borrower,$amount);
$borpanel->draw();
my $x = 0;
my @itemslist;
while (@$items[$x] ne "") {
my $itemdata = @$items[$x];
my $itemrow = fmtstr($env,$itemdata->{'holdingbranch'},"L6");
$itemrow = $itemrow.$itemdata->{'title'}.": ".$itemdata->{'author'};
$itemrow = fmtstr($env,$itemrow,"L68").$itemdata->{'itemtype'};
@itemslist[$x] = $itemrow;
$x++;
}
my $reslist = new Cdk::Scroll('Title'=>"",'List'=>\@itemslist,
'Height'=>10,'Width'=>76,'Xpos'=>1,'Ypos'=>10);
$reslist->activate();
}
END { } # module clean-up code here (global destructor)

Loading…
Cancel
Save