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

(-)a/C4/Circulation.pm (-8 / +10 lines)
Lines 1408-1414 sub AddIssue { Link Here
1408
                    datelastborrowed => DateTime->now( time_zone => C4::Context->tz() )->ymd(),
1408
                    datelastborrowed => DateTime->now( time_zone => C4::Context->tz() )->ymd(),
1409
                },
1409
                },
1410
                $item->{'biblionumber'},
1410
                $item->{'biblionumber'},
1411
                $item->{'itemnumber'}
1411
                $item->{'itemnumber'},
1412
                0
1412
            );
1413
            );
1413
            ModDateLastSeen( $item->{'itemnumber'} );
1414
            ModDateLastSeen( $item->{'itemnumber'} );
1414
1415
Lines 1850-1856 sub AddReturn { Link Here
1850
            $item->{location} = $item->{permanent_location};
1851
            $item->{location} = $item->{permanent_location};
1851
        }
1852
        }
1852
1853
1853
        ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} );
1854
        ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'}, 0 );
1854
    }
1855
    }
1855
1856
1856
        # full item data, but no borrowernumber or checkout info (no issue)
1857
        # full item data, but no borrowernumber or checkout info (no issue)
Lines 1874-1880 sub AddReturn { Link Here
1874
            foreach my $key ( keys %$rules ) {
1875
            foreach my $key ( keys %$rules ) {
1875
                if ( $item->{notforloan} eq $key ) {
1876
                if ( $item->{notforloan} eq $key ) {
1876
                    $messages->{'NotForLoanStatusUpdated'} = { from => $item->{notforloan}, to => $rules->{$key} };
1877
                    $messages->{'NotForLoanStatusUpdated'} = { from => $item->{notforloan}, to => $rules->{$key} };
1877
                    ModItem( { notforloan => $rules->{$key} }, undef, $itemnumber );
1878
                    ModItem( { notforloan => $rules->{$key} }, undef, $itemnumber, 0 );
1878
                    last;
1879
                    last;
1879
                }
1880
                }
1880
            }
1881
            }
Lines 1946-1952 sub AddReturn { Link Here
1946
1947
1947
        }
1948
        }
1948
1949
1949
        ModItem({ onloan => undef }, $item->{biblionumber}, $item->{'itemnumber'});
1950
        ModItem( { onloan => undef }, $item->{biblionumber}, $item->{itemnumber}, 0 );
1950
    }
1951
    }
1951
1952
1952
    # the holdingbranch is updated if the document is returned to another location.
1953
    # the holdingbranch is updated if the document is returned to another location.
Lines 2185-2191 sub MarkIssueReturned { Link Here
2185
        # And finally delete the issue
2186
        # And finally delete the issue
2186
        $issue->delete;
2187
        $issue->delete;
2187
2188
2188
        ModItem( { 'onloan' => undef }, undef, $itemnumber );
2189
        ModItem( { 'onloan' => undef }, undef, $itemnumber, 0 );
2189
2190
2190
        if ( C4::Context->preference('StoreLastBorrower') ) {
2191
        if ( C4::Context->preference('StoreLastBorrower') ) {
2191
            my $item = Koha::Items->find( $itemnumber );
2192
            my $item = Koha::Items->find( $itemnumber );
Lines 2437-2443 sub _FixAccountForLostAndReturned { Link Here
2437
            VALUES (?,?,?,?)");
2438
            VALUES (?,?,?,?)");
2438
        $usth->execute($borrowernumber, $data->{'accountno'}, $nextaccntno, $offset);
2439
        $usth->execute($borrowernumber, $data->{'accountno'}, $nextaccntno, $offset);
2439
    }
2440
    }
2440
    ModItem({ paidfor => '' }, undef, $itemnumber);
2441
    ModItem( { paidfor => '' }, undef, $itemnumber, 0 );
2441
    return;
2442
    return;
2442
}
2443
}
2443
2444
Lines 2853-2859 sub AddRenewal { Link Here
2853
2854
2854
    # Update the renewal count on the item, and tell zebra to reindex
2855
    # Update the renewal count on the item, and tell zebra to reindex
2855
    $renews = $item->{renewals} + 1;
2856
    $renews = $item->{renewals} + 1;
2856
    ModItem({ renewals => $renews, onloan => $datedue->strftime('%Y-%m-%d %H:%M')}, $item->{biblionumber}, $itemnumber);
2857
    ModItem( { renewals => $renews, onloan => $datedue->strftime('%Y-%m-%d %H:%M')}, $item->{biblionumber}, $itemnumber, 0 );
2857
2858
2858
    # Charge a new rental fee, if applicable?
2859
    # Charge a new rental fee, if applicable?
2859
    my ( $charge, $type ) = GetIssuingCharges( $itemnumber, $borrowernumber );
2860
    my ( $charge, $type ) = GetIssuingCharges( $itemnumber, $borrowernumber );
Lines 3708-3714 sub ProcessOfflineReturn { Link Here
3708
            ModItem(
3709
            ModItem(
3709
                { renewals => 0, onloan => undef },
3710
                { renewals => 0, onloan => undef },
3710
                $issue->{'biblionumber'},
3711
                $issue->{'biblionumber'},
3711
                $itemnumber
3712
                $itemnumber,
3713
                0
3712
            );
3714
            );
3713
            return "Success.";
3715
            return "Success.";
3714
        } else {
3716
        } else {
(-)a/C4/Items.pm (-2 / +7 lines)
Lines 518-524 sub ModItemFromMarc { Link Here
518
518
519
=head2 ModItem
519
=head2 ModItem
520
520
521
  ModItem({ column => $newvalue }, $biblionumber, $itemnumber);
521
  ModItem({ column => $newvalue }, $biblionumber, $itemnumber, $log_action );
522
522
523
Change one or more columns in an item record and update
523
Change one or more columns in an item record and update
524
the MARC representation of the item.
524
the MARC representation of the item.
Lines 539-550 the derived value of a column such as C<items.cn_sort>, Link Here
539
this routine will perform the necessary calculation
539
this routine will perform the necessary calculation
540
and set the value.
540
and set the value.
541
541
542
If log_action is set to false, the action will not be logged.
543
If log_action is true or undefined, the action will be logged.
544
542
=cut
545
=cut
543
546
544
sub ModItem {
547
sub ModItem {
545
    my $item = shift;
548
    my $item = shift;
546
    my $biblionumber = shift;
549
    my $biblionumber = shift;
547
    my $itemnumber = shift;
550
    my $itemnumber = shift;
551
    my $log_action = shift // 1;
548
552
549
    # if $biblionumber is undefined, get it from the current item
553
    # if $biblionumber is undefined, get it from the current item
550
    unless (defined $biblionumber) {
554
    unless (defined $biblionumber) {
Lines 603-609 sub ModItem { Link Here
603
    # item status is possible
607
    # item status is possible
604
    ModZebra( $biblionumber, "specialUpdate", "biblioserver" );
608
    ModZebra( $biblionumber, "specialUpdate", "biblioserver" );
605
609
606
    logaction("CATALOGUING", "MODIFY", $itemnumber, "item ".Dumper($item)) if C4::Context->preference("CataloguingLog");
610
    logaction( "CATALOGUING", "MODIFY", $itemnumber, "item " . Dumper($item) )
611
      if $log_action && C4::Context->preference("CataloguingLog");
607
}
612
}
608
613
609
=head2 ModItemTransfer
614
=head2 ModItemTransfer
(-)a/t/db_dependent/Items.t (-2 / +42 lines)
Lines 26-32 use Koha::Library; Link Here
26
use t::lib::Mocks;
26
use t::lib::Mocks;
27
use t::lib::TestBuilder;
27
use t::lib::TestBuilder;
28
28
29
use Test::More tests => 11;
29
use Test::More tests => 12;
30
30
31
use Test::Warn;
31
use Test::Warn;
32
32
Lines 782-787 subtest '_mod_item_dates' => sub { Link Here
782
        'yetanotherdatetime is ok' );
782
        'yetanotherdatetime is ok' );
783
};
783
};
784
784
785
subtest 'Test logging for AddItem' => sub {
786
787
    plan tests => 3;
788
789
    t::lib::Mocks::mock_preference('CataloguingLog', 1);
790
791
    $schema->storage->txn_begin;
792
793
    my $builder = t::lib::TestBuilder->new;
794
    my $library = $builder->build({
795
        source => 'Branch',
796
    });
797
    my $itemtype = $builder->build({
798
        source => 'Itemtype',
799
    });
800
801
    # Create a biblio instance for testing
802
    t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
803
    my ($bibnum, $bibitemnum) = get_biblio();
804
805
    # Add an item.
806
    my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $bibnum);
807
808
    # False means no logging
809
    $schema->resultset('ActionLog')->search()->delete();
810
    ModItem({ location => $location }, $bibnum, $itemnumber, 0);
811
    is( $schema->resultset('ActionLog')->count(), 0, 'False value does not trigger logging' );
812
813
    # True means logging
814
    $schema->resultset('ActionLog')->search()->delete();
815
    ModItem({ location => $location }, $bibnum, $itemnumber, 1, 'True value does trigger logging');
816
    is( $schema->resultset('ActionLog')->count(), 1 );
817
818
    # Undefined defaults to true
819
    $schema->resultset('ActionLog')->search()->delete();
820
    ModItem({ location => $location }, $bibnum, $itemnumber);
821
    is( $schema->resultset('ActionLog')->count(), 1, 'Undefined value defaults to true, triggers logging' );
822
823
    $schema->storage->txn_rollback;
824
};
825
785
# Helper method to set up a Biblio.
826
# Helper method to set up a Biblio.
786
sub get_biblio {
827
sub get_biblio {
787
    my ( $frameworkcode ) = @_;
828
    my ( $frameworkcode ) = @_;
788
- 

Return to bug 18816