| Lines 307-313
          sub transferbook {
      
      
        Link Here | 
        
          | 307 |     my $messages; | 307 |     my $messages; | 
        
          | 308 |     my $dotransfer      = 1; | 308 |     my $dotransfer      = 1; | 
        
          | 309 |     my $itemnumber = GetItemnumberFromBarcode( $barcode ); | 309 |     my $itemnumber = GetItemnumberFromBarcode( $barcode ); | 
          
            
              | 310 |     my $issue      = GetItemIssue($itemnumber); | 310 |     my $issue      = Koha::Issues->find({ itemnumber => $itemnumber }); | 
        
          | 311 |     my $biblio = GetBiblioFromItemNumber($itemnumber); | 311 |     my $biblio = GetBiblioFromItemNumber($itemnumber); | 
        
          | 312 |  | 312 |  | 
        
          | 313 |     # bad barcode.. | 313 |     # bad barcode.. | 
  
    | Lines 349-357
          sub transferbook {
      
      
        Link Here | 
        
          | 349 |     } | 349 |     } | 
        
          | 350 |  | 350 |  | 
        
          | 351 |     # check if it is still issued to someone, return it... | 351 |     # check if it is still issued to someone, return it... | 
          
            
              | 352 |     if ($issue->{borrowernumber}) { | 352 |     if ( $issue ) { | 
        
          | 353 |         AddReturn( $barcode, $fbr ); | 353 |         AddReturn( $barcode, $fbr ); | 
          
            
              | 354 |         $messages->{'WasReturned'} = $issue->{borrowernumber}; | 354 |         $messages->{'WasReturned'} = $issue->borrowernumber; | 
        
          | 355 |     } | 355 |     } | 
        
          | 356 |  | 356 |  | 
        
          | 357 |     # find reserves..... | 357 |     # find reserves..... | 
  
    | Lines 670-676
          sub CanBookBeIssued {
      
      
        Link Here | 
        
          | 670 |     my $override_high_holds = $params->{override_high_holds} || 0; | 670 |     my $override_high_holds = $params->{override_high_holds} || 0; | 
        
          | 671 |  | 671 |  | 
        
          | 672 |     my $item = GetItem(GetItemnumberFromBarcode( $barcode )); | 672 |     my $item = GetItem(GetItemnumberFromBarcode( $barcode )); | 
          
            
              | 673 |     my $issue = GetItemIssue($item->{itemnumber}); | 673 |     my $issue = Koha::Issues->find( { itemnumber => $item->{itemnumber} } ); | 
        
          | 674 | 	my $biblioitem = GetBiblioItemData($item->{biblioitemnumber}); | 674 | 	my $biblioitem = GetBiblioItemData($item->{biblioitemnumber}); | 
        
          | 675 | 	$item->{'itemtype'}=$item->{'itype'};  | 675 | 	$item->{'itemtype'}=$item->{'itype'};  | 
        
          | 676 |     my $dbh             = C4::Context->dbh; | 676 |     my $dbh             = C4::Context->dbh; | 
  
    | Lines 826-834
          sub CanBookBeIssued {
      
      
        Link Here | 
        
          | 826 |     # | 826 |     # | 
        
          | 827 |     my $switch_onsite_checkout = | 827 |     my $switch_onsite_checkout = | 
        
          | 828 |           C4::Context->preference('SwitchOnSiteCheckouts') | 828 |           C4::Context->preference('SwitchOnSiteCheckouts') | 
            
              | 829 |       and $issue->{onsite_checkout} |  |  | 
        
          | 830 |       and $issue | 829 |       and $issue | 
          
            
              | 831 |       and $issue->{borrowernumber} == $borrower->{'borrowernumber'} ? 1 : 0; | 830 |       and $issue->onsite_checkout | 
            
              |  |  | 831 |       and $issue->borrowernumber == $borrower->{'borrowernumber'} ? 1 : 0; | 
        
          | 832 |     my $toomany = TooMany( $borrower, $item->{biblionumber}, $item, { onsite_checkout => $onsite_checkout, switch_onsite_checkout => $switch_onsite_checkout, } ); | 832 |     my $toomany = TooMany( $borrower, $item->{biblionumber}, $item, { onsite_checkout => $onsite_checkout, switch_onsite_checkout => $switch_onsite_checkout, } ); | 
        
          | 833 |     # if TooMany max_allowed returns 0 the user doesn't have permission to check out this book | 833 |     # if TooMany max_allowed returns 0 the user doesn't have permission to check out this book | 
        
          | 834 |     if ( $toomany ) { | 834 |     if ( $toomany ) { | 
  
    | Lines 936-948
          sub CanBookBeIssued {
      
      
        Link Here | 
        
          | 936 |     # | 936 |     # | 
        
          | 937 |     # CHECK IF BOOK ALREADY ISSUED TO THIS BORROWER | 937 |     # CHECK IF BOOK ALREADY ISSUED TO THIS BORROWER | 
        
          | 938 |     # | 938 |     # | 
          
            
              | 939 |     if ( $issue->{borrowernumber} && $issue->{borrowernumber} eq $borrower->{'borrowernumber'} ){ | 939 |     if ( $issue && $issue->borrowernumber eq $borrower->{'borrowernumber'} ){ | 
        
          | 940 |  | 940 |  | 
        
          | 941 |         # Already issued to current borrower. | 941 |         # Already issued to current borrower. | 
        
          | 942 |         # If it is an on-site checkout if it can be switched to a normal checkout | 942 |         # If it is an on-site checkout if it can be switched to a normal checkout | 
        
          | 943 |         # or ask whether the loan should be renewed | 943 |         # or ask whether the loan should be renewed | 
        
          | 944 |  | 944 |  | 
          
            
              | 945 |         if ( $issue->{onsite_checkout} | 945 |         if ( $issue->onsite_checkout | 
        
          | 946 |                 and C4::Context->preference('SwitchOnSiteCheckouts') ) { | 946 |                 and C4::Context->preference('SwitchOnSiteCheckouts') ) { | 
        
          | 947 |             $messages{ONSITE_CHECKOUT_WILL_BE_SWITCHED} = 1; | 947 |             $messages{ONSITE_CHECKOUT_WILL_BE_SWITCHED} = 1; | 
        
          | 948 |         } else { | 948 |         } else { | 
  
    | Lines 963-972
          sub CanBookBeIssued {
      
      
        Link Here | 
        
          | 963 |             } | 963 |             } | 
        
          | 964 |         } | 964 |         } | 
        
          | 965 |     } | 965 |     } | 
          
            
              | 966 |     elsif ($issue->{borrowernumber}) { | 966 |     elsif ( $issue ) { | 
        
          | 967 |  | 967 |  | 
        
          | 968 |         # issued to someone else | 968 |         # issued to someone else | 
          
            
              | 969 |         my $currborinfo =    C4::Members::GetMember( borrowernumber => $issue->{borrowernumber} ); | 969 |         my $currborinfo =    C4::Members::GetMember( borrowernumber => $issue->borrowernumber ); | 
        
          | 970 |  | 970 |  | 
        
          | 971 |  | 971 |  | 
        
          | 972 |         my ( $can_be_returned, $message ) = CanBookBeReturned( $item, C4::Context->userenv->{branch} ); | 972 |         my ( $can_be_returned, $message ) = CanBookBeReturned( $item, C4::Context->userenv->{branch} ); | 
  
    | Lines 1292-1304
          sub AddIssue {
      
      
        Link Here | 
        
          | 1292 |         my $branch = _GetCircControlBranch( $item, $borrower ); | 1292 |         my $branch = _GetCircControlBranch( $item, $borrower ); | 
        
          | 1293 |  | 1293 |  | 
        
          | 1294 |         # get actual issuing if there is one | 1294 |         # get actual issuing if there is one | 
          
            
              | 1295 |         my $actualissue = GetItemIssue( $item->{itemnumber} ); | 1295 |         my $actualissue = Koha::Issues->find( { itemnumber => $item->{itemnumber} } ); | 
        
          | 1296 |  | 1296 |  | 
        
          | 1297 |         # get biblioinformation for this item | 1297 |         # get biblioinformation for this item | 
        
          | 1298 |         my $biblio = GetBiblioFromItemNumber( $item->{itemnumber} ); | 1298 |         my $biblio = GetBiblioFromItemNumber( $item->{itemnumber} ); | 
        
          | 1299 |  | 1299 |  | 
        
          | 1300 |         # check if we just renew the issue. | 1300 |         # check if we just renew the issue. | 
          
            
              | 1301 |         if ( $actualissue->{borrowernumber} eq $borrower->{'borrowernumber'} | 1301 |         if ( $actualissue and $actualissue->borrowernumber eq $borrower->{'borrowernumber'} | 
        
          | 1302 |                 and not $switch_onsite_checkout ) { | 1302 |                 and not $switch_onsite_checkout ) { | 
        
          | 1303 |             $datedue = AddRenewal( | 1303 |             $datedue = AddRenewal( | 
        
          | 1304 |                 $borrower->{'borrowernumber'}, | 1304 |                 $borrower->{'borrowernumber'}, | 
  
    | Lines 1310-1317
          sub AddIssue {
      
      
        Link Here | 
        
          | 1310 |         } | 1310 |         } | 
        
          | 1311 |         else { | 1311 |         else { | 
        
          | 1312 |             # it's NOT a renewal | 1312 |             # it's NOT a renewal | 
          
            
              | 1313 |             if ( $actualissue->{borrowernumber} | 1313 |             if ( $actualissue and not $switch_onsite_checkout ) { | 
            
              | 1314 |                     and not $switch_onsite_checkout ) { |  |  | 
        
          | 1315 |                 # This book is currently on loan, but not to the person | 1314 |                 # This book is currently on loan, but not to the person | 
        
          | 1316 |                 # who wants to borrow it now. mark it returned before issuing to the new borrower | 1315 |                 # who wants to borrow it now. mark it returned before issuing to the new borrower | 
        
          | 1317 |                 my ( $allowed, $message ) = CanBookBeReturned( $item, C4::Context->userenv->{branch} ); | 1316 |                 my ( $allowed, $message ) = CanBookBeReturned( $item, C4::Context->userenv->{branch} ); | 
  
    | Lines 3040-3048
          sub GetSoonestRenewDate {
      
      
        Link Here | 
        
          | 3040 |     my $dbh = C4::Context->dbh; | 3039 |     my $dbh = C4::Context->dbh; | 
        
          | 3041 |  | 3040 |  | 
        
          | 3042 |     my $item      = GetItem($itemnumber)      or return; | 3041 |     my $item      = GetItem($itemnumber)      or return; | 
          
            
              | 3043 |     my $itemissue = GetItemIssue($itemnumber) or return; | 3042 |     my $itemissue = Koha::Issues->find( { itemnumber => $itemnumber } ) or return; | 
        
          | 3044 |  | 3043 |  | 
          
            
              | 3045 |     $borrowernumber ||= $itemissue->{borrowernumber}; | 3044 |     $borrowernumber ||= $itemissue->borrowernumber; | 
        
          | 3046 |     my $borrower = C4::Members::GetMemberDetails($borrowernumber) | 3045 |     my $borrower = C4::Members::GetMemberDetails($borrowernumber) | 
        
          | 3047 |       or return; | 3046 |       or return; | 
        
          | 3048 |  | 3047 |  | 
  
    | Lines 3061-3068
          sub GetSoonestRenewDate {
      
      
        Link Here | 
        
          | 3061 |         and $issuing_rule->norenewalbefore ne "" ) | 3060 |         and $issuing_rule->norenewalbefore ne "" ) | 
        
          | 3062 |     { | 3061 |     { | 
        
          | 3063 |         my $soonestrenewal = | 3062 |         my $soonestrenewal = | 
          
            
              | 3064 |           $itemissue->{date_due}->clone() | 3063 |           dt_from_string( $itemissue->date_due )->subtract( | 
            
              | 3065 |           ->subtract( |  |  | 
        
          | 3066 |             $issuing_rule->lengthunit => $issuing_rule->norenewalbefore ); | 3064 |             $issuing_rule->lengthunit => $issuing_rule->norenewalbefore ); | 
        
          | 3067 |  | 3065 |  | 
        
          | 3068 |         if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date' | 3066 |         if ( C4::Context->preference('NoRenewalBeforePrecision') eq 'date' | 
  
    | Lines 3100-3108
          sub GetLatestAutoRenewDate {
      
      
        Link Here | 
        
          | 3100 |     my $dbh = C4::Context->dbh; | 3098 |     my $dbh = C4::Context->dbh; | 
        
          | 3101 |  | 3099 |  | 
        
          | 3102 |     my $item      = GetItem($itemnumber)      or return; | 3100 |     my $item      = GetItem($itemnumber)      or return; | 
          
            
              | 3103 |     my $itemissue = GetItemIssue($itemnumber) or return; | 3101 |     my $itemissue = Koha::Issues->find( { itemnumber => $itemnumber } ) or return; | 
        
          | 3104 |  | 3102 |  | 
          
            
              | 3105 |     $borrowernumber ||= $itemissue->{borrowernumber}; | 3103 |     $borrowernumber ||= $itemissue->borrowernumber; | 
        
          | 3106 |     my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber ) | 3104 |     my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber ) | 
        
          | 3107 |       or return; | 3105 |       or return; | 
        
          | 3108 |  | 3106 |  | 
  
    | Lines 3118-3124
          sub GetLatestAutoRenewDate {
      
      
        Link Here | 
        
          | 3118 |     return if not $issuing_rule->no_auto_renewal_after | 3116 |     return if not $issuing_rule->no_auto_renewal_after | 
        
          | 3119 |                or $issuing_rule->no_auto_renewal_after eq ''; | 3117 |                or $issuing_rule->no_auto_renewal_after eq ''; | 
        
          | 3120 |  | 3118 |  | 
          
            
              | 3121 |     my $maximum_renewal_date = dt_from_string($itemissue->{issuedate}); | 3119 |     my $maximum_renewal_date = dt_from_string($itemissue->issuedate); | 
        
          | 3122 |     $maximum_renewal_date->add( | 3120 |     $maximum_renewal_date->add( | 
        
          | 3123 |         $issuing_rule->lengthunit => $issuing_rule->no_auto_renewal_after | 3121 |         $issuing_rule->lengthunit => $issuing_rule->no_auto_renewal_after | 
        
          | 3124 |     ); | 3122 |     ); |