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

(-)a/C4/Reserves.pm (-10 / +17 lines)
Lines 150-155 This modules provides some functions to deal with reservations. Link Here
150
            priority         => $priority,
150
            priority         => $priority,
151
            reservation_date => $reservation_date,
151
            reservation_date => $reservation_date,
152
            expiration_date  => $expiration_date,
152
            expiration_date  => $expiration_date,
153
            patron_expiration_date, => $patron_expiration_date,
153
            notes            => $notes,
154
            notes            => $notes,
154
            title            => $title,
155
            title            => $title,
155
            itemnumber       => $itemnumber,
156
            itemnumber       => $itemnumber,
Lines 184-190 sub AddReserve { Link Here
184
    my $biblionumber           = $params->{biblionumber};
185
    my $biblionumber           = $params->{biblionumber};
185
    my $priority               = $params->{priority};
186
    my $priority               = $params->{priority};
186
    my $resdate                = $params->{reservation_date};
187
    my $resdate                = $params->{reservation_date};
187
    my $patron_expiration_date = $params->{expiration_date};
188
    my $expiration_date        = $params->{expiration_date};
189
    my $patron_expiration_date = $params->{patron_expiration_date};
188
    my $notes                  = $params->{notes};
190
    my $notes                  = $params->{notes};
189
    my $title                  = $params->{title};
191
    my $title                  = $params->{title};
190
    my $checkitem              = $params->{itemnumber};
192
    my $checkitem              = $params->{itemnumber};
Lines 252-257 sub AddReserve { Link Here
252
            itemnumber             => $checkitem,
254
            itemnumber             => $checkitem,
253
            found                  => $found,
255
            found                  => $found,
254
            waitingdate            => $waitingdate,
256
            waitingdate            => $waitingdate,
257
            expirationdate         => $expiration_date,
255
            patron_expiration_date => $patron_expiration_date,
258
            patron_expiration_date => $patron_expiration_date,
256
            itemtype               => $itemtype,
259
            itemtype               => $itemtype,
257
            item_level_hold        => $checkitem    ? 1 : 0,
260
            item_level_hold        => $checkitem    ? 1 : 0,
Lines 1210-1224 itemnumber and supplying itemnumber. Link Here
1210
sub ModReserve {
1213
sub ModReserve {
1211
    my ($params) = @_;
1214
    my ($params) = @_;
1212
1215
1213
    my $rank                = $params->{'rank'};
1216
    my $rank                   = $params->{'rank'};
1214
    my $reserve_id          = $params->{'reserve_id'};
1217
    my $reserve_id             = $params->{'reserve_id'};
1215
    my $branchcode          = $params->{'branchcode'};
1218
    my $branchcode             = $params->{'branchcode'};
1216
    my $itemnumber          = $params->{'itemnumber'};
1219
    my $itemnumber             = $params->{'itemnumber'};
1217
    my $suspend_until       = $params->{'suspend_until'};
1220
    my $suspend_until          = $params->{'suspend_until'};
1218
    my $borrowernumber      = $params->{'borrowernumber'};
1221
    my $borrowernumber         = $params->{'borrowernumber'};
1219
    my $biblionumber        = $params->{'biblionumber'};
1222
    my $biblionumber           = $params->{'biblionumber'};
1220
    my $cancellation_reason = $params->{'cancellation_reason'};
1223
    my $cancellation_reason    = $params->{'cancellation_reason'};
1221
    my $date                = $params->{expirationdate};
1224
    my $date                   = $params->{expirationdate};
1225
    my $patron_expiration_date = $params->{patron_expiration_date};
1222
1226
1223
    return if defined $rank && $rank eq "n";
1227
    return if defined $rank && $rank eq "n";
1224
1228
Lines 1263-1268 sub ModReserve { Link Here
1263
        if ( exists $params->{expirationdate} ) {
1267
        if ( exists $params->{expirationdate} ) {
1264
            $properties->{expirationdate} = $params->{expirationdate} || undef;
1268
            $properties->{expirationdate} = $params->{expirationdate} || undef;
1265
        }
1269
        }
1270
        if ( exists $params->{patron_expiration_date} ) {
1271
            $properties->{patron_expiration_date} = $params->{patron_expiration_date} || undef;
1272
        }
1266
1273
1267
        $hold->set($properties)->store();
1274
        $hold->set($properties)->store();
1268
1275
(-)a/Koha/Hold.pm (-1 / +1 lines)
Lines 1277-1283 sub to_api_mapping { Link Here
1277
        itemnumber             => 'item_id',
1277
        itemnumber             => 'item_id',
1278
        waitingdate            => 'waiting_date',
1278
        waitingdate            => 'waiting_date',
1279
        expirationdate         => 'expiration_date',
1279
        expirationdate         => 'expiration_date',
1280
        patron_expiration_date => undef,
1280
        patron_expiration_date => 'patron_expiration_date',
1281
        lowestPriority         => 'lowest_priority',
1281
        lowestPriority         => 'lowest_priority',
1282
        suspend                => 'suspended',
1282
        suspend                => 'suspended',
1283
        suspend_until          => 'suspended_until',
1283
        suspend_until          => 'suspended_until',
(-)a/Koha/REST/V1/Holds.pm (-34 / +38 lines)
Lines 76-91 sub add { Link Here
76
        my $biblio;
76
        my $biblio;
77
        my $item;
77
        my $item;
78
78
79
        my $biblio_id         = $body->{biblio_id};
79
        my $biblio_id              = $body->{biblio_id};
80
        my $item_group_id     = $body->{item_group_id};
80
        my $item_group_id          = $body->{item_group_id};
81
        my $pickup_library_id = $body->{pickup_library_id};
81
        my $pickup_library_id      = $body->{pickup_library_id};
82
        my $item_id           = $body->{item_id};
82
        my $item_id                = $body->{item_id};
83
        my $patron_id         = $body->{patron_id};
83
        my $patron_id              = $body->{patron_id};
84
        my $item_type         = $body->{item_type};
84
        my $item_type              = $body->{item_type};
85
        my $expiration_date   = $body->{expiration_date};
85
        my $expiration_date        = $body->{expiration_date};
86
        my $notes             = $body->{notes};
86
        my $patron_expiration_date = $body->{patron_expiration_date};
87
        my $hold_date         = $body->{hold_date};
87
        my $notes                  = $body->{notes};
88
        my $non_priority      = $body->{non_priority};
88
        my $hold_date              = $body->{hold_date};
89
        my $non_priority           = $body->{non_priority};
89
90
90
        my $overrides    = $c->stash('koha.overrides');
91
        my $overrides    = $c->stash('koha.overrides');
91
        my $can_override = C4::Context->preference('AllowHoldPolicyOverride') // 0;
92
        my $can_override = C4::Context->preference('AllowHoldPolicyOverride') // 0;
Lines 199-218 sub add { Link Here
199
200
200
        my $hold_id = C4::Reserves::AddReserve(
201
        my $hold_id = C4::Reserves::AddReserve(
201
            {
202
            {
202
                branchcode       => $pickup_library_id,
203
                branchcode             => $pickup_library_id,
203
                borrowernumber   => $patron_id,
204
                borrowernumber         => $patron_id,
204
                biblionumber     => $biblio->id,
205
                biblionumber           => $biblio->id,
205
                priority         => $priority,
206
                priority               => $priority,
206
                reservation_date => $hold_date,
207
                reservation_date       => $hold_date,
207
                expiration_date  => $expiration_date,
208
                expiration_date        => $expiration_date,
208
                notes            => $notes,
209
                patron_expiration_date => $patron_expiration_date,
209
                title            => $biblio->title,
210
                notes                  => $notes,
210
                itemnumber       => $item_id,
211
                title                  => $biblio->title,
211
                found            => undef,                # TODO: Why not?
212
                itemnumber             => $item_id,
212
                itemtype         => $item_type,
213
                found                  => undef,                     # TODO: Why not?
213
                non_priority     => $non_priority,
214
                itemtype               => $item_type,
214
                item_group_id    => $item_group_id,
215
                non_priority           => $non_priority,
215
                confirmations    => $confirmations,
216
                item_group_id          => $item_group_id,
217
                confirmations          => $confirmations,
216
            }
218
            }
217
        );
219
        );
218
220
Lines 281-301 sub edit { Link Here
281
        }
283
        }
282
284
283
        $pickup_library_id //= $hold->branchcode;
285
        $pickup_library_id //= $hold->branchcode;
284
        my $priority        = $body->{priority}        // $hold->priority;
286
        my $priority               = $body->{priority}               // $hold->priority;
285
        my $hold_date       = $body->{hold_date}       // $hold->reservedate;
287
        my $hold_date              = $body->{hold_date}              // $hold->reservedate;
286
        my $expiration_date = $body->{expiration_date} // $hold->expirationdate;
288
        my $expiration_date        = $body->{expiration_date}        // $hold->expirationdate;
289
        my $patron_expiration_date = $body->{patron_expiration_date} // $hold->patron_expiration_date;
287
290
288
        # suspended_until can also be set to undef
291
        # suspended_until can also be set to undef
289
        my $suspended_until = $body->{suspended_until} || $hold->suspend_until;
292
        my $suspended_until = $body->{suspended_until} || $hold->suspend_until;
290
293
291
        my $params = {
294
        my $params = {
292
            reserve_id     => $hold->id,
295
            reserve_id             => $hold->id,
293
            branchcode     => $pickup_library_id,
296
            branchcode             => $pickup_library_id,
294
            rank           => $priority,
297
            rank                   => $priority,
295
            suspend_until  => $suspended_until,
298
            suspend_until          => $suspended_until,
296
            itemnumber     => $hold->itemnumber,
299
            itemnumber             => $hold->itemnumber,
297
            reservedate    => $hold_date,
300
            reservedate            => $hold_date,
298
            expirationdate => $expiration_date,
301
            expirationdate         => $expiration_date,
302
            patron_expiration_date => $patron_expiration_date,
299
        };
303
        };
300
304
301
        C4::Reserves::ModReserve($params);
305
        C4::Reserves::ModReserve($params);
(-)a/api/v1/swagger/definitions/hold.yaml (+6 lines)
Lines 86-91 properties: Link Here
86
      - "null"
86
      - "null"
87
    format: date
87
    format: date
88
    description: The date the hold expires
88
    description: The date the hold expires
89
  patron_expiration_date:
90
    type:
91
      - string
92
      - "null"
93
    format: date
94
    description: The date the patron sets as not wanted after
89
  lowest_priority:
95
  lowest_priority:
90
    type: boolean
96
    type: boolean
91
    description: Controls if the hold is given the lowest priority on the queue
97
    description: Controls if the hold is given the lowest priority on the queue
(-)a/api/v1/swagger/paths/holds.yaml (-1 / +12 lines)
Lines 196-201 Link Here
196
                - string
196
                - string
197
                - "null"
197
                - "null"
198
              format: date
198
              format: date
199
            patron_expiration_date:
200
              description: Hold not wanted after date
201
              type:
202
                - string
203
                - "null"
204
              format: date
199
            notes:
205
            notes:
200
              description: Notes related to this hold
206
              description: Notes related to this hold
201
              type:
207
              type:
Lines 436-441 Link Here
436
              description: Hold's expiration date
442
              description: Hold's expiration date
437
              type: string
443
              type: string
438
              format: date
444
              format: date
445
            patron_expiration_date:
446
              description: Hold's not wanted after date
447
              type:
448
                - string
449
                - "null"
450
              format: date
439
          additionalProperties: false
451
          additionalProperties: false
440
    consumes:
452
    consumes:
441
      - application/json
453
      - application/json
442
- 

Return to bug 39419