Lines 40-47
use C4::Dates qw( format_date_in_iso );
Link Here
|
40 |
use Koha::DateUtils; |
40 |
use Koha::DateUtils; |
41 |
use Koha::Calendar; |
41 |
use Koha::Calendar; |
42 |
use Koha::Database; |
42 |
use Koha::Database; |
|
|
43 |
use Koha::Hold; |
44 |
use Koha::Holds; |
43 |
|
45 |
|
44 |
use List::MoreUtils qw( firstidx any ); |
46 |
use List::MoreUtils qw( firstidx any ); |
|
|
47 |
use Carp; |
45 |
|
48 |
|
46 |
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
49 |
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
47 |
|
50 |
|
Lines 155-172
sub AddReserve {
Link Here
|
155 |
$bibitems, $priority, $resdate, $expdate, $notes, |
158 |
$bibitems, $priority, $resdate, $expdate, $notes, |
156 |
$title, $checkitem, $found |
159 |
$title, $checkitem, $found |
157 |
) = @_; |
160 |
) = @_; |
|
|
161 |
|
162 |
if ( Koha::Holds->search( { borrowernumber => $borrowernumber, biblionumber => $biblionumber } )->count() > 0 ) { |
163 |
carp("AddReserve: borrower $borrowernumber already has a hold for biblionumber $biblionumber"); |
164 |
return; |
165 |
} |
166 |
|
158 |
my $dbh = C4::Context->dbh; |
167 |
my $dbh = C4::Context->dbh; |
|
|
168 |
|
159 |
$resdate = format_date_in_iso( $resdate ) if ( $resdate ); |
169 |
$resdate = format_date_in_iso( $resdate ) if ( $resdate ); |
160 |
$resdate = C4::Dates->today( 'iso' ) unless ( $resdate ); |
170 |
$resdate = C4::Dates->today( 'iso' ) unless ( $resdate ); |
|
|
171 |
|
161 |
if ($expdate) { |
172 |
if ($expdate) { |
162 |
$expdate = format_date_in_iso( $expdate ); |
173 |
$expdate = format_date_in_iso( $expdate ); |
163 |
} else { |
174 |
} else { |
164 |
undef $expdate; # make reserves.expirationdate default to null rather than '0000-00-00' |
175 |
undef $expdate; # make reserves.expirationdate default to null rather than '0000-00-00' |
165 |
} |
176 |
} |
166 |
if ( C4::Context->preference( 'AllowHoldDateInFuture' ) ) { |
177 |
|
167 |
# Make room in reserves for this before those of a later reserve date |
178 |
if ( C4::Context->preference('AllowHoldDateInFuture') ) { |
168 |
$priority = _ShiftPriorityByDateAndPriority( $biblionumber, $resdate, $priority ); |
179 |
|
|
|
180 |
# Make room in reserves for this before those of a later reserve date |
181 |
$priority = _ShiftPriorityByDateAndPriority( $biblionumber, $resdate, $priority ); |
169 |
} |
182 |
} |
|
|
183 |
|
170 |
my $waitingdate; |
184 |
my $waitingdate; |
171 |
|
185 |
|
172 |
# If the reserv had the waiting status, we had the value of the resdate |
186 |
# If the reserv had the waiting status, we had the value of the resdate |
Lines 175-194
sub AddReserve {
Link Here
|
175 |
} |
189 |
} |
176 |
|
190 |
|
177 |
# updates take place here |
191 |
# updates take place here |
178 |
my $query = qq{ |
192 |
my $hold = Koha::Hold->new( |
179 |
INSERT INTO reserves |
193 |
{ |
180 |
(borrowernumber,biblionumber,reservedate,branchcode, |
194 |
borrowernumber => $borrowernumber, |
181 |
priority,reservenotes,itemnumber,found,waitingdate,expirationdate) |
195 |
biblionumber => $biblionumber, |
182 |
VALUES |
196 |
reservedate => $resdate, |
183 |
(?,?,?,?,?, |
197 |
branchcode => $branch, |
184 |
?,?,?,?,?) |
198 |
priority => $priority, |
185 |
}; |
199 |
reservenotes => $notes, |
186 |
my $sth = $dbh->prepare($query); |
200 |
itemnumber => $checkitem, |
187 |
$sth->execute( |
201 |
found => $found, |
188 |
$borrowernumber, $biblionumber, $resdate, $branch, $priority, |
202 |
waitingdate => $waitingdate, |
189 |
$notes, $checkitem, $found, $waitingdate, $expdate |
203 |
expirationdate => $expdate |
190 |
); |
204 |
} |
191 |
my $reserve_id = $sth->{mysql_insertid}; |
205 |
)->store(); |
|
|
206 |
my $reserve_id = $hold->id(); |
207 |
|
192 |
# add a reserve fee if needed |
208 |
# add a reserve fee if needed |
193 |
my $fee = GetReserveFee( $borrowernumber, $biblionumber ); |
209 |
my $fee = GetReserveFee( $borrowernumber, $biblionumber ); |
194 |
ChargeReserveFee( $borrowernumber, $fee, $title ); |
210 |
ChargeReserveFee( $borrowernumber, $fee, $title ); |