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

(-)a/C4/Circulation.pm (-53 / +40 lines)
Lines 1796-1820 sub AddIssue { Link Here
1796
                    $item_unblessed->{charge} = $charge;
1796
                    $item_unblessed->{charge} = $charge;
1797
                }
1797
                }
1798
            }
1798
            }
1799
1799
            _updateNotForLoanFromYaml( $item_object, 'UpdateNotForLoanStatusOnCheckout' );
1800
            my $yaml = C4::Context->preference('UpdateNotForLoanStatusOnCheckout');
1801
            if ($yaml) {
1802
                $yaml = "$yaml\n\n";
1803
1804
                my $rules;
1805
                eval { $rules = YAML::XS::Load(Encode::encode_utf8($yaml)); };
1806
                if ($@) {
1807
                    warn "Unable to parse UpdateNotForLoanStatusOnCheckout syspref : $@";
1808
                }
1809
                else {
1810
                    foreach my $key ( keys %$rules ) {
1811
                        if ( $item_object->notforloan eq $key ) {
1812
                            $item_object->notforloan($rules->{$key})->store({ log_action => 0, skip_record_index => 1 });
1813
                            last;
1814
                        }
1815
                    }
1816
                }
1817
            }
1818
1800
1819
            # Record the fact that this book was issued.
1801
            # Record the fact that this book was issued.
1820
            C4::Stats::UpdateStats(
1802
            C4::Stats::UpdateStats(
Lines 2140-2146 sub AddReturn { Link Here
2140
    $branch = C4::Context->userenv->{'branch'} unless $branch;  # we trust userenv to be a safe fallback/default
2122
    $branch = C4::Context->userenv->{'branch'} unless $branch;  # we trust userenv to be a safe fallback/default
2141
    my $return_date_specified = !!$return_date;
2123
    my $return_date_specified = !!$return_date;
2142
    $return_date //= dt_from_string();
2124
    $return_date //= dt_from_string();
2143
    my $messages;
2125
    my $messages = {};
2144
    my $patron;
2126
    my $patron;
2145
    my $doreturn       = 1;
2127
    my $doreturn       = 1;
2146
    my $validTransfer = 1;
2128
    my $validTransfer = 1;
Lines 2216-2253 sub AddReturn { Link Here
2216
        $messages->{ $loc_msg_key } = $loc_messages->{ $loc_msg_key };
2198
        $messages->{ $loc_msg_key } = $loc_messages->{ $loc_msg_key };
2217
    }
2199
    }
2218
2200
2219
    my $yaml = C4::Context->preference('UpdateNotForLoanStatusOnCheckin');
2201
    _updateNotForLoanFromYaml( $item, 'UpdateNotForLoanStatusOnCheckin', $messages );
2220
    if ($yaml) {
2221
        $yaml = "$yaml\n\n";  # YAML is anal on ending \n. Surplus does not hurt
2222
        my $rules;
2223
        eval { $rules = YAML::XS::Load(Encode::encode_utf8($yaml)); };
2224
        if ($@) {
2225
            warn "Unable to parse UpdateNotForLoanStatusOnCheckin syspref : $@";
2226
        }
2227
        else {
2228
            if ( defined $rules->{$item->itype} ) {
2229
                foreach my $notloan_rule_key (keys %{ $rules->{$item->itype}} ) {
2230
                    if ( $item->notforloan eq $notloan_rule_key ) {
2231
                        $messages->{'NotForLoanStatusUpdated'} = { from => $item->notforloan, to => $rules->{$item->itype}->{$notloan_rule_key} };
2232
                        $item->notforloan( $rules->{ $item->itype }->{$notloan_rule_key} )
2233
                            ->store( { log_action => 0, skip_record_index => 1, skip_holds_queue => 1 } )
2234
                            unless $rules->{ $item->itype }->{$notloan_rule_key} eq 'ONLYMESSAGE';
2235
                        last;
2236
                    }
2237
                }
2238
            } elsif ( defined $rules->{'_ALL_'} ) {
2239
                foreach my $notloan_rule_key (keys %{ $rules->{'_ALL_'}} ) {
2240
                    if ( $item->notforloan eq $notloan_rule_key ) {
2241
                        $messages->{'NotForLoanStatusUpdated'} = { from => $item->notforloan, to => $rules->{'_ALL_'}->{$notloan_rule_key} };
2242
                        $item->notforloan( $rules->{'_ALL_'}->{$notloan_rule_key} )
2243
                            ->store( { log_action => 0, skip_record_index => 1, skip_holds_queue => 1 } )
2244
                            unless $rules->{ '_ALL_' }->{$notloan_rule_key} eq 'ONLYMESSAGE';
2245
                        last;
2246
                    }
2247
                }
2248
            }
2249
        }
2250
    }
2251
2202
2252
    # check if the return is allowed at this branch
2203
    # check if the return is allowed at this branch
2253
    my ($returnallowed, $message) = CanBookBeReturned($item->unblessed, $branch);
2204
    my ($returnallowed, $message) = CanBookBeReturned($item->unblessed, $branch);
Lines 4634-4639 sub _CanBookBeAutoRenewed { Link Here
4634
    return "ok";
4585
    return "ok";
4635
}
4586
}
4636
4587
4588
sub _updateNotForLoanFromYaml {
4589
    my ( $item, $NotForLoanUpdatePreference, $messages ) = @_;
4590
4591
    my $yaml = C4::Context->preference($NotForLoanUpdatePreference);
4592
    if ($yaml) {
4593
        $yaml = "$yaml\n\n";
4594
        my $rules;
4595
        eval { $rules = YAML::XS::Load( Encode::encode_utf8($yaml) ); };
4596
        if ($@) {
4597
            warn "Unable to parse $NotForLoanUpdatePreference syspref : $@";
4598
        } else {
4599
            if ( defined $rules->{ $item->itype } ) {
4600
                foreach my $notloan_rule_key ( keys %{ $rules->{ $item->itype } } ) {
4601
                    if ( $item->notforloan eq $notloan_rule_key ) {
4602
                        $messages->{'NotForLoanStatusUpdated'} =
4603
                            { from => $item->notforloan, to => $rules->{ $item->itype }->{$notloan_rule_key} };
4604
                        $item->notforloan( $rules->{ $item->itype }->{$notloan_rule_key} )
4605
                            ->store( { log_action => 0, skip_record_index => 1, skip_holds_queue => 1 } )
4606
                            unless $rules->{ $item->itype }->{$notloan_rule_key} eq 'ONLYMESSAGE';
4607
                        last;
4608
                    }
4609
                }
4610
            } elsif ( defined $rules->{'_ALL_'} ) {
4611
                foreach my $notloan_rule_key ( keys %{ $rules->{'_ALL_'} } ) {
4612
                    if ( $item->notforloan eq $notloan_rule_key ) {
4613
                        $messages->{'NotForLoanStatusUpdated'} =
4614
                            { from => $item->notforloan, to => $rules->{'_ALL_'}->{$notloan_rule_key} };
4615
                        $item->notforloan( $rules->{'_ALL_'}->{$notloan_rule_key} )
4616
                            ->store( { log_action => 0, skip_record_index => 1, skip_holds_queue => 1 } )
4617
                            unless $rules->{'_ALL_'}->{$notloan_rule_key} eq 'ONLYMESSAGE';
4618
                        last;
4619
                    }
4620
                }
4621
            }
4622
        }
4623
    }
4624
}
4637
4625
4638
1;
4626
1;
4639
4627
4640
- 

Return to bug 35292