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

(-)a/C4/CourseReserves.pm (-10 / +15 lines)
Lines 414-420 sub ModCourseInstructors { Link Here
414
414
415
=head2 GetCourseItem {
415
=head2 GetCourseItem {
416
416
417
  $course_item = GetCourseItem( itemnumber => $itemnumber [, ci_id => $ci_id );
417
  Given one of biblionumber, itenumber, or ci_id, returns hashref of the course_items values
418
419
  $course_item = GetCourseItem( itemnumber => $itemnumber [, ci_id => $ci_id ] );
420
  $course_item = GetCourseItem( biblionumber => $biblionumber [, ci_id => $ci_id ]);
421
  $course_item = GetCourseItem( ci_id => $ci_id );
418
422
419
=cut
423
=cut
420
424
Lines 426-432 sub GetCourseItem { Link Here
426
    my $itemnumber = $params{'itemnumber'};
430
    my $itemnumber = $params{'itemnumber'};
427
    my $biblionumber = $params{'biblionumber'};
431
    my $biblionumber = $params{'biblionumber'};
428
432
429
    return unless ( $itemnumber || $biblionumber || $ci_id );
433
    return unless ( $itemnumber xor $biblionumber xor $ci_id );
430
434
431
    my ( $field, $value );
435
    my ( $field, $value );
432
    if ( $itemnumber ) {
436
    if ( $itemnumber ) {
Lines 463-469 sub GetCourseItem { Link Here
463
467
464
  ModCourseItem( %params );
468
  ModCourseItem( %params );
465
469
466
  Creates or modifies an existing course item.
470
  Creates or modifies an existing course item. Must be passed either an itemnumber or biblionumber parameter
467
471
468
=cut
472
=cut
469
473
Lines 474-480 sub ModCourseItem { Link Here
474
    my $itemnumber = $params{'itemnumber'};
478
    my $itemnumber = $params{'itemnumber'};
475
    my $biblionumber = $params{'biblionumber'};
479
    my $biblionumber = $params{'biblionumber'};
476
480
477
    return unless ($itemnumber || $biblionumber);
481
    return unless ($itemnumber xor $biblionumber);
478
482
479
    my $course_item = $itemnumber ? GetCourseItem( itemnumber => $itemnumber ) : GetCourseItem( biblionumber => $biblionumber );
483
    my $course_item = $itemnumber ? GetCourseItem( itemnumber => $itemnumber ) : GetCourseItem( biblionumber => $biblionumber );
480
484
Lines 509-514 sub ModCourseItem { Link Here
509
513
510
sub _AddCourseItem {
514
sub _AddCourseItem {
511
    my (%params) = @_;
515
    my (%params) = @_;
516
    warn "adding";
512
    warn identify_myself(%params) if $DEBUG;
517
    warn identify_myself(%params) if $DEBUG;
513
518
514
    $params{homebranch} ||= undef; # Can't be empty string, FK constraint
519
    $params{homebranch} ||= undef; # Can't be empty string, FK constraint
Lines 883-890 sub GetCourseReserves { Link Here
883
888
884
    if ($include_items) {
889
    if ($include_items) {
885
        foreach my $cr (@$course_reserves) {
890
        foreach my $cr (@$course_reserves) {
886
            my $item = Koha::Items->find( $cr->{itemnumber} );
891
            my $item = Koha::Items->find( $cr->{itemnumber}, { prefetch => ['biblio','biblioitem'] });
887
            my $biblio = $cr->{itemnumber} ? $item->biblio : Koha::Biblios->find( $cr->{biblionumber} );
892
            my $biblio = $cr->{itemnumber} ? $item->biblio : Koha::Biblios->find( $cr->{biblionumber}, { prefetch => ['biblioitem'] });
888
            my $biblioitem = $biblio->biblioitem;
893
            my $biblioitem = $biblio->biblioitem;
889
            $cr->{'course_item'} = GetCourseItem( ci_id => $cr->{'ci_id'} );
894
            $cr->{'course_item'} = GetCourseItem( ci_id => $cr->{'ci_id'} );
890
            $cr->{'item'}        = $item;
895
            $cr->{'item'}        = $item;
Lines 946-952 sub DelCourseReserve { Link Here
946
    my $arrayref = GetItemCourseReservesInfo( itemnumber => $itemnumber );
951
    my $arrayref = GetItemCourseReservesInfo( itemnumber => $itemnumber );
947
    my $arrayref = GetItemCourseReservesInfo( biblionumber => $biblionumber );
952
    my $arrayref = GetItemCourseReservesInfo( biblionumber => $biblionumber );
948
953
949
    For a given item, returns an arrayref of reserves hashrefs,
954
    For a given itemnumber or biblionumber, returns an arrayref of reserves hashrefs,
950
    with a course hashref under the key 'course'
955
    with a course hashref under the key 'course'
951
956
952
=cut
957
=cut
Lines 958-964 sub GetItemCourseReservesInfo { Link Here
958
    my $itemnumber = $params{'itemnumber'};
963
    my $itemnumber = $params{'itemnumber'};
959
    my $biblionumber = $params{'biblionumber'};
964
    my $biblionumber = $params{'biblionumber'};
960
965
961
    return unless ($itemnumber || $biblionumber);
966
    return unless ($itemnumber xor $biblionumber);
962
967
963
    my $course_item = $itemnumber ? GetCourseItem( itemnumber => $itemnumber ) : GetCourseItem( biblionumber => $biblionumber );
968
    my $course_item = $itemnumber ? GetCourseItem( itemnumber => $itemnumber ) : GetCourseItem( biblionumber => $biblionumber );
964
969
Lines 998-1006 sub CountCourseReservesForItem { Link Here
998
    my $enabled    = $params{'enabled'};
1003
    my $enabled    = $params{'enabled'};
999
    my $biblionumber = $params{'biblionumber'};
1004
    my $biblionumber = $params{'biblionumber'};
1000
1005
1001
    return unless ( $ci_id || ( $itemnumber || $biblionumber ) );
1006
    return unless ( $ci_id xor $itemnumber xor $biblionumber );
1002
1007
1003
    my $course_item = $itemnumber ? GetCourseItem( ci_id => $ci_id, itemnumber => $itemnumber ) : GetCourseItem( ci_id => $ci_id, biblionumber => $biblionumber );
1008
    my $course_item = GetCourseItem( ci_id => $ci_id ) || GetCourseItem( itemnumber => $itemnumber ) || GetCourseItem( biblionumber => $biblionumber );
1004
1009
1005
    my @params = ( $course_item->{'ci_id'} );
1010
    my @params = ( $course_item->{'ci_id'} );
1006
    push( @params, $enabled ) if ($enabled);
1011
    push( @params, $enabled ) if ($enabled);
(-)a/Koha/Schema/Result/CourseItem.pm (-2 / +6 lines)
Lines 37-48 course item id Link Here
37
  is_foreign_key: 1
37
  is_foreign_key: 1
38
  is_nullable: 1
38
  is_nullable: 1
39
39
40
items.itemnumber for the item on reserve
41
40
=head2 biblionumber
42
=head2 biblionumber
41
43
42
  data_type: 'integer'
44
  data_type: 'integer'
43
  is_foreign_key: 1
45
  is_foreign_key: 1
44
  is_nullable: 0
46
  is_nullable: 0
45
47
48
biblio.biblionumber for the bibliographic record on reserve
49
46
=head2 itype
50
=head2 itype
47
51
48
  data_type: 'varchar'
52
  data_type: 'varchar'
Lines 376-383 __PACKAGE__->belongs_to( Link Here
376
);
380
);
377
381
378
382
379
# Created by DBIx::Class::Schema::Loader v0.07046 @ 2021-02-03 10:03:26
383
# Created by DBIx::Class::Schema::Loader v0.07046 @ 2021-06-11 18:35:38
380
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:kImBuor/tqSbLlPDt+d2fg
384
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:3fFJ3uJr+5pMZniZ1glIpg
381
385
382
__PACKAGE__->add_columns(
386
__PACKAGE__->add_columns(
383
    '+itype_enabled'         => { is_boolean => 1 },
387
    '+itype_enabled'         => { is_boolean => 1 },
(-)a/course_reserves/add_items.pl (-3 lines)
Lines 54-68 if ( $barcode || $itemnumber ) { Link Here
54
    if ( $item ) {
54
    if ( $item ) {
55
        $itemnumber = $item->id;
55
        $itemnumber = $item->id;
56
        $biblio = $item->biblio;
56
        $biblio = $item->biblio;
57
        $biblionumber = $biblio->biblionumber;
58
    }
57
    }
59
} else {
58
} else {
60
    # adding a biblio to course items
59
    # adding a biblio to course items
61
    $biblio = Koha::Biblios->find( $biblionumber );
60
    $biblio = Koha::Biblios->find( $biblionumber );
62
}
61
}
63
62
64
my $title = $biblio->title if $biblio;
65
66
my $step = ( $action eq 'lookup' && ( $item or $biblio ) ) ? '2' : '1';
63
my $step = ( $action eq 'lookup' && ( $item or $biblio ) ) ? '2' : '1';
67
64
68
my $tmpl = ($course_id) ? "add_items-step$step.tt" : "invalid-course.tt";
65
my $tmpl = ($course_id) ? "add_items-step$step.tt" : "invalid-course.tt";
(-)a/course_reserves/batch_add_items.pl (-1 / +1 lines)
Lines 86-92 if ( $course_id && $course ) { Link Here
86
            foreach my $item (@items) {
86
            foreach my $item (@items) {
87
                my $ci_id = ModCourseItem(
87
                my $ci_id = ModCourseItem(
88
                    itemnumber            => $item->id,
88
                    itemnumber            => $item->id,
89
                    biblionumber          => $item->biblionumber,
89
                    biblionumber          => undef,
90
                    itype                 => $itype,
90
                    itype                 => $itype,
91
                    ccode                 => $ccode,
91
                    ccode                 => $ccode,
92
                    holdingbranch         => $holdingbranch,
92
                    holdingbranch         => $holdingbranch,
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/add_items-step2.tt (-1 lines)
Lines 58-64 Link Here
58
                        <span class="label">Barcode:</span>
58
                        <span class="label">Barcode:</span>
59
                        <span id="barcode">[% item.barcode | html %]</span>
59
                        <span id="barcode">[% item.barcode | html %]</span>
60
                        <input type="hidden" name="itemnumber" value="[% item.itemnumber | html %]" />
60
                        <input type="hidden" name="itemnumber" value="[% item.itemnumber | html %]" />
61
                        <input type="hidden" name="biblionumber" value="[% item.biblionumber | html %]" />
62
                    </li>
61
                    </li>
63
62
64
                    [% IF item_level_itypes %]
63
                    [% IF item_level_itypes %]
(-)a/t/db_dependent/CourseReserves/CourseItems.t (-9 lines)
Lines 39-45 my ($biblionumber, $itemnumber) = create_bib_and_item(); Link Here
39
39
40
my $ci_id = ModCourseItem(
40
my $ci_id = ModCourseItem(
41
    itemnumber            => $itemnumber,
41
    itemnumber            => $itemnumber,
42
    biblionumber          => $biblionumber,
43
    itype_enabled         => 1,
42
    itype_enabled         => 1,
44
    ccode_enabled         => 1,
43
    ccode_enabled         => 1,
45
    homebranch_enabled    => 1,
44
    homebranch_enabled    => 1,
Lines 83-89 is($item->location, 'TH', 'Item location in course should be TH'); Link Here
83
82
84
ModCourseItem(
83
ModCourseItem(
85
    itemnumber            => $itemnumber,
84
    itemnumber            => $itemnumber,
86
    biblionumber          => $biblionumber,
87
    itype_enabled         => 1,
85
    itype_enabled         => 1,
88
    ccode_enabled         => 1,
86
    ccode_enabled         => 1,
89
    homebranch_enabled    => 1,
87
    homebranch_enabled    => 1,
Lines 160-166 is($course_item2->{ccode_storage}, '', 'Course item ccode storage should be empt Link Here
160
158
161
ModCourseItem(
159
ModCourseItem(
162
    itemnumber            => $itemnumber,
160
    itemnumber            => $itemnumber,
163
    biblionumber          => $biblionumber,
164
    itype_enabled         => 1,
161
    itype_enabled         => 1,
165
    ccode_enabled         => 1,
162
    ccode_enabled         => 1,
166
    homebranch_enabled    => 1,
163
    homebranch_enabled    => 1,
Lines 185-191 is($item->ccode, 'DVD', 'Item ccode should be DVD'); Link Here
185
182
186
ModCourseItem(
183
ModCourseItem(
187
    itemnumber            => $itemnumber,
184
    itemnumber            => $itemnumber,
188
    biblionumber          => $biblionumber,
189
    itype_enabled         => 1,
185
    itype_enabled         => 1,
190
    ccode_enabled         => 1,
186
    ccode_enabled         => 1,
191
    homebranch_enabled    => 0,             # LEAVE UNCHANGED
187
    homebranch_enabled    => 0,             # LEAVE UNCHANGED
Lines 212-218 subtest 'Ensure modifying fields on existing course items updates the item and c Link Here
212
    my ($biblionumber, $itemnumber) = create_bib_and_item();
208
    my ($biblionumber, $itemnumber) = create_bib_and_item();
213
    my $ci_id = ModCourseItem(
209
    my $ci_id = ModCourseItem(
214
        itemnumber            => $itemnumber,
210
        itemnumber            => $itemnumber,
215
        biblionumber          => $biblionumber,
216
        itype_enabled         => 0,
211
        itype_enabled         => 0,
217
        ccode_enabled         => 0,
212
        ccode_enabled         => 0,
218
        homebranch_enabled    => 0,
213
        homebranch_enabled    => 0,
Lines 304-310 subtest 'Ensure modifying fields on existing course items updates the item and c Link Here
304
    # Test removing fields from an active course item
299
    # Test removing fields from an active course item
305
    ModCourseItem(
300
    ModCourseItem(
306
        itemnumber            => $itemnumber,
301
        itemnumber            => $itemnumber,
307
        biblionumber          => $biblionumber,
308
        itype_enabled         => 0,
302
        itype_enabled         => 0,
309
        ccode_enabled         => 0,
303
        ccode_enabled         => 0,
310
        homebranch_enabled    => 0,
304
        homebranch_enabled    => 0,
Lines 352-358 subtest 'Ensure item info is preserved' => sub { Link Here
352
    #Add course item but change nothing
346
    #Add course item but change nothing
353
    my $course_item_id = ModCourseItem(
347
    my $course_item_id = ModCourseItem(
354
        itemnumber    => $item->itemnumber,
348
        itemnumber    => $item->itemnumber,
355
        biblionumber  => $biblionumber,
356
        itype         => '',
349
        itype         => '',
357
        ccode         => '',
350
        ccode         => '',
358
        holdingbranch => '',
351
        holdingbranch => '',
Lines 383-389 subtest 'Ensure item info is preserved' => sub { Link Here
383
    #Add course item but change nothing
376
    #Add course item but change nothing
384
    $course_item_id = ModCourseItem(
377
    $course_item_id = ModCourseItem(
385
        itemnumber    => $item->itemnumber,
378
        itemnumber    => $item->itemnumber,
386
        biblionumber  => $biblionumber,
387
        itype         => '',
379
        itype         => '',
388
        ccode         => '',
380
        ccode         => '',
389
        holdingbranch => '',
381
        holdingbranch => '',
390
- 

Return to bug 14237