Bug 30072: Add missing hold actions plugin hooks

This patch introduces the after_hold_action plugin hook, with 4
different 'action' parameters:

- fill
- cancel
- suspend
- resume

To test:
1. Apply the unit tests
2. Run:
   $ kshell
  k$ t/db_dependent/Koha/Plugins/Holds_hooks.t -v
=> FAIL: The hooks are not in the code, so the expected output from the
Koha::Plugin::Test plugin is not there, and the tests fail
3. Apply this patch
4. Repeat 2
=> SUCCESS: Tests pass!
5. Sign off :-D

Note: I think we could deprecate 'after_hold_create' and migrate it to
the one introduced here, using the 'place' action.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Tomas Cohen Arazi 2022-02-11 15:28:31 -03:00 committed by Kyle Hall
parent ecbe50aa31
commit f2d1b126b9
2 changed files with 36 additions and 2 deletions

View File

@ -1128,7 +1128,15 @@ sub ModReserveFill {
if C4::Context->preference('HoldsLog');
# FIXME Must call Koha::Hold->cancel ? => No, should call ->filled and add the correct log
Koha::Old::Hold->new( $hold->unblessed() )->store();
my $old_hold = Koha::Old::Hold->new( $hold->unblessed() )->store();
Koha::Plugins->call(
'after_hold_action',
{
action => 'fill',
payload => { hold => $old_hold->get_from_storage }
}
);
$hold->delete();

View File

@ -34,6 +34,7 @@ use Koha::Items;
use Koha::Libraries;
use Koha::Old::Holds;
use Koha::Calendar;
use Koha::Plugins;
use Koha::Exceptions::Hold;
@ -112,6 +113,14 @@ sub suspend_hold {
$self->suspend_until($date);
$self->store();
Koha::Plugins->call(
'after_hold_action',
{
action => 'suspend',
payload => { hold => $self->get_from_storage }
}
);
logaction( 'HOLDS', 'SUSPEND', $self->reserve_id, $self )
if C4::Context->preference('HoldsLog');
@ -132,6 +141,14 @@ sub resume {
$self->store();
Koha::Plugins->call(
'after_hold_action',
{
action => 'resume',
payload => { hold => $self->get_from_storage }
}
);
logaction( 'HOLDS', 'RESUME', $self->reserve_id, $self )
if C4::Context->preference('HoldsLog');
@ -545,7 +562,16 @@ sub cancel {
}
}
$self->_move_to_old;
my $old_me = $self->_move_to_old;
Koha::Plugins->call(
'after_hold_action',
{
action => 'cancel',
payload => { hold => $old_me->get_from_storage }
}
);
$self->SUPER::delete(); # Do not add a DELETE log
# now fix the priority on the others....