diff --git a/Koha/Virtualshelf.pm b/Koha/Virtualshelf.pm index 1cb82a1c5c..2cea7e61e8 100644 --- a/Koha/Virtualshelf.pm +++ b/Koha/Virtualshelf.pm @@ -361,9 +361,10 @@ sub transfer_ownership { unless $patron_id; ## before we change the owner, collect some details - my $old_owner = Koha::Patrons->find( $self->owner ); - my $new_owner = Koha::Patrons->find($patron_id); - my $library = $new_owner->library->unblessed; + my $old_owner = Koha::Patrons->find( $self->owner ); + my $new_owner = Koha::Patrons->find($patron_id); + my $userenv = C4::Context->userenv; + my $branchcode = $userenv->{branch}; ## first we change the owner $self->remove_share($patron_id) if $self->is_private; @@ -373,16 +374,14 @@ sub transfer_ownership { my $letter = C4::Letters::GetPreparedLetter( module => 'lists', letter_code => 'TRANSFER_OWNERSHIP', - branchcode => $library->{branchcode}, + branchcode => $branchcode, lang => $new_owner->lang || 'default', objects => { old_owner => $old_owner, - new_owner => $new_owner, + owner => $new_owner, shelf => $self, }, - tables => { - 'branches' => $library->{branchcode}, - }, + want_librarian => 1, message_transport_type => 'email', ); diff --git a/installer/data/mysql/en/mandatory/sample_notices.yml b/installer/data/mysql/en/mandatory/sample_notices.yml index 3ca1a9aea5..25ec93fbd8 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.yml +++ b/installer/data/mysql/en/mandatory/sample_notices.yml @@ -1338,10 +1338,11 @@ tables: message_transport_type: email lang: default content: - - "Dear [%- INCLUDE 'patron-title.inc' patron => new_owner -%],
" + - "Dear [%- INCLUDE 'patron-title.inc' patron => owner -%],
" - "
" - - "A public list, titled [% shelf.shelfname | html %], has been transferred to you[% IF ( old_owner ) %] by [%- INCLUDE 'patron-title.inc' patron => old_owner%][% IF ( old_owner.email ) %] ([% old_owner.email | html %])[% END %][% END %].
" + - "A public list, titled [% shelf.shelfname | html %], has been transferred to you[% IF ( librarian ) %] by [%- INCLUDE 'patron-title.inc' patron => librarian %][% END %].
" - "
" + - "[% IF old_owner %]The list was previously owned by [%- INCLUDE 'patron-title.inc' patron => old_owner -%].

[% END %]" - "Thank you
" - "
" diff --git a/t/db_dependent/Koha/Virtualshelf.t b/t/db_dependent/Koha/Virtualshelf.t index c7061cc7b9..fef044292e 100755 --- a/t/db_dependent/Koha/Virtualshelf.t +++ b/t/db_dependent/Koha/Virtualshelf.t @@ -34,9 +34,9 @@ subtest 'transfer_ownership() tests' => sub { $schema->storage->txn_begin; - my $patron_1 = $builder->build_object({ class => 'Koha::Patrons' }); - my $patron_2 = $builder->build_object({ class => 'Koha::Patrons' }); - my $patron_3 = $builder->build_object({ class => 'Koha::Patrons' }); + my $patron_1 = $builder->build_object( { class => 'Koha::Patrons' } ); + my $patron_2 = $builder->build_object( { class => 'Koha::Patrons' } ); + my $patron_3 = $builder->build_object( { class => 'Koha::Patrons' } ); my $public_list = $builder->build_object( { @@ -52,9 +52,8 @@ subtest 'transfer_ownership() tests' => sub { } ); - throws_ok - { $public_list->transfer_ownership } - 'Koha::Exceptions::MissingParameter', + throws_ok { $public_list->transfer_ownership } + 'Koha::Exceptions::MissingParameter', 'Exception thrown if missing parameter'; like( "$@", qr/Mandatory parameter 'patron' missing/, 'Exception string as expected' ); @@ -63,7 +62,7 @@ subtest 'transfer_ownership() tests' => sub { $builder->build_object( { class => 'Koha::Virtualshelfshares', - value => { shelfnumber => $public_list->id, invitekey => undef, borrowernumber => $patron_2->id } + value => { shelfnumber => $public_list->id, invitekey => undef, borrowernumber => $patron_2->id } } ); $builder->build_object( @@ -84,7 +83,7 @@ subtest 'transfer_ownership() tests' => sub { is( $public_list->owner, $patron_2->id, 'Owner changed correctly' ); my $public_list_shares = $public_list->get_shares; - is( $public_list_shares->count, 1, 'Count is correct' ); + is( $public_list_shares->count, 1, 'Count is correct' ); is( $public_list_shares->next->borrowernumber, $patron_2->id, "Public lists don't get the share removed" ); $private_list->transfer_ownership( $patron_2->id ); @@ -93,7 +92,10 @@ subtest 'transfer_ownership() tests' => sub { is( $private_list->owner, $patron_2->id ); my $private_list_shares = $private_list->get_shares; is( $private_list_shares->count, 1, 'Count is correct' ); - is( $private_list_shares->next->borrowernumber, $patron_3->id, "Private lists get the share for the new owner removed" ); + is( + $private_list_shares->next->borrowernumber, $patron_3->id, + "Private lists get the share for the new owner removed" + ); my %params; my $mocked_letters = Test::MockModule->new('C4::Letters'); @@ -114,10 +116,16 @@ subtest 'transfer_ownership() tests' => sub { $public_list->transfer_ownership( $patron_1->id ); $public_list->discard_changes; - is( $params{module}, "lists", "Enqueued letter with module lists correctly" ); + is( $params{module}, "lists", "Enqueued letter with module lists correctly" ); is( $params{letter_code}, "TRANSFER_OWNERSHIP", "Enqueued letter with code TRANSFER_OWNERSHIP correctly" ); - is( $params{objects}->{old_owner}->borrowernumber, $patron_2->borrowernumber, "old_owner passed to enqueue letter correctly" ); - is( $params{objects}->{new_owner}->borrowernumber, $patron_1->borrowernumber, "new_owner passed to enqueue letter correctly" ); + is( + $params{objects}->{old_owner}->borrowernumber, $patron_2->borrowernumber, + "old_owner passed to enqueue letter correctly" + ); + is( + $params{objects}->{owner}->borrowernumber, $patron_1->borrowernumber, + "owner passed to enqueue letter correctly" + ); is( $params{objects}->{shelf}->shelfnumber, $public_list->shelfnumber, "shelf passed to enqueue letter correctly" ); $schema->storage->txn_rollback;