Lines 156-164
sub AddReserve {
Link Here
|
156 |
$bibitems, $priority, $resdate, $expdate, $notes, |
156 |
$bibitems, $priority, $resdate, $expdate, $notes, |
157 |
$title, $checkitem, $found |
157 |
$title, $checkitem, $found |
158 |
) = @_; |
158 |
) = @_; |
159 |
my $fee = |
|
|
160 |
GetReserveFee($borrowernumber, $biblionumber, |
161 |
$bibitems ); |
162 |
my $dbh = C4::Context->dbh; |
159 |
my $dbh = C4::Context->dbh; |
163 |
$resdate = format_date_in_iso( $resdate ) if ( $resdate ); |
160 |
$resdate = format_date_in_iso( $resdate ) if ( $resdate ); |
164 |
$resdate = C4::Dates->today( 'iso' ) unless ( $resdate ); |
161 |
$resdate = C4::Dates->today( 'iso' ) unless ( $resdate ); |
Lines 178-186
sub AddReserve {
Link Here
|
178 |
$waitingdate = $resdate; |
175 |
$waitingdate = $resdate; |
179 |
} |
176 |
} |
180 |
|
177 |
|
181 |
#eval { |
|
|
182 |
# updates take place here |
178 |
# updates take place here |
183 |
if ( $fee > 0 ) { |
179 |
my $fee = GetReserveFee( $borrowernumber ); |
|
|
180 |
if ( $fee ) { |
184 |
my $nextacctno = &getnextacctno( $borrowernumber ); |
181 |
my $nextacctno = &getnextacctno( $borrowernumber ); |
185 |
my $query = qq{ |
182 |
my $query = qq{ |
186 |
INSERT INTO accountlines |
183 |
INSERT INTO accountlines |
Lines 652-742
sub GetOtherReserves {
Link Here
|
652 |
|
649 |
|
653 |
=head2 GetReserveFee |
650 |
=head2 GetReserveFee |
654 |
|
651 |
|
655 |
$fee = GetReserveFee($borrowernumber,$biblionumber,$biblionumber); |
652 |
$fee = GetReserveFee( $borrowernumber ); |
656 |
|
653 |
|
657 |
Calculate the fee for a reserve |
654 |
Calculate the fee for a reserve. Returns undef if no fee is found. |
|
|
655 |
|
656 |
NOTE: This code is simplified on bug 14702. The old checks were unneeded |
657 |
and erroneous. This routine is called at the moment of adding a reserve, |
658 |
we just need to pass the hold fee. |
658 |
|
659 |
|
659 |
=cut |
660 |
=cut |
660 |
|
661 |
|
661 |
sub GetReserveFee { |
662 |
sub GetReserveFee { |
662 |
my ($borrowernumber, $biblionumber, $bibitems ) = @_; |
663 |
my ( $borrowernumber ) = @_; |
663 |
|
664 |
my $dbh = C4::Context->dbh; |
664 |
#check for issues; |
|
|
665 |
my $dbh = C4::Context->dbh; |
666 |
my $query = qq{ |
665 |
my $query = qq{ |
667 |
SELECT * FROM borrowers |
666 |
SELECT reservefee |
668 |
LEFT JOIN categories ON borrowers.categorycode = categories.categorycode |
667 |
FROM borrowers |
669 |
WHERE borrowernumber = ? |
668 |
LEFT JOIN categories ON borrowers.categorycode = categories.categorycode |
|
|
669 |
WHERE borrowernumber = ? |
670 |
}; |
670 |
}; |
671 |
my $sth = $dbh->prepare($query); |
671 |
my $sth = $dbh->prepare( $query ); |
672 |
$sth->execute($borrowernumber); |
672 |
$sth->execute( $borrowernumber ); |
673 |
my $data = $sth->fetchrow_hashref; |
673 |
my $data = $sth->fetchrow_hashref; |
674 |
my $fee = $data->{'reservefee'}; |
674 |
if( $data && $data->{'reservefee'} > 0 ) { |
675 |
my $cntitems = @- > $bibitems; |
675 |
return $data->{'reservefee'}; |
676 |
|
|
|
677 |
if ( $fee > 0 ) { |
678 |
|
679 |
# check for items on issue |
680 |
# first find biblioitem records |
681 |
my @biblioitems; |
682 |
my $sth1 = $dbh->prepare( |
683 |
"SELECT * FROM biblio LEFT JOIN biblioitems on biblio.biblionumber = biblioitems.biblionumber |
684 |
WHERE (biblio.biblionumber = ?)" |
685 |
); |
686 |
$sth1->execute($biblionumber); |
687 |
while ( my $data1 = $sth1->fetchrow_hashref ) { |
688 |
my $found = 0; |
689 |
my $x = 0; |
690 |
while ( $x < $cntitems ) { |
691 |
if ( @$bibitems->{'biblioitemnumber'} == |
692 |
$data->{'biblioitemnumber'} ) |
693 |
{ |
694 |
$found = 1; |
695 |
} |
696 |
$x++; |
697 |
} |
698 |
|
699 |
if ( $found == 0 ) { |
700 |
push @biblioitems, $data1; |
701 |
} |
702 |
} |
703 |
my $cntitemsfound = @biblioitems; |
704 |
my $issues = 0; |
705 |
my $x = 0; |
706 |
my $allissued = 1; |
707 |
while ( $x < $cntitemsfound ) { |
708 |
my $bitdata = $biblioitems[$x]; |
709 |
my $sth2 = $dbh->prepare( |
710 |
"SELECT * FROM items |
711 |
WHERE biblioitemnumber = ?" |
712 |
); |
713 |
$sth2->execute( $bitdata->{'biblioitemnumber'} ); |
714 |
while ( my $itdata = $sth2->fetchrow_hashref ) { |
715 |
my $sth3 = $dbh->prepare( |
716 |
"SELECT * FROM issues |
717 |
WHERE itemnumber = ?" |
718 |
); |
719 |
$sth3->execute( $itdata->{'itemnumber'} ); |
720 |
if ( my $isdata = $sth3->fetchrow_hashref ) { |
721 |
} |
722 |
else { |
723 |
$allissued = 0; |
724 |
} |
725 |
} |
726 |
$x++; |
727 |
} |
728 |
if ( $allissued == 0 ) { |
729 |
my $rsth = |
730 |
$dbh->prepare("SELECT * FROM reserves WHERE biblionumber = ?"); |
731 |
$rsth->execute($biblionumber); |
732 |
if ( my $rdata = $rsth->fetchrow_hashref ) { |
733 |
} |
734 |
else { |
735 |
$fee = 0; |
736 |
} |
737 |
} |
738 |
} |
676 |
} |
739 |
return $fee; |
677 |
return; |
740 |
} |
678 |
} |
741 |
|
679 |
|
742 |
=head2 GetReservesToBranch |
680 |
=head2 GetReservesToBranch |
743 |
- |
|
|