-#! /usr/bin/perl
+#!/usr/bin/perl
# This file is part of Koha.
#
my $input = CGI->new;
my $op = $input->param('op') || 'list';
-my $tab = $input->param('tab'),
+my $tab = $input->param('tab');
+my $auto_refresh = $input->param('auto_refresh');
+my $refresh_delay = $input->param('refresh_delay');
my @messages;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
template_name => "circ/curbside_pickups.tt",
query => $input,
type => "intranet",
- flagsrequired => { parameters => 'manage_curbside_pickups' },
+ flagsrequired => { circulate => 'manage_curbside_pickups' },
}
);
my $branchcode = C4::Context->userenv()->{'branch'};
my $libraries = Koha::Libraries->search( {}, { order_by => ['branchname'] } );
if ( $op eq 'find-patron' ) {
- my $cardnumber = $input->param('cardnumber');
my $borrowernumber = $input->param('borrowernumber');
- my $patron =
- $cardnumber
- ? Koha::Patrons->find( { cardnumber => $cardnumber } )
- : Koha::Patrons->find($borrowernumber);
+ my $patron = Koha::Patrons->find($borrowernumber);
- my $existing_curbside_pickups;
-
- if ( $patron ){
- $existing_curbside_pickups = Koha::CurbsidePickups->search(
- {
- branchcode => $branchcode,
- borrowernumber => $patron->id,
- delivered_datetime => undef,
- scheduled_pickup_datetime => { '>' => \'DATE(NOW())' },
- }
- );
- } else {
- push @messages, {
- type => 'error',
- code => 'no_patron_found',
- cardnumber => $cardnumber
- };
- }
+ my $existing_curbside_pickups = Koha::CurbsidePickups->search(
+ {
+ branchcode => $branchcode,
+ borrowernumber => $patron->id,
+ delivered_datetime => undef,
+ }
+ )->filter_by_scheduled_today;
$tab = 'schedule-pickup';
$template->param(
)->store;
$pickup->notify_new_pickup;
} catch {
- if ( $_->isa('Koha::Exceptions::CurbsidePickup::TooManyPickups') ) {
+ if ( $_->isa('Koha::Exceptions::CurbsidePickup::NotEnabled') ) {
+ push @messages, {
+ type => 'error',
+ code => 'not_enabled',
+ };
+ } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::LibraryIsClosed') ) {
+ push @messages, {
+ type => 'error',
+ code => 'library_is_closed',
+ patron => Koha::Patrons->find($borrowernumber)
+ };
+ } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::NoWaitingHolds') ) {
+ push @messages, {
+ type => 'error',
+ code => 'no_waiting_holds',
+ };
+ } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::TooManyPickups') ) {
push @messages, {
type => 'error',
code => 'too_many_pickups',
patron => Koha::Patrons->find($borrowernumber)
};
+ } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::NoMatchingSlots') ) {
+ push @messages, {
+ type => 'error',
+ code => 'no_matching_slots',
+ };
+ } elsif ( $_->isa('Koha::Exceptions::CurbsidePickup::NoMorePickupsAvailable') ) {
+ push @messages, {
+ type => 'error',
+ code => 'no_more_pickups_available',
+ };
} else {
warn $_;
push @messages, {
messages => \@messages,
op => $op,
tab => $tab,
+ auto_refresh => $auto_refresh,
+ refresh_delay => $refresh_delay,
policy => Koha::CurbsidePickupPolicies->find({ branchcode => $branchcode }),
curbside_pickups => Koha::CurbsidePickups->search(
{
- branchcode => $branchcode,
- scheduled_pickup_datetime => { '>' => \'DATE(NOW())' },
- }
- ),
+ branchcode => $branchcode,
+ },
+ { order_by => [ { -desc => 'delivered_datetime' }, 'scheduled_pickup_datetime' ], }
+ )->filter_by_scheduled_today,
);