View | Details | Raw Unified | Return to bug 26515
Collapse All | Expand All

(-)a/Koha/Acquisition/Order.pm (-2 / +1 lines)
Lines 131-137 sub cancel { Link Here
131
        my $biblio = $self->biblio;
131
        my $biblio = $self->biblio;
132
        if ( $biblio and $delete_biblio ) {
132
        if ( $biblio and $delete_biblio ) {
133
133
134
            if (    $biblio->active_orders->count == 0
134
            if (    $biblio->active_orders->count - 1 == 0 # minus ourself
135
                and $biblio->subscriptions->count == 0
135
                and $biblio->subscriptions->count == 0
136
                and $biblio->items->count == 0 )
136
                and $biblio->items->count == 0 )
137
            {
137
            {
Lines 141-147 sub cancel { Link Here
141
                  if $error;
141
                  if $error;
142
            }
142
            }
143
            else {
143
            else {
144
145
                $self->add_message({ message => 'error_delbiblio' });
144
                $self->add_message({ message => 'error_delbiblio' });
146
            }
145
            }
147
        }
146
        }
(-)a/t/db_dependent/Koha/Acquisition/Order.t (-12 / +47 lines)
Lines 592-601 subtest 'filter_by_current & filter_by_cancelled' => sub { Link Here
592
592
593
subtest 'cancel() tests' => sub {
593
subtest 'cancel() tests' => sub {
594
594
595
    plan tests => 32;
595
    plan tests => 38;
596
596
597
    $schema->storage->txn_begin;
597
    $schema->storage->txn_begin;
598
598
599
    my $reason = 'Some reason';
600
599
    # Scenario:
601
    # Scenario:
600
    # * order with one item attached
602
    # * order with one item attached
601
    # * the item is on loan
603
    # * the item is on loan
Lines 627-640 subtest 'cancel() tests' => sub { Link Here
627
    # Add a checkout so cancelling fails because od 'book_on_loan'
629
    # Add a checkout so cancelling fails because od 'book_on_loan'
628
    C4::Circulation::AddIssue( $patron->unblessed, $item->barcode );
630
    C4::Circulation::AddIssue( $patron->unblessed, $item->barcode );
629
631
630
    my $result = $order->cancel({ reason => 'Some reason' });
632
    my $result = $order->cancel({ reason => $reason });
631
    # refresh the order object
633
    # refresh the order object
632
    $order->discard_changes;
634
    $order->discard_changes;
633
635
634
    is( $result, $order, 'self is returned' );
636
    is( $result, $order, 'self is returned' );
635
    is( $order->orderstatus, 'cancelled', 'Order is not marked as cancelled' );
637
    is( $order->orderstatus, 'cancelled', 'Order is not marked as cancelled' );
636
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is not undef' );
638
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is not undef' );
637
    is( $order->cancellationreason, 'Some reason', 'cancellationreason is set' );
639
    is( $order->cancellationreason, $reason, 'cancellationreason is set' );
638
    is( ref(Koha::Items->find($item->id)), 'Koha::Item', 'The item is present' );
640
    is( ref(Koha::Items->find($item->id)), 'Koha::Item', 'The item is present' );
639
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is present' );
641
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is present' );
640
    my @messages = @{ $order->messages };
642
    my @messages = @{ $order->messages };
Lines 651-662 subtest 'cancel() tests' => sub { Link Here
651
    C4::Circulation::AddReturn( $item->barcode );
653
    C4::Circulation::AddReturn( $item->barcode );
652
654
653
    $order->reset_messages;
655
    $order->reset_messages;
654
    $order->cancel({ reason => 'Some reason' })
656
    $order->cancel({ reason => $reason })
655
          ->discard_changes;
657
          ->discard_changes;
656
658
657
    is( $order->orderstatus, 'cancelled', 'Order is marked as cancelled' );
659
    is( $order->orderstatus, 'cancelled', 'Order is marked as cancelled' );
658
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is set' );
660
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is set' );
659
    is( $order->cancellationreason, 'Some reason', 'cancellationreason is undef' );
661
    is( $order->cancellationreason, $reason, 'cancellationreason is undef' );
660
    is( Koha::Items->find($item->id), undef, 'The item is no longer present' );
662
    is( Koha::Items->find($item->id), undef, 'The item is no longer present' );
661
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is present' );
663
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is present' );
662
    @messages = @{ $order->messages };
664
    @messages = @{ $order->messages };
Lines 686-697 subtest 'cancel() tests' => sub { Link Here
686
    )->reset_messages;
688
    )->reset_messages;
687
    $order->add_item( $item_1->id );
689
    $order->add_item( $item_1->id );
688
690
689
    $order->cancel({ reason => 'Some reason', delete_biblio => 1 })
691
    $order->cancel({ reason => $reason, delete_biblio => 1 })
690
          ->discard_changes;
692
          ->discard_changes;
691
693
692
    is( $order->orderstatus, 'cancelled', 'Order is marked as cancelled' );
694
    is( $order->orderstatus, 'cancelled', 'Order is marked as cancelled' );
693
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is set' );
695
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is set' );
694
    is( $order->cancellationreason, 'Some reason', 'cancellationreason is undef' );
696
    is( $order->cancellationreason, $reason, 'cancellationreason is undef' );
695
    is( Koha::Items->find($item_1->id), undef, 'The item is no longer present' );
697
    is( Koha::Items->find($item_1->id), undef, 'The item is no longer present' );
696
    is( ref(Koha::Items->find($item_2->id)), 'Koha::Item', 'The item is still present' );
698
    is( ref(Koha::Items->find($item_2->id)), 'Koha::Item', 'The item is still present' );
697
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is still present' );
699
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is still present' );
Lines 734-745 subtest 'cancel() tests' => sub { Link Here
734
        }
736
        }
735
    );
737
    );
736
738
737
    $order->cancel({ reason => 'Some reason', delete_biblio => 1 })
739
    $order->cancel({ reason => $reason, delete_biblio => 1 })
738
          ->discard_changes;
740
          ->discard_changes;
739
741
740
    is( $order->orderstatus, 'cancelled', 'Order is marked as cancelled' );
742
    is( $order->orderstatus, 'cancelled', 'Order is marked as cancelled' );
741
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is set' );
743
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is set' );
742
    is( $order->cancellationreason, 'Some reason', 'cancellationreason is undef' );
744
    is( $order->cancellationreason, $reason, 'cancellationreason is undef' );
743
    is( Koha::Items->find($item->id), undef, 'The item is no longer present' );
745
    is( Koha::Items->find($item->id), undef, 'The item is no longer present' );
744
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is still present' );
746
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is still present' );
745
    @messages = @{ $order->messages };
747
    @messages = @{ $order->messages };
Lines 778-793 subtest 'cancel() tests' => sub { Link Here
778
        }
780
        }
779
    );
781
    );
780
782
781
    $order->cancel({ reason => 'Some reason', delete_biblio => 1 })
783
    $order->cancel({ reason => $reason, delete_biblio => 1 })
782
          ->discard_changes;
784
          ->discard_changes;
783
785
784
    is( $order->orderstatus, 'cancelled', 'Order is marked as cancelled' );
786
    is( $order->orderstatus, 'cancelled', 'Order is marked as cancelled' );
785
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is set' );
787
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is set' );
786
    is( $order->cancellationreason, 'Some reason', 'cancellationreason is undef' );
788
    is( $order->cancellationreason, $reason, 'cancellationreason is undef' );
787
    is( Koha::Items->find($item->id), undef, 'The item is no longer present' );
789
    is( Koha::Items->find($item->id), undef, 'The item is no longer present' );
788
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is still present' );
790
    is( ref(Koha::Biblios->find($biblio_id)), 'Koha::Biblio', 'The biblio is still present' );
789
    @messages = @{ $order->messages };
791
    @messages = @{ $order->messages };
790
    is( $messages[0]->message, 'error_delbiblio', 'Cannot delete biblio and it gets notified' );
792
    is( $messages[0]->message, 'error_delbiblio', 'Cannot delete biblio and it gets notified' );
791
793
794
    # Scenario:
795
    # * order with one item attached
796
    # * delete_biblio is passed
797
    # => order is cancelled
798
    # => item in order is removed
799
    # => biblio in order is removed
800
801
    $item      = $builder->build_sample_item;
802
    $biblio_id = $item->biblio->id;
803
    $order     = $builder->build_object(
804
        {
805
            class => 'Koha::Acquisition::Orders',
806
            value => {
807
                orderstatus             => 'new',
808
                biblionumber            => $item->biblio->id,
809
                datecancellationprinted => undef,
810
                cancellationreason      => undef,
811
            }
812
        }
813
    );
814
    $order->add_item( $item->id );
815
816
    $order->cancel({ reason => $reason, delete_biblio => 1 });
817
    # refresh the order object
818
    $order->discard_changes;
819
820
    is( $order->orderstatus, 'cancelled', 'Order is not marked as cancelled' );
821
    isnt( $order->datecancellationprinted, undef, 'datecancellationprinted is not undef' );
822
    is( $order->cancellationreason, $reason, 'cancellationreason is set' );
823
    is( Koha::Items->find($item->id), undef, 'The item is not present' );
824
    is( Koha::Biblios->find($biblio_id), undef, 'The biblio is not present' );
825
    @messages = @{ $order->messages };
826
    is( scalar @messages, 0, 'No errors' );
827
792
    $schema->storage->txn_rollback;
828
    $schema->storage->txn_rollback;
793
};
829
};
794
- 

Return to bug 26515