If the syspref 'AllowNotForLoanOverride'(YESNO) is set to YES, the librarian is 
able to force a loan on an item set as "not for
loan".
If the item is not for loan and the syspref is set to YES, koha will ask to the 
librarian if he really want to check-out it, else
do nothing.
---
 C4/Circulation.pm                                  |   39 +++++++++++---------
 installer/data/mysql/en/mandatory/sysprefs.sql     |    1 +
 .../1-Obligatoire/unimarc_standard_systemprefs.sql |    3 +-
 installer/data/mysql/updatedatabase.pl             |    7 ++++
 4 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/C4/Circulation.pm b/C4/Circulation.pm
index c79ca05..e1b21d8 100644
--- a/C4/Circulation.pm
+++ b/C4/Circulation.pm
@@ -731,27 +731,32 @@ sub CanBookBeIssued {
     unless ( $item->{barcode} ) {
         $issuingimpossible{UNKNOWN_BARCODE} = 1;
     }
+
     if (   $item->{'notforloan'}
         && $item->{'notforloan'} > 0 )
     {
-        $issuingimpossible{NOT_FOR_LOAN} = 1;
+        if(!C4::Context->preference("AllowNotForLoanOverride")){
+            $issuingimpossible{NOT_FOR_LOAN} = 1;
+        }else{
+            $needsconfirmation{NOT_FOR_LOAN_FORCING} = 1;
+        }
+    }
+    elsif ( !$item->{'notforloan'} ){
+        # we have to check itemtypes.notforloan also
+        if (C4::Context->preference('item-level_itypes')){
+            # this should probably be a subroutine
+            my $sth = $dbh->prepare("SELECT notforloan FROM itemtypes WHERE 
itemtype = ?");
+            $sth->execute($item->{'itemtype'});
+            my $notforloan=$sth->fetchrow_hashref();
+            $sth->finish();
+            if ($notforloan->{'notforloan'} == 1){
+                $issuingimpossible{NOT_FOR_LOAN} = 1;
+            }
+        }
+        elsif ($biblioitem->{'notforloan'} == 1){
+            $issuingimpossible{NOT_FOR_LOAN} = 1;
+        }
     }
-       elsif ( !$item->{'notforloan'} ){
-               # we have to check itemtypes.notforloan also
-               if (C4::Context->preference('item-level_itypes')){
-                       # this should probably be a subroutine
-                       my $sth = $dbh->prepare("SELECT notforloan FROM 
itemtypes WHERE itemtype = ?");
-                       $sth->execute($item->{'itemtype'});
-                       my $notforloan=$sth->fetchrow_hashref();
-                       $sth->finish();
-                       if ($notforloan->{'notforloan'} == 1){
-                               $issuingimpossible{NOT_FOR_LOAN} = 1;           
                
-                       }
-               }
-               elsif ($biblioitem->{'notforloan'} == 1){
-                       $issuingimpossible{NOT_FOR_LOAN} = 1;
-               }
-       }
     if ( $item->{'wthdrawn'} && $item->{'wthdrawn'} == 1 )
     {
         $issuingimpossible{WTHDRAWN} = 1;
diff --git a/installer/data/mysql/en/mandatory/sysprefs.sql 
b/installer/data/mysql/en/mandatory/sysprefs.sql
index 27a5736..d38484e 100644
--- a/installer/data/mysql/en/mandatory/sysprefs.sql
+++ b/installer/data/mysql/en/mandatory/sysprefs.sql
@@ -213,3 +213,4 @@ INSERT INTO `systempreferences` 
(variable,value,options,explanation,type) VALUES
 INSERT INTO systempreferences (variable,value,explanation,options,type) 
VALUES('AllowRenewalLimitOverride', '0', 'if ON, allows renewal limits to be 
overridden on the circulation screen',NULL,'YesNo');
 INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
VALUES ('OPACDisplayRequestPriority','0','','Show patrons the priority level on 
holds in the OPAC','YesNo');
 INSERT INTO `systempreferences` ( `variable` , `value` , `options` , 
`explanation` , `type` ) VALUES ( 'UseBranchTransferLimits', '0', '', 'If ON, 
Koha will will use the rules defined in branch_transfer_limits to decide if an 
item transfer should be allowed.', 'YesNo');
+INSERT INTO `systempreferences` ( `variable` , `value` , `options` , 
`explanation` , `type` ) VALUES ( 'AllowNotForLoanOverride', '0', '', 'If ON, 
Koha will allow the librarian to loan a not for loan item.', 'YesNo');
\ No newline at end of file
diff --git 
a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql 
b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql
index 97a9573..2164818 100644
--- a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql
+++ b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql
@@ -213,5 +213,6 @@ INSERT INTO `systempreferences` 
(variable,value,options,explanation,type) VALUES
 INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
VALUES('OpacSuppression', '0', '', 'Turn ON the OPAC Suppression feature, 
requires further setup, ask your system administrator for details', 'YesNo');
 INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
VALUES ('SMSSendDriver','','','Détermine le pilote utilisé par SMS::Send pour 
envoyer des SMS.','free');
 INSERT INTO systempreferences (variable,value,explanation,options,type) 
VALUES('AllowRenewalLimitOverride', '0', "S'il est activé, autorise le 
dépassement des limites du renouvellement sur la page de 
circulation",NULL,'YesNo');
-INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
VALUES ('OPACDisplayRequestPriority','0','','Afficher l\'ordre des réservation 
pour les adhérents � l\'opac','YesNo');
+INSERT INTO `systempreferences` (variable,value,options,explanation,type) 
VALUES ('OPACDisplayRequestPriority','0','','Afficher l\'ordre des réservation 
pour les adhérents � l\'opac','YesNo');
 INSERT INTO `systempreferences` ( `variable` , `value` , `options` , 
`explanation` , `type` ) VALUES ( 'UseBranchTransferLimits', '0', '', 'If ON, 
Koha will will use the rules defined in branch_transfer_limits to decide if an 
item transfer should be allowed.', 'YesNo');
+INSERT INTO `systempreferences` ( `variable` , `value` , `options` , 
`explanation` , `type` ) VALUES ( 'AllowNotForLoanOverride', '0', '', 'If ON, 
Koha will allow the librarian to loan a not for loan item.', 'YesNo');
\ No newline at end of file
diff --git a/installer/data/mysql/updatedatabase.pl 
b/installer/data/mysql/updatedatabase.pl
index f787eee..8a13a22 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -2123,6 +2123,13 @@ if (C4::Context->preference("Version") < 
TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
+$DBversion = "3.01.00.015";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+    $dbh->do("INSERT INTO `systempreferences` ( `variable` , `value` , 
`options` , `explanation` , `type` ) VALUES ( 'AllowNotForLoanOverride', '0', 
'', 'If ON, Koha will allow the librarian to loan a not for loan item.', 
'YesNo')");
+    print "Upgrade to $DBversion done (added AllowNotForLoanOverride system 
preference)\n";
+    SetVersion ($DBversion);
+}
+
 =item DropAllForeignKeys($table)
 
   Drop all foreign keys of the table $table
-- 
1.5.6.3

_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha.org/mailman/listinfo/koha-patches

Reply via email to