Bug 26591: SIP option prevcheckout_block_checkout to block checkout of previously...
[koha-ffzg.git] / C4 / SIP / Sip / MsgType.pm
index e5c2b9e..62d3d5f 100644 (file)
@@ -433,7 +433,7 @@ sub build_patron_status {
             $password_rc = $patron->check_password($patron_pwd);
         }
 
-        $resp .= patron_status_string($patron);
+        $resp .= patron_status_string( $patron, $server );
         $resp .= $lang . timestamp();
         if ( defined $server->{account}->{ae_field_template} ) {
             $resp .= add_field( FID_PERSONAL_NAME, $patron->format( $server->{account}->{ae_field_template}, $server ) );
@@ -533,7 +533,7 @@ sub handle_checkout {
 
         # Does the transaction date really matter for items that are
         # checkout out while the terminal is online?  I'm guessing 'no'
-        $status = $ils->checkout( $patron_id, $item_id, $sc_renewal_policy, $fee_ack );
+        $status = $ils->checkout( $patron_id, $item_id, $sc_renewal_policy, $fee_ack, $account );
     }
 
     $item   = $status->item;
@@ -969,7 +969,7 @@ sub handle_patron_info {
     $resp = (PATRON_INFO_RESP);
     if ($patron) {
         $patron->update_lastseen();
-        $resp .= patron_status_string($patron);
+        $resp .= patron_status_string( $patron, $server );
         $resp .= ( defined($lang) and length($lang) == 3 ) ? $lang : $patron->language;
         $resp .= timestamp();
 
@@ -1220,7 +1220,7 @@ sub handle_item_information {
         $resp .= maybe_add( FID_ITEM_PROPS,   $item->sip_item_properties, $server );
 
         if ( my $CR = $server->{account}->{cr_item_field} ) {
-                $resp .= maybe_add( FID_COLLECTION_CODE, $item->$CR, $server );
+                $resp .= maybe_add( FID_COLLECTION_CODE, $item->{$CR}, $server );
         } else {
           $resp .= maybe_add( FID_COLLECTION_CODE, $item->collection_code, $server );
         }
@@ -1337,7 +1337,7 @@ sub handle_patron_enable {
             # Don't enable the patron if there was an invalid password
             $status = $patron->enable;
         }
-        $resp .= patron_status_string($patron);
+        $resp .= patron_status_string( $patron, $server );
         $resp .= $patron->language . timestamp();
 
         $resp .= add_field( FID_PATRON_ID,     $patron->id, $server );
@@ -1663,6 +1663,8 @@ sub send_acs_status {
 #
 sub patron_status_string {
     my $patron = shift;
+    my $server = shift;
+
     my $patron_status;
 
     siplog( "LOG_DEBUG", "patron_status_string: %s charge_ok: %s", $patron->id, $patron->charge_ok );
@@ -1674,7 +1676,7 @@ sub patron_status_string {
         denied( $patron->hold_ok ),
         boolspace( $patron->card_lost ),
         boolspace( $patron->too_many_charged ),
-        boolspace( $patron->too_many_overdue ),
+        $server->{account}->{overdues_block_checkout} ? boolspace( $patron->too_many_overdue ) : q{ },
         boolspace( $patron->too_many_renewal ),
         boolspace( $patron->too_many_claim_return ),
         boolspace( $patron->too_many_lost ),