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

(-)a/Koha/ItemType.pm (-4 / +5 lines)
Lines 23-29 use C4::Koha; Link Here
23
use C4::Languages;
23
use C4::Languages;
24
use Koha::Database;
24
use Koha::Database;
25
use Koha::Localizations;
25
use Koha::Localizations;
26
use Koha::Exceptions;
27
26
28
use base qw(Koha::Object);
27
use base qw(Koha::Object);
29
28
Lines 91-98 sub translated_descriptions { Link Here
91
}
90
}
92
91
93
92
93
94
=head3 can_be_deleted
94
=head3 can_be_deleted
95
my $overalltotal = Koha::ItemType->can_be_deleted();
95
96
my $can_be_deleted = Koha::ItemType->can_be_deleted();
96
97
97
Counts up the number of biblioitems and items with itemtype (code) and hands back the combined number of biblioitems and items with the itemtype
98
Counts up the number of biblioitems and items with itemtype (code) and hands back the combined number of biblioitems and items with the itemtype
98
99
Lines 100-107 Counts up the number of biblioitems and items with itemtype (code) and hands bac Link Here
100
101
101
sub can_be_deleted {
102
sub can_be_deleted {
102
    my ($self) = @_;
103
    my ($self) = @_;
103
    my $nb_items = Koha::Items->search( { 'itype' => $self->itemtype} )->count;
104
    my $nb_items = Koha::Items->search( { itype => $self->itemtype } )->count;
104
    my $nb_biblioitems = Koha::Biblioitems->search( { 'itemtype' => $self->itemtype} )->count;
105
    my $nb_biblioitems = Koha::Biblioitems->search( { itemtype => $self->itemtype } )->count;
105
    return $nb_items + $nb_biblioitems == 0 ? 1 : 0;
106
    return $nb_items + $nb_biblioitems == 0 ? 1 : 0;
106
}
107
}
107
108
(-)a/admin/itemtypes.pl (-4 / +4 lines)
Lines 139-151 if ( $op eq 'add_form' ) { Link Here
139
    $op          = 'list';
139
    $op          = 'list';
140
140
141
 } elsif ( $op eq 'delete_confirm' ) {
141
 } elsif ( $op eq 'delete_confirm' ) {
142
    my $ItemType = Koha::ItemTypes->find($itemtype_code);
142
    my $itemtype = Koha::ItemTypes->find($itemtype_code);
143
    my $overalltotal = $ItemType->can_be_deleted();
143
    my $can_be_deleted = $itemtype->can_be_deleted();
144
    if ($overalltotal == 0) {
144
    if ($can_be_deleted == 0) {
145
        push @messages, { type => 'error', code => 'cannot_be_deleted'};
145
        push @messages, { type => 'error', code => 'cannot_be_deleted'};
146
        $op = 'list';
146
        $op = 'list';
147
    } else {
147
    } else {
148
        $template->param( itemtype => $ItemType, );
148
        $template->param( itemtype => $itemtype, );
149
    }
149
    }
150
150
151
} elsif ( $op eq 'delete_confirmed' ) {
151
} elsif ( $op eq 'delete_confirmed' ) {
(-)a/t/db_dependent/Koha/ItemTypes.t (-9 / +4 lines)
Lines 19-25 Link Here
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
21
22
use Test::More tests => 26;
22
use Test::More tests => 24;
23
use Data::Dumper;
23
use Data::Dumper;
24
use Koha::Database;
24
use Koha::Database;
25
use t::lib::Mocks;
25
use t::lib::Mocks;
Lines 135-150 my $item_type = $builder->build_object({ class => 'Koha::ItemTypes' }); Link Here
135
is( $item_type->can_be_deleted, 1, 'An item type that is not used can be deleted');
135
is( $item_type->can_be_deleted, 1, 'An item type that is not used can be deleted');
136
136
137
my $item = $builder->build_object({ class => 'Koha::Items', value => { itype => $item_type->itemtype }});
137
my $item = $builder->build_object({ class => 'Koha::Items', value => { itype => $item_type->itemtype }});
138
139
is( $item_type->can_be_deleted, 0, 'An item type that is used by an item cannot be deleted' );
138
is( $item_type->can_be_deleted, 0, 'An item type that is used by an item cannot be deleted' );
139
$item->delete;
140
140
141
my $biblio = $builder->build_object({ class => 'Koha::Biblioitems', value => { itemtype => $item_type->itemtype }});
141
my $biblioitem = $builder->build_object({ class => 'Koha::Biblioitems', value => { itemtype => $item_type->itemtype }});
142
143
is ( $item_type->can_be_deleted, 0, 'An item type that is used by an item and a biblioitem cannot be deleted' );
142
is ( $item_type->can_be_deleted, 0, 'An item type that is used by an item and a biblioitem cannot be deleted' );
144
143
$biblioitem->delete;
145
is ( $item->delete, 1, 'An item has been deleted' );
146
147
is ( $biblio->delete, 1, 'A biblioitem has been deleted' );
148
144
149
is ( $item_type->can_be_deleted, 1, 'The item type that was being used by the removed item and biblioitem can now be deleted' );
145
is ( $item_type->can_be_deleted, 1, 'The item type that was being used by the removed item and biblioitem can now be deleted' );
150
146
151
- 

Return to bug 17944