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

(-)a/C4/Circulation.pm (+19 lines)
Lines 1727-1732 sub AddIssue { Link Here
1727
                }
1727
                }
1728
            }
1728
            }
1729
1729
1730
            my $yaml = C4::Context->preference('UpdateNotForLoanStatusOnCheckout');
1731
            if ($yaml) {
1732
                $yaml = "$yaml\n\n";
1733
1734
                my $rules;
1735
                eval { $rules = YAML::XS::Load(Encode::encode_utf8($yaml)); };
1736
                if ($@) {
1737
                    warn "Unable to parse UpdateNotForLoanStatusOnCheckout syspref : $@";
1738
                }
1739
                else {
1740
                    foreach my $key ( keys %$rules ) {
1741
                        if ( $item_object->notforloan eq $key ) {
1742
                            $item_object->notforloan($rules->{$key})->store({ log_action => 0, skip_record_index => 1 });
1743
                            last;
1744
                        }
1745
                    }
1746
                }
1747
            }
1748
1730
            # Record the fact that this book was issued.
1749
            # Record the fact that this book was issued.
1731
            C4::Stats::UpdateStats(
1750
            C4::Stats::UpdateStats(
1732
                {
1751
                {
(-)a/installer/data/mysql/mandatory/sysprefs.sql (+1 lines)
Lines 696-701 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
696
('UnsubscribeReflectionDelay','',NULL,'Delay for locking unsubscribers', 'Integer'),
696
('UnsubscribeReflectionDelay','',NULL,'Delay for locking unsubscribers', 'Integer'),
697
('UpdateItemLocationOnCheckin', '', 'NULL', 'This is a list of value pairs.\n Examples:\n\nPROC: FIC - causes an item in the Processing Center location to be updated into the Fiction location on check in.\nFIC: GEN - causes an item in the Fiction location to be updated into the General stacks location on check in.\n_BLANK_:FIC - causes an item that has no location to be updated into the Fiction location on check in.\nFIC: _BLANK_ - causes an item in location FIC to be updated to a blank location on check in.\n_ALL_:FIC - causes all items to be updated into the Fiction location on check in.\nPROC: _PERM_ - causes an item that is in the Processing Center to be updated to it''s permanent location.\n\nGeneral rule: if the location value on the left matches the item''s current location, it will be updated to match the location value on the right.\nNote: PROC and CART are special values, for these locations only can location and permanent_location differ, in all other cases an update will affect both. Items in the CART location will be returned to their permanent location on checkout.\n\nThe special term _BLANK_ may be used on either side of a value pair to update or remove the location from items with no location assigned.\nThe special term _ALL_ is used on the left side of the colon (:) to affect all items.\nThe special term _PERM_ is used on the right side of the colon (:) to return items to their permanent location.', 'Free'),
697
('UpdateItemLocationOnCheckin', '', 'NULL', 'This is a list of value pairs.\n Examples:\n\nPROC: FIC - causes an item in the Processing Center location to be updated into the Fiction location on check in.\nFIC: GEN - causes an item in the Fiction location to be updated into the General stacks location on check in.\n_BLANK_:FIC - causes an item that has no location to be updated into the Fiction location on check in.\nFIC: _BLANK_ - causes an item in location FIC to be updated to a blank location on check in.\n_ALL_:FIC - causes all items to be updated into the Fiction location on check in.\nPROC: _PERM_ - causes an item that is in the Processing Center to be updated to it''s permanent location.\n\nGeneral rule: if the location value on the left matches the item''s current location, it will be updated to match the location value on the right.\nNote: PROC and CART are special values, for these locations only can location and permanent_location differ, in all other cases an update will affect both. Items in the CART location will be returned to their permanent location on checkout.\n\nThe special term _BLANK_ may be used on either side of a value pair to update or remove the location from items with no location assigned.\nThe special term _ALL_ is used on the left side of the colon (:) to affect all items.\nThe special term _PERM_ is used on the right side of the colon (:) to return items to their permanent location.', 'Free'),
698
('UpdateNotForLoanStatusOnCheckin', '', 'NULL', 'This is a list of value pairs. When an item is checked in, if the not for loan value on the left matches the items not for loan value it will be updated to the right-hand value. E.g. ''-1: 0'' will cause an item that was set to ''Ordered'' to now be available for loan. Each pair of values should be on a separate line.', 'Free'),
698
('UpdateNotForLoanStatusOnCheckin', '', 'NULL', 'This is a list of value pairs. When an item is checked in, if the not for loan value on the left matches the items not for loan value it will be updated to the right-hand value. E.g. ''-1: 0'' will cause an item that was set to ''Ordered'' to now be available for loan. Each pair of values should be on a separate line.', 'Free'),
699
('UpdateNotForLoanStatusOnCheckout', '', 'NULL', 'This is a list of value pairs. When an item is checked out, if the not for loan value on the left matches the items not for loan value it will be updated to the right-hand value. E.g. ''-1: 0'' will cause an item that was set to ''Ordered'' to now be available for loan. Each pair of values should be on a separate line.', 'Free'),
699
('UpdateTotalIssuesOnCirc','0',NULL,'Whether to update the totalissues field in the biblio on each circ.','YesNo'),
700
('UpdateTotalIssuesOnCirc','0',NULL,'Whether to update the totalissues field in the biblio on each circ.','YesNo'),
700
('UploadPurgeTemporaryFilesDays','',NULL,'If not empty, number of days used when automatically deleting temporary uploads','integer'),
701
('UploadPurgeTemporaryFilesDays','',NULL,'If not empty, number of days used when automatically deleting temporary uploads','integer'),
701
('uppercasesurnames','0',NULL,'If ON, surnames are converted to upper case in patron entry form','YesNo'),
702
('uppercasesurnames','0',NULL,'If ON, surnames are converted to upper case in patron entry form','YesNo'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (+8 lines)
Lines 551-556 Circulation: Link Here
551
            - "<br />ccode: [NEWFIC,NULL,DVD]"
551
            - "<br />ccode: [NEWFIC,NULL,DVD]"
552
            - "<br />itype: [NEWBK,\"\"]"
552
            - "<br />itype: [NEWBK,\"\"]"
553
            - "<br /> <strong>NOTE:</strong> The word 'NULL' can be used to block renewal on undefined fields, while an empty string \"\" will block on an empty (but defined) field."
553
            - "<br /> <strong>NOTE:</strong> The word 'NULL' can be used to block renewal on undefined fields, while an empty string \"\" will block on an empty (but defined) field."
554
        -
555
            - pref: UpdateNotForLoanStatusOnCheckout
556
              type: textarea
557
              syntax: text/x-yaml
558
              class: code
559
            - This is a list of value pairs. When an item is checked out, if the not for loan value on the left matches the items not for loan value
560
            - "it will be updated to the right-hand value. For example, '-1: 0' will cause an item that was set to 'Ordered' to now be available for loan."
561
            - Each pair of values should be on a separate line.
554
    Checkin policy:
562
    Checkin policy:
555
        -
563
        -
556
            - pref: TrapHoldsOnOrder
564
            - pref: TrapHoldsOnOrder
(-)a/t/db_dependent/Circulation/issue.t (-2 / +30 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 48;
20
use Test::More tests => 51;
21
use DateTime::Duration;
21
use DateTime::Duration;
22
22
23
use t::lib::Mocks;
23
use t::lib::Mocks;
Lines 535-539 AddRenewal( $unseen_patron->borrowernumber, $unseen_item->itemnumber, $branchcod Link Here
535
my ( $unseen_reset ) = ( C4::Circulation::GetRenewCount( $unseen_patron->borrowernumber, $unseen_item->itemnumber ) )[3];
535
my ( $unseen_reset ) = ( C4::Circulation::GetRenewCount( $unseen_patron->borrowernumber, $unseen_item->itemnumber ) )[3];
536
is( $unseen_reset, 0, 'seen renewal resets the unseen count' );
536
is( $unseen_reset, 0, 'seen renewal resets the unseen count' );
537
537
538
my $itemnumber4 = Koha::Item->new(
539
    {
540
        biblionumber   => $biblionumber,
541
        barcode        => 'barcode_6',
542
        itemcallnumber => 'callnumber6',
543
        homebranch     => $branchcode_1,
544
        holdingbranch  => $branchcode_1,
545
        notforloan     => -1,
546
        itype          => $itemtype,
547
        location       => 'loc1'
548
    },
549
)->store->itemnumber;
550
551
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', q{} );
552
AddIssue( $borrower_2, 'barcode_6', dt_from_string );
553
my $item = Koha::Items->find( $itemnumber4 );
554
ok( $item->notforloan eq -1, 'UpdateNotForLoanStatusOnCheckout does not modify value when not enabled' );
555
556
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckout', '-1: 0' );
557
AddReturn( 'barcode_6', $branchcode_1 );
558
my $test = AddIssue( $borrower_2, 'barcode_6', dt_from_string );
559
$item = Koha::Items->find( $itemnumber4 );
560
ok( $item->notforloan eq 0, q{UpdateNotForLoanStatusOnCheckout updates notforloan value from -1 to 0 with setting "-1: 0"} );
561
562
AddIssue( $borrower_2, 'barcode_6', dt_from_string );
563
AddReturn( 'barcode_6', $branchcode_1 );
564
$item = Koha::Items->find( $itemnumber4 );
565
ok( $item->notforloan eq 0, q{UpdateNotForLoanStatusOnCheckout does not update notforloan value from 0 with setting "-1: 0"} );
566
538
#End transaction
567
#End transaction
539
$schema->storage->txn_rollback;
568
$schema->storage->txn_rollback;
540
- 

Return to bug 30403