|
Lines 18-24
Link Here
|
| 18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
| 19 |
use utf8; |
19 |
use utf8; |
| 20 |
|
20 |
|
| 21 |
use Test::More tests => 68; |
21 |
use Test::More tests => 69; |
| 22 |
use Test::Exception; |
22 |
use Test::Exception; |
| 23 |
use Test::MockModule; |
23 |
use Test::MockModule; |
| 24 |
use Test::Deep qw( cmp_deeply ); |
24 |
use Test::Deep qw( cmp_deeply ); |
|
Lines 42-47
use C4::Overdues qw( CalcFine UpdateFine get_chargeable_units );
Link Here
|
| 42 |
use C4::Members::Messaging qw( SetMessagingPreference ); |
42 |
use C4::Members::Messaging qw( SetMessagingPreference ); |
| 43 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
43 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
| 44 |
use Koha::Database; |
44 |
use Koha::Database; |
|
|
45 |
use Koha::Bookings; |
| 45 |
use Koha::Items; |
46 |
use Koha::Items; |
| 46 |
use Koha::Item::Transfers; |
47 |
use Koha::Item::Transfers; |
| 47 |
use Koha::Checkouts; |
48 |
use Koha::Checkouts; |
|
Lines 4584-4589
subtest 'CanBookBeIssued | recalls' => sub {
Link Here
|
| 4584 |
$recall->set_cancelled; |
4585 |
$recall->set_cancelled; |
| 4585 |
}; |
4586 |
}; |
| 4586 |
|
4587 |
|
|
|
4588 |
subtest 'CanBookBeIssued | bookings' => sub { |
| 4589 |
plan tests => 4; |
| 4590 |
|
| 4591 |
my $schema = Koha::Database->schema; |
| 4592 |
$schema->storage->txn_begin; |
| 4593 |
|
| 4594 |
my $patron1 = $builder->build_object( { class => 'Koha::Patrons' } ); |
| 4595 |
my $patron2 = $builder->build_object( { class => 'Koha::Patrons' } ); |
| 4596 |
my $item = $builder->build_sample_item( { bookable => 1 } ); |
| 4597 |
|
| 4598 |
# item-level booking |
| 4599 |
my $booking = Koha::Booking->new( |
| 4600 |
{ |
| 4601 |
patron_id => $patron1->borrowernumber, |
| 4602 |
item_id => $item->itemnumber, |
| 4603 |
biblio_id => $item->biblio->biblionumber, |
| 4604 |
start_date => dt_from_string()->subtract( days => 1 ), |
| 4605 |
end_date => dt_from_string()->add( days => 6 ), |
| 4606 |
} |
| 4607 |
)->store(); |
| 4608 |
|
| 4609 |
# Booking encompasses proposed checkout |
| 4610 |
my ( $issuingimpossible, $needsconfirmation, $alerts, $messages ) = CanBookBeIssued( |
| 4611 |
$patron2, $item->barcode, |
| 4612 |
dt_from_string()->add( days => 5 ), |
| 4613 |
undef, undef, undef |
| 4614 |
); |
| 4615 |
is( |
| 4616 |
$issuingimpossible->{BOOKED_TO_ANOTHER}->booking_id, |
| 4617 |
$booking->booking_id, |
| 4618 |
"Another patron has booked this item with a start date before the proposed due date" |
| 4619 |
); |
| 4620 |
|
| 4621 |
( $issuingimpossible, $needsconfirmation, $alerts, $messages ) = CanBookBeIssued( |
| 4622 |
$patron1, $item->barcode, |
| 4623 |
dt_from_string()->add( days => 5 ), |
| 4624 |
undef, undef, undef |
| 4625 |
); |
| 4626 |
is( |
| 4627 |
$alerts->{BOOKED}->booking_id, |
| 4628 |
$booking->booking_id, "Booked to this user" |
| 4629 |
); |
| 4630 |
|
| 4631 |
# Booking start will clash before issue due |
| 4632 |
$booking->start_date( dt_from_string()->add( days => 3 ) )->store(); |
| 4633 |
|
| 4634 |
( $issuingimpossible, $needsconfirmation, $alerts, $messages ) = CanBookBeIssued( |
| 4635 |
$patron2, $item->barcode, |
| 4636 |
dt_from_string()->add( days => 5 ), |
| 4637 |
undef, undef, undef |
| 4638 |
); |
| 4639 |
is( |
| 4640 |
$needsconfirmation->{BOOKED_TO_ANOTHER}->booking_id, |
| 4641 |
$booking->booking_id, |
| 4642 |
"Another patron has booked this item for a period starting before the proposed due date" |
| 4643 |
); |
| 4644 |
|
| 4645 |
( $issuingimpossible, $needsconfirmation, $alerts, $messages ) = CanBookBeIssued( |
| 4646 |
$patron1, $item->barcode, |
| 4647 |
dt_from_string()->add( days => 5 ), |
| 4648 |
undef, undef, undef |
| 4649 |
); |
| 4650 |
is( |
| 4651 |
$needsconfirmation->{BOOKED_EARLY}->booking_id, |
| 4652 |
$booking->booking_id, |
| 4653 |
"Booked to this user, but they're collecting early" |
| 4654 |
); |
| 4655 |
|
| 4656 |
$schema->storage->txn_rollback; |
| 4657 |
}; |
| 4658 |
|
| 4587 |
subtest 'AddReturn should clear items.onloan for unissued items' => sub { |
4659 |
subtest 'AddReturn should clear items.onloan for unissued items' => sub { |
| 4588 |
plan tests => 1; |
4660 |
plan tests => 1; |
| 4589 |
|
4661 |
|
| 4590 |
- |
|
|