|
Lines 28-33
use C4::Output qw( output_html_with_http_headers );
Link Here
|
| 28 |
|
28 |
|
| 29 |
use Koha::DateUtils qw( dt_from_string ); |
29 |
use Koha::DateUtils qw( dt_from_string ); |
| 30 |
use Koha::Holds; |
30 |
use Koha::Holds; |
|
|
31 |
use Koha::Libraries; |
| 32 |
use Koha::Policy::Holds; |
| 33 |
use C4::Circulation qw( GetBranchItemRule ); |
| 31 |
|
34 |
|
| 32 |
my $input = CGI->new; |
35 |
my $input = CGI->new; |
| 33 |
my $op = $input->param('op') // q|cud-form|; |
36 |
my $op = $input->param('op') // q|cud-form|; |
|
Lines 59-65
if ( $op eq 'cud-form' ) {
Link Here
|
| 59 |
my $clear_hold_notes = $input->param('clear_hold_notes'); |
62 |
my $clear_hold_notes = $input->param('clear_hold_notes'); |
| 60 |
|
63 |
|
| 61 |
@hold_ids = $input->multi_param('hold_id'); |
64 |
@hold_ids = $input->multi_param('hold_id'); |
| 62 |
my @holds_data = (); |
65 |
my @holds_data = (); |
|
|
66 |
my @failed_holds = (); |
| 63 |
|
67 |
|
| 64 |
my $holds_to_update = |
68 |
my $holds_to_update = |
| 65 |
Koha::Holds->search( { reserve_id => { -in => \@hold_ids } }, { join => [ "item", "biblio" ] } ); |
69 |
Koha::Holds->search( { reserve_id => { -in => \@hold_ids } }, { join => [ "item", "biblio" ] } ); |
|
Lines 71-77
if ( $op eq 'cud-form' ) {
Link Here
|
| 71 |
} |
75 |
} |
| 72 |
|
76 |
|
| 73 |
if ( $new_pickup_loc && ( $hold->branchcode ne $new_pickup_loc ) ) { |
77 |
if ( $new_pickup_loc && ( $hold->branchcode ne $new_pickup_loc ) ) { |
| 74 |
$hold->branchcode($new_pickup_loc)->store; |
78 |
|
|
|
79 |
#check if the new pickup location is allowed |
| 80 |
my $pickup_allowed = 1; |
| 81 |
my $item = $hold->item; |
| 82 |
my $patron = $hold->patron; |
| 83 |
my $branch = Koha::Policy::Holds->holds_control_library( $item, $patron ); |
| 84 |
my $branchitemrule = GetBranchItemRule( $branch, $item->effective_itemtype ); |
| 85 |
my $hold_fulfillment_policy = $branchitemrule->{hold_fulfillment_policy}; |
| 86 |
my $item_library = Koha::Libraries->find( { branchcode => $item->homebranch } ); |
| 87 |
my $reason; |
| 88 |
|
| 89 |
if ( $hold_fulfillment_policy eq 'holdgroup' |
| 90 |
&& !$item_library->validate_hold_sibling( { branchcode => $new_pickup_loc } ) ) |
| 91 |
{ |
| 92 |
$pickup_allowed = 0; |
| 93 |
$reason = "pickupNotInHoldGroup"; |
| 94 |
} elsif ( ( $hold_fulfillment_policy eq 'homebranch' || $hold_fulfillment_policy eq 'holdingbranch' ) |
| 95 |
&& $new_pickup_loc ne $item->$hold_fulfillment_policy ) |
| 96 |
{ |
| 97 |
$pickup_allowed = 0; |
| 98 |
$reason = $hold_fulfillment_policy eq 'homebranch' ? 'pickupNotHomeLibrary' : 'pickupNotHoldingLibrary'; |
| 99 |
|
| 100 |
} elsif ( !$item->can_be_transferred( { to => Koha::Libraries->find($new_pickup_loc) } ) ) { |
| 101 |
$pickup_allowed = 0; |
| 102 |
$reason = 'cannotBeTransferred'; |
| 103 |
} |
| 104 |
|
| 105 |
if ($pickup_allowed) { |
| 106 |
$hold->branchcode($new_pickup_loc)->store; |
| 107 |
} else { |
| 108 |
push @failed_holds, { hold => $hold, reason => $reason }; |
| 109 |
next; |
| 110 |
} |
| 75 |
} |
111 |
} |
| 76 |
|
112 |
|
| 77 |
if ( $new_suspend_status ne "" ) { |
113 |
if ( $new_suspend_status ne "" ) { |
|
Lines 104-110
if ( $op eq 'cud-form' ) {
Link Here
|
| 104 |
$template->param( |
140 |
$template->param( |
| 105 |
updated_holds => to_json( \@hold_ids ), |
141 |
updated_holds => to_json( \@hold_ids ), |
| 106 |
updated_holds_obj => \@holds_data, |
142 |
updated_holds_obj => \@holds_data, |
|
|
143 |
failed_holds_obj => \@failed_holds, |
| 107 |
total_updated => scalar @holds_data, |
144 |
total_updated => scalar @holds_data, |
|
|
145 |
total_failed => scalar @failed_holds, |
| 108 |
view => 'report', |
146 |
view => 'report', |
| 109 |
); |
147 |
); |
| 110 |
|
148 |
|
| 111 |
- |
|
|