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

(-)a/C4/Letters.pm (-1 / +4 lines)
Lines 1005-1010 sub EnqueueLetter { Link Here
1005
            reply_address          => $params->{reply_address},
1005
            reply_address          => $params->{reply_address},
1006
            content_type           => $params->{letter}->{'content-type'},
1006
            content_type           => $params->{letter}->{'content-type'},
1007
            failure_code           => $params->{failure_code} || q{},
1007
            failure_code           => $params->{failure_code} || q{},
1008
            delay_until            => $params->{'delay_until'} || undef,
1008
        }
1009
        }
1009
    )->store();
1010
    )->store();
1010
    return $message->id;
1011
    return $message->id;
Lines 1078-1083 sub SendQueuedMessages { Link Here
1078
            : (),    #TODO Existing inconsistency
1079
            : (),    #TODO Existing inconsistency
1079
            !ref( $params->{type} )
1080
            !ref( $params->{type} )
1080
                && $params->{type} ? ( message_transport_type => $params->{type} ) : (),    #TODO Existing inconsistency
1081
                && $params->{type} ? ( message_transport_type => $params->{type} ) : (),    #TODO Existing inconsistency
1082
            delay_until => [ '-or', { '<' => \'NOW()' }, undef ],
1081
        }
1083
        }
1082
    );
1084
    );
1083
    $unsent_messages = $unsent_messages->search( \$where ) if $where;
1085
    $unsent_messages = $unsent_messages->search( \$where ) if $where;
Lines 1207-1213 sub GetQueuedMessages { Link Here
1207
1209
1208
    my $dbh       = C4::Context->dbh();
1210
    my $dbh       = C4::Context->dbh();
1209
    my $statement = <<'ENDSQL';
1211
    my $statement = <<'ENDSQL';
1210
SELECT message_id, borrowernumber, subject, content, message_transport_type, status, time_queued, updated_on, failure_code, from_address, to_address, cc_address
1212
SELECT message_id, borrowernumber, subject, content, message_transport_type, status, time_queued, updated_on, failure_code, from_address, to_address, cc_address, delay_until
1211
FROM message_queue
1213
FROM message_queue
1212
ENDSQL
1214
ENDSQL
1213
1215
Lines 1382-1387 sub _get_unsent_messages { Link Here
1382
        FROM message_queue mq
1384
        FROM message_queue mq
1383
        LEFT JOIN borrowers b ON b.borrowernumber = mq.borrowernumber
1385
        LEFT JOIN borrowers b ON b.borrowernumber = mq.borrowernumber
1384
        WHERE status = ?
1386
        WHERE status = ?
1387
        AND ( delay_until < NOW() OR delay_until IS NULL)
1385
    };
1388
    };
1386
1389
1387
    my @query_params = ('pending');
1390
    my @query_params = ('pending');
(-)a/C4/Reserves.pm (-5 / +22 lines)
Lines 87-92 use Koha::ItemTypes; Link Here
87
use Koha::Items;
87
use Koha::Items;
88
use Koha::Libraries;
88
use Koha::Libraries;
89
use Koha::Library;
89
use Koha::Library;
90
use Koha::Logger;
90
use Koha::Patrons;
91
use Koha::Patrons;
91
use Koha::Plugins;
92
use Koha::Plugins;
92
use Koha::Policy::Holds;
93
use Koha::Policy::Holds;
Lines 1240-1246 sub ModReserveStatus { Link Here
1240
1241
1241
=head2 ModReserveAffect
1242
=head2 ModReserveAffect
1242
1243
1243
  &ModReserveAffect($itemnumber,$borrowernumber,$diffBranchSend,$reserve_id, $desk_id, $notify_library);
1244
  &ModReserveAffect($itemnumber,$borrowernumber,$diffBranchSend,$reserve_id, $desk_id, $notify_library, $delay_notice_until);
1244
1245
1245
This function affect an item and a status for a given reserve, either fetched directly
1246
This function affect an item and a status for a given reserve, either fetched directly
1246
by record_id, or by borrowernumber and itemnumber or biblionumber. If only biblionumber
1247
by record_id, or by borrowernumber and itemnumber or biblionumber. If only biblionumber
Lines 1256-1262 This function also removes any entry of the hold in holds queue table. Link Here
1256
=cut
1257
=cut
1257
1258
1258
sub ModReserveAffect {
1259
sub ModReserveAffect {
1259
    my ( $itemnumber, $borrowernumber, $transferToDo, $reserve_id, $desk_id, $notify_library ) = @_;
1260
    my ( $itemnumber, $borrowernumber, $transferToDo, $reserve_id, $desk_id, $notify_library, $delay_notice_until ) =
1261
        @_;
1260
    my $dbh = C4::Context->dbh;
1262
    my $dbh = C4::Context->dbh;
1261
1263
1262
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
1264
    # we want to attach $itemnumber to $borrowernumber, find the biblionumber
Lines 1283-1288 sub ModReserveAffect { Link Here
1283
1285
1284
    my $original = $hold->unblessed;
1286
    my $original = $hold->unblessed;
1285
1287
1288
    # Handle notice delay
1289
    my $delay_notice_mode = C4::Context->preference('PickupNoticeDelayMode') || 'off';
1290
    if ( $delay_notice_mode eq 'fixed' ) {
1291
        my $delay_notice_duration = C4::Context->preference('PickupNoticeDelayDuration') || 0;
1292
        $delay_notice_until = dt_from_string()->add( hours => $delay_notice_duration );
1293
    } elsif ( $delay_notice_mode eq 'staff' ) {
1294
        if ( ref($delay_notice_until) ne 'DateTime' ) {
1295
            Koha::Logger->get->warn("${\( $delay_notice_until // 'undef' )} is not a DateTime object");
1296
            $delay_notice_until = undef;
1297
        }
1298
    } else {
1299
        $delay_notice_until = undef;
1300
    }
1301
1286
    my $already_on_shelf = $hold->found && $hold->found eq 'W';
1302
    my $already_on_shelf = $hold->found && $hold->found eq 'W';
1287
1303
1288
    $hold->itemnumber($itemnumber);
1304
    $hold->itemnumber($itemnumber);
Lines 1300-1306 sub ModReserveAffect { Link Here
1300
        $hold->set_processing();
1316
        $hold->set_processing();
1301
    } else {
1317
    } else {
1302
        $hold->set_waiting($desk_id);
1318
        $hold->set_waiting($desk_id);
1303
        _koha_notify_reserve( $hold->reserve_id ) unless $already_on_shelf;
1319
        _koha_notify_reserve( $hold->reserve_id, $delay_notice_until ) unless $already_on_shelf;
1304
1320
1305
        # Complete transfer if one exists
1321
        # Complete transfer if one exists
1306
        my $transfer = $hold->item->get_transfer;
1322
        my $transfer = $hold->item->get_transfer;
Lines 1873-1879 sub _Findgroupreserve { Link Here
1873
1889
1874
=head2 _koha_notify_reserve
1890
=head2 _koha_notify_reserve
1875
1891
1876
  _koha_notify_reserve( $hold->reserve_id );
1892
  _koha_notify_reserve( $hold->reserve_id, $delay_until );
1877
1893
1878
Sends a notification to the patron that their hold has been filled (through
1894
Sends a notification to the patron that their hold has been filled (through
1879
ModReserveAffect)
1895
ModReserveAffect)
Lines 1900-1906 The following tables are available within the notice: Link Here
1900
=cut
1916
=cut
1901
1917
1902
sub _koha_notify_reserve {
1918
sub _koha_notify_reserve {
1903
    my $reserve_id = shift;
1919
    my ( $reserve_id, $delay_until ) = @_;
1904
1920
1905
    my $hold           = Koha::Holds->find($reserve_id);
1921
    my $hold           = Koha::Holds->find($reserve_id);
1906
    my $borrowernumber = $hold->borrowernumber;
1922
    my $borrowernumber = $hold->borrowernumber;
Lines 1957-1962 sub _koha_notify_reserve { Link Here
1957
                    from_address           => $from_email_address,
1973
                    from_address           => $from_email_address,
1958
                    reply_address          => $reply_email_address,
1974
                    reply_address          => $reply_email_address,
1959
                    message_transport_type => $mtt,
1975
                    message_transport_type => $mtt,
1976
                    delay_until            => $delay_until,
1960
                }
1977
                }
1961
            );
1978
            );
1962
        } else {
1979
        } else {
(-)a/circ/returns.pl (-2 / +19 lines)
Lines 93-98 my $userenv = C4::Context->userenv; Link Here
93
my $userenv_branch           = $userenv->{'branch'} // '';
93
my $userenv_branch           = $userenv->{'branch'} // '';
94
my $forgivemanualholdsexpire = $query->param('forgivemanualholdsexpire');
94
my $forgivemanualholdsexpire = $query->param('forgivemanualholdsexpire');
95
95
96
# Handle notice delay
97
my $delay_notice_until    = $query->param('delay_notice_until')              || q{};
98
my $notice_delay_mode     = C4::Context->preference('PickupNoticeDelayMode') || 'off';
99
my $delay_notice_until_dt;
100
if ( $notice_delay_mode eq 'staff' && $delay_notice_until ) {
101
    $delay_notice_until_dt = eval { dt_from_string($delay_notice_until) };
102
} else {
103
    $delay_notice_until = q{};
104
}
105
96
my $overduecharges = ( C4::Context->preference('finesMode') && C4::Context->preference('finesMode') eq 'production' );
106
my $overduecharges = ( C4::Context->preference('finesMode') && C4::Context->preference('finesMode') eq 'production' );
97
107
98
#set up so only the last 8 returned items display (make for faster loading pages)
108
#set up so only the last 8 returned items display (make for faster loading pages)
Lines 149-155 if ( $query->param('reserve_id') && $op eq 'cud-affect_reserve' ) { Link Here
149
159
150
        # diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
160
        # diffBranchSend tells ModReserveAffect whether document is expected in this library or not,
151
        # i.e., whether to apply waiting status
161
        # i.e., whether to apply waiting status
152
        ModReserveAffect( $itemnumber, $borrowernumber, $diffBranchSend, $reserve_id, $desk_id );
162
        ModReserveAffect(
163
            $itemnumber, $borrowernumber, $diffBranchSend, $reserve_id, $desk_id, undef,
164
            $delay_notice_until_dt
165
        );
153
166
154
        if ($diffBranchSend) {
167
        if ($diffBranchSend) {
155
            my $tobranch = $hold->pickup_library();
168
            my $tobranch = $hold->pickup_library();
Lines 605-611 if ( $messages->{'ResFound'} ) { Link Here
605
        my $biblio = $item->biblio;
618
        my $biblio = $item->biblio;
606
619
607
        my $diffBranchSend = !$branchCheck ? $reserve->{branchcode} : undef;
620
        my $diffBranchSend = !$branchCheck ? $reserve->{branchcode} : undef;
608
        ModReserveAffect( $itemnumber, $reserve->{borrowernumber}, $diffBranchSend, $reserve->{reserve_id}, $desk_id );
621
        ModReserveAffect(
622
            $itemnumber, $reserve->{borrowernumber}, $diffBranchSend, $reserve->{reserve_id}, $desk_id,
623
            undef,       $delay_notice_until_dt
624
        );
609
625
610
        if ($diffBranchSend) {
626
        if ($diffBranchSend) {
611
            my $tobranch = Koha::Libraries->find( $reserve->{branchcode} );
627
            my $tobranch = Koha::Libraries->find( $reserve->{branchcode} );
Lines 815-820 $template->param( Link Here
815
    forgivemanualholdsexpire => $forgivemanualholdsexpire,
831
    forgivemanualholdsexpire => $forgivemanualholdsexpire,
816
    overduecharges           => $overduecharges,
832
    overduecharges           => $overduecharges,
817
    AudioAlerts              => C4::Context->preference("AudioAlerts"),
833
    AudioAlerts              => C4::Context->preference("AudioAlerts"),
834
    delay_notice_until       => $delay_notice_until,
818
);
835
);
819
836
820
if ($barcode) {
837
if ($barcode) {
(-)a/installer/data/mysql/mandatory/sysprefs.sql (+2 lines)
Lines 647-652 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
647
('PatronSelfRegistrationVerifyByEmail','0',NULL,'If enabled, any patron attempting to register themselves via the OPAC will be required to verify themselves via email to activate their account.','YesNo'),
647
('PatronSelfRegistrationVerifyByEmail','0',NULL,'If enabled, any patron attempting to register themselves via the OPAC will be required to verify themselves via email to activate their account.','YesNo'),
648
('PatronsPerPage','20','20','Number of Patrons Per Page displayed by default','Integer'),
648
('PatronsPerPage','20','20','Number of Patrons Per Page displayed by default','Integer'),
649
('PhoneNotification','0',NULL,'If ON, enables generation of phone notifications to be sent by plugins','YesNo'),
649
('PhoneNotification','0',NULL,'If ON, enables generation of phone notifications to be sent by plugins','YesNo'),
650
('PickupNoticeDelayMode','off','off,fixed,staff','Delay mode for pickup notices','Choice'),
651
('PickupNoticeDelayDuration','',NULL,'Delay for pickup notices in hours if PickupNoticeDelayMode is set to "Fixed delay"','Integer'),
650
('PlaceHoldsOnOrdersFromSuggestions','0',NULL,'If ON, enables generation of holds when orders are placed from suggestions','YesNo'),
652
('PlaceHoldsOnOrdersFromSuggestions','0',NULL,'If ON, enables generation of holds when orders are placed from suggestions','YesNo'),
651
('PrefillGuaranteeField', 'phone,email,streetnumber,address,city,state,zipcode,country', NULL, 'Prefill these fields in guarantee member entry form from guarantor patron record', 'Multiple'),
653
('PrefillGuaranteeField', 'phone,email,streetnumber,address,city,state,zipcode,country', NULL, 'Prefill these fields in guarantee member entry form from guarantor patron record', 'Multiple'),
652
('PrefillItem','0',NULL,'When a new item is added, should it be prefilled with last created item values?','YesNo'),
654
('PrefillItem','0',NULL,'When a new item is added, should it be prefilled with last created item values?','YesNo'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/calendar.inc (+39 lines)
Lines 272-277 Link Here
272
                options['plugins'] = [];
272
                options['plugins'] = [];
273
            }
273
            }
274
274
275
            if ( $(input).data('flatpickr-futuredatetime') === true ) {
276
                let min_date = new Date();
277
                options['minDate'] = min_date;
278
                options['defaultHour'] = min_date.getHours();
279
                options['defaultMinute'] = min_date.getMinutes();
280
                options['plugins'] = [
281
                    ShortcutButtonsPlugin({
282
                        button: [
283
                            {
284
                                label: _("1h")
285
                            },
286
                            {
287
                                label: _("2h")
288
                            },
289
                            {
290
                                label: _("4h")
291
                            }
292
                        ],
293
                        label: _("or"),
294
                        onClick: (index, fp) => {
295
                            let date = new Date();
296
                            let hh = date.getHours();
297
                            switch (index) {
298
                                case 0:
299
                                    date.setHours(hh + 1);
300
                                    break;
301
                                case 1:
302
                                    date.setHours(hh + 2);
303
                                    break;
304
                                case 2:
305
                                    date.setHours(hh + 4);
306
                                    break;
307
                            }
308
                            fp.setDate(date, true);
309
                        }
310
                    })
311
                ];
312
            }
313
275
            let fp = $(input).flatpickr(options);
314
            let fp = $(input).flatpickr(options);
276
315
277
            $(disable_buttons).each(function(index, value){
316
            $(disable_buttons).each(function(index, value){
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref (+12 lines)
Lines 280-285 Patrons: Link Here
280
               never: never
280
               never: never
281
               preferences: according to patron messaging preferences
281
               preferences: according to patron messaging preferences
282
               cron: (Deprecated) according to --send-notices cron switch
282
               cron: (Deprecated) according to --send-notices cron switch
283
     -
284
         - "Delay pickup notices to allow time for processing. Send with: "
285
         - pref: PickupNoticeDelayMode
286
           default: 'off'
287
           choices:
288
               off: "no delay"
289
               fixed: "fixed delay"
290
               staff: "delay selectable by staff"
291
         - "If 'Fixed delay' then delay the notice by "
292
         - pref: PickupNoticeDelayDuration
293
           default: 0
294
         - "hours"
283
    Patron forms:
295
    Patron forms:
284
     -
296
     -
285
         - "The following <a href='https://schema.koha-community.org/__VERSION__/tables/borrowers.html' target='_blank'>database columns</a> must be filled in on the patron entry screen:"
297
         - "The following <a href='https://schema.koha-community.org/__VERSION__/tables/borrowers.html' target='_blank'>database columns</a> must be filled in on the patron entry screen:"
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt (+30 lines)
Lines 459-464 Link Here
459
                            <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
459
                            <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
460
                            <input type="hidden" name="multiple_confirm" value="1" />
460
                            <input type="hidden" name="multiple_confirm" value="1" />
461
                            <input type="hidden" name="dropboxmode" value="[% dropboxmode | html %]" />
461
                            <input type="hidden" name="dropboxmode" value="[% dropboxmode | html %]" />
462
                            <input type="hidden" name="delay_notice_until" value="[% delay_notice_until | html %]" />
462
                            <input type="hidden" name="exemptfine" value="[% exemptfine | html %]" />
463
                            <input type="hidden" name="exemptfine" value="[% exemptfine | html %]" />
463
                            [% FOREACH checkin IN checkins %]
464
                            [% FOREACH checkin IN checkins %]
464
                                <input type="hidden" name="checkin_counter" value="[% loop.count | html %]" />
465
                                <input type="hidden" name="checkin_counter" value="[% loop.count | html %]" />
Lines 614-619 Link Here
614
                            <input type="hidden" name="op" value="cud-transfer" />
615
                            <input type="hidden" name="op" value="cud-transfer" />
615
                            <input type="hidden" name="return_date_override" value="[% return_date_override | html %]" />
616
                            <input type="hidden" name="return_date_override" value="[% return_date_override | html %]" />
616
                            <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
617
                            <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
618
                            <input type="hidden" name="delay_notice_until" value="[% delay_notice_until | html %]" />
617
                            <input type="hidden" name="itemnumber" value="[% itemnumber | html %]" />
619
                            <input type="hidden" name="itemnumber" value="[% itemnumber | html %]" />
618
                            <input type="hidden" name="transit" value="[% NewTransfer | html %]" />
620
                            <input type="hidden" name="transit" value="[% NewTransfer | html %]" />
619
                            <input type="hidden" name="dropboxmode" value="[% dropboxmode | html %]" />
621
                            <input type="hidden" name="dropboxmode" value="[% dropboxmode | html %]" />
Lines 742-747 Link Here
742
744
743
                                <input type="hidden" name="return_date_override" value="[% return_date_override | html %]" />
745
                                <input type="hidden" name="return_date_override" value="[% return_date_override | html %]" />
744
                                <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
746
                                <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
747
                                <input type="hidden" name="delay_notice_until" value="[% delay_notice_until | html %]" />
745
                                [% INCLUDE all_checkin_messages %]
748
                                [% INCLUDE all_checkin_messages %]
746
                            </div>
749
                            </div>
747
                            <!-- /.modal-body -->
750
                            <!-- /.modal-body -->
Lines 845-850 Link Here
845
                                [% END %]
848
                                [% END %]
846
                                <input type="hidden" name="return_date_override" value="[% return_date_override | html %]" />
849
                                <input type="hidden" name="return_date_override" value="[% return_date_override | html %]" />
847
                                <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
850
                                <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
851
                                <input type="hidden" name="delay_notice_until" value="[% delay_notice_until | html %]" />
848
                                <input type="hidden" name="exemptfine" value="[% exemptfine | html %]" />
852
                                <input type="hidden" name="exemptfine" value="[% exemptfine | html %]" />
849
                                <input type="hidden" name="dropboxmode" value="[% dropboxmode | html %]" />
853
                                <input type="hidden" name="dropboxmode" value="[% dropboxmode | html %]" />
850
                                <input type="hidden" name="forgivemanualholdsexpire" value="[% forgivemanualholdsexpire | html %]" />
854
                                <input type="hidden" name="forgivemanualholdsexpire" value="[% forgivemanualholdsexpire | html %]" />
Lines 1213-1218 Link Here
1213
                    <div id="return_date_remember" class="checkin-active-setting" [% UNLESS return_date_override_remember %]style="display:none;"[% END %]>
1217
                    <div id="return_date_remember" class="checkin-active-setting" [% UNLESS return_date_override_remember %]style="display:none;"[% END %]>
1214
                        <p><i class="fa fa-check"></i> Saved check-in date: <span id="saved_return_date" class="single-line">[% return_date_override | html %]</span></p>
1218
                        <p><i class="fa fa-check"></i> Saved check-in date: <span id="saved_return_date" class="single-line">[% return_date_override | html %]</span></p>
1215
                    </div>
1219
                    </div>
1220
                    [% IF ( delay_notice_until ) %]
1221
                        <div id="delay_notice" class="checkin-active-setting">
1222
                    [% ELSE %]
1223
                        <div id="delay_notice" class="checkin-active-setting" style="display:none;">
1224
                    [% END %]
1225
                        <p><i class="fa fa-check"></i> Delay pickup notice until: <span id="saved_delay_notice" class="single-line">[% delay_notice_until | html %]</span></p>
1226
                    </div>
1216
                </div>
1227
                </div>
1217
            </div>
1228
            </div>
1218
1229
Lines 1277-1282 Link Here
1277
                    </div>
1288
                    </div>
1278
                [% END %]
1289
                [% END %]
1279
                <!-- overduecharges -->
1290
                <!-- overduecharges -->
1291
                [% IF Koha.Preference('PickupNoticeDelayMode') == 'staff' %]
1292
                    <div id="delay-notice" class="date-select" >
1293
                        <div class="hint">Delay pickup notice until: </div>
1294
                        <input type="text" size="20" id="delay_notice_until" name="delay_notice_until" value="[% delay_notice_until | html %]" class="flatpickr" data-flatpickr-enable-time="true" data-flatpickr-on-close-focus="#barcode" data-flatpickr-futuredatetime="true" />
1295
                    </div>
1296
                [% END %]
1280
            </div>
1297
            </div>
1281
            <!-- /.circ-settings -->
1298
            <!-- /.circ-settings -->
1282
        </fieldset>
1299
        </fieldset>
Lines 1490-1495 Link Here
1490
        <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
1507
        <input type="hidden" name="return_date_override_remember" value="[% return_date_override_remember | html %]" />
1491
        <input type="hidden" name="dropboxmode" value="[% dropboxmode | html %]" />
1508
        <input type="hidden" name="dropboxmode" value="[% dropboxmode | html %]" />
1492
        <input type="hidden" name="exemptfine" value="[% exemptfine | html %]" />
1509
        <input type="hidden" name="exemptfine" value="[% exemptfine | html %]" />
1510
        <input type="hidden" name="delay_notice_until" value="[% delay_notice_until | html %]" />
1493
        [% FOREACH checkin IN checkins %]
1511
        [% FOREACH checkin IN checkins %]
1494
            <input type="hidden" name="checkin_counter" value="[% loop.count | html %]" />
1512
            <input type="hidden" name="checkin_counter" value="[% loop.count | html %]" />
1495
            <input type="hidden" name="checkin_barcode_[% loop.count | html %]" value="[% checkin.barcode | html %]" />
1513
            <input type="hidden" name="checkin_barcode_[% loop.count | html %]" value="[% checkin.barcode | html %]" />
Lines 1767-1772 Link Here
1767
                    });
1785
                    });
1768
                [% END %]
1786
                [% END %]
1769
            [% END %]
1787
            [% END %]
1788
1789
            $("input#delay_notice_until").on("change", function () {
1790
                let delay_date = $(this).val();
1791
                $("span#saved_delay_notice").text(delay_date);
1792
                if ( delay_date == '' ){
1793
                    $("div#delay_notice").hide();
1794
                }
1795
                else {
1796
                    $("div#delay_notice").show();
1797
                }
1798
            });
1799
1770
        });
1800
        });
1771
    </script>
1801
    </script>
1772
[% END %]
1802
[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/notices.tt (-2 / +1 lines)
Lines 84-90 Link Here
84
                                [% IF ( QUEUED_MESSAGE.status == 'sent' ) %]
84
                                [% IF ( QUEUED_MESSAGE.status == 'sent' ) %]
85
                                    <span>sent</span>
85
                                    <span>sent</span>
86
                                [% ELSIF ( QUEUED_MESSAGE.status == 'pending' ) %]
86
                                [% ELSIF ( QUEUED_MESSAGE.status == 'pending' ) %]
87
                                    <span>pending</span>
87
                                    <span>pending[% IF QUEUED_MESSAGE.delay_until %], delayed until [% QUEUED_MESSAGE.delay_until | $KohaDates with_hours => 1 %][% END %]</span>
88
                                [% ELSIF ( QUEUED_MESSAGE.status == 'failed' ) %]
88
                                [% ELSIF ( QUEUED_MESSAGE.status == 'failed' ) %]
89
                                    <span>failed</span>
89
                                    <span>failed</span>
90
                                [% ELSIF ( QUEUED_MESSAGE.status == 'deleted' ) %]
90
                                [% ELSIF ( QUEUED_MESSAGE.status == 'deleted' ) %]
91
- 

Return to bug 27208