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

(-)a/C4/Reserves.pm (-2 / +101 lines)
Lines 255-266 sub AddReserve { Link Here
255
                    borrowernumber         => $borrowernumber,
255
                    borrowernumber         => $borrowernumber,
256
                    message_transport_type => 'email',
256
                    message_transport_type => 'email',
257
                    from_address           => $admin_email_address,
257
                    from_address           => $admin_email_address,
258
                    to_address           => $admin_email_address,
258
                    to_address             => $admin_email_address,
259
                }
259
                }
260
            );
260
            );
261
        }
261
        }
262
    }
262
    }
263
263
264
    # Send email to borrowers asking to return item whenever a hold is placed on it
265
    if (C4::Context->preference("NotifyToReturnItemWhenHoldIsPlaced")) {
266
        my @borrowers = GetBorrowersToSatisfyHold($hold);
267
        foreach my $borrower (@borrowers) {
268
            if ( !$borrower->{email} ) {
269
                next;
270
            }
271
272
            my $library = Koha::Libraries->find($borrower->{branchcode})->unblessed;
273
            if ( my $letter =  C4::Letters::GetPreparedLetter (
274
                module => 'reserves',
275
                letter_code => 'HOLDPLACED_CONTACT',
276
                branchcode => $branch,
277
                tables => {
278
                    'branches'    => $library,
279
                    'borrowers'   => $borrower,
280
                    'biblio'      => $biblionumber,
281
                    'biblioitems' => $biblionumber,
282
                    'items'       => $checkitem,
283
                },
284
            ) ) {
285
286
                my $admin_email_address = $library->{'branchemail'} || C4::Context->preference('KohaAdminEmailAddress');
287
288
                C4::Letters::EnqueueLetter(
289
                    {   letter                 => $letter,
290
                        borrowernumber         => $borrower->{borrowernumber},
291
                        message_transport_type => 'email',
292
                        from_address           => $admin_email_address,
293
                        to_address             => $borrower->{email},
294
                    }
295
            );
296
            }
297
298
        }
299
    }
300
264
    return $reserve_id;
301
    return $reserve_id;
265
}
302
}
266
303
Lines 2138-2143 sub GetHoldRule { Link Here
2138
    return $sth->fetchrow_hashref();
2175
    return $sth->fetchrow_hashref();
2139
}
2176
}
2140
2177
2178
=head2 GetBorrowersToSatisfyHold
2179
2180
my @borrowers = GetBorrowersToSatisfyHold( $hold );
2181
2182
Returns borrowers who can return item to satisfy a given hold.
2183
2184
=cut
2185
2186
sub GetBorrowersToSatisfyHold {
2187
    my ( $hold ) = @_;
2188
2189
    my $query = "";
2190
2191
    if ($hold->item()) {
2192
        $query = q{
2193
             SELECT borrowers.borrowernumber
2194
               FROM reserves
2195
               JOIN items ON reserves.itemnumber = items.itemnumber
2196
               JOIN issues ON issues.itemnumber = items.itemnumber
2197
               JOIN borrowers ON issues.borrowernumber = borrowers.borrowernumber
2198
              WHERE reserves.reserve_id = ?
2199
        };
2200
    }
2201
    elsif ($hold->biblio()) {
2202
        $query = q{
2203
             SELECT borrowers.borrowernumber
2204
               FROM reserves
2205
               JOIN biblio ON reserves.biblionumber = biblio.biblionumber
2206
               JOIN items ON items.biblionumber = biblio.biblionumber
2207
               JOIN issues ON issues.itemnumber = items.itemnumber
2208
               JOIN borrowers ON issues.borrowernumber = borrowers.borrowernumber
2209
              WHERE reserves.reserve_id = ?
2210
        };
2211
    }
2212
2213
    my $library = C4::Context->preference("NotifyToReturnItemFromLibrary");
2214
    my $dbh = C4::Context->dbh;
2215
    my $sth;
2216
2217
    if ($library eq 'RequestorLibrary') {
2218
        $query .= " AND borrowers.branchcode = ?";
2219
	$sth = $dbh->prepare( $query );
2220
	$sth->execute( $hold->id(), $hold->borrower()->branchcode );
2221
    }
2222
    elsif ($library eq 'ItemHomeLibrary') {
2223
        $query .= " AND items.homebranch = ?";
2224
	$sth = $dbh->prepare( $query );
2225
	$sth->execute( $hold->id(), $hold->borrower()->branchcode );
2226
    }
2227
    else {
2228
	$sth = $dbh->prepare( $query );
2229
	$sth->execute( $hold->id() );
2230
    }
2231
2232
    my @results = ();
2233
    while ( my $data = $sth->fetchrow_hashref ) {
2234
        my $borrower = C4::Members::GetMember(borrowernumber => $data->{borrowernumber});
2235
        push( @results, $borrower );
2236
    }
2237
2238
    return @results;
2239
}
2240
2141
=head1 AUTHOR
2241
=head1 AUTHOR
2142
2242
2143
Koha Development Team <http://koha-community.org/>
2243
Koha Development Team <http://koha-community.org/>
2144
- 

Return to bug 17509