Adding feature : multiple returns via moremember page.
authorHenri-Damien LAURENT <henridamien@koha-fr.org>
Tue, 8 Jan 2008 18:57:26 +0000 (12:57 -0600)
committerJoshua Ferraro <jmf@liblime.com>
Tue, 8 Jan 2008 20:07:03 +0000 (14:07 -0600)
Adding Connection for renewScript
Adding javascript functions to moremeber.tmpl
Adding error management for returns.

Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
C4/Biblio.pm
koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl
members/moremember.pl
reserve/renewscript.pl

index 3cae753..bb81ed4 100755 (executable)
@@ -437,12 +437,11 @@ sub GetBiblioItemData {
     my ($biblioitemnumber) = @_;
     my $dbh       = C4::Context->dbh;
     my $query = "SELECT *,biblioitems.notes AS bnotes
-        FROM biblio, biblioitems ";
+        FROM biblio LEFT JOIN biblioitems on biblio.biblionumber=biblioitems.biblioitemnumber ";
     unless(C4::Context->preference('item-level_itypes')) { 
         $query .= "LEFT JOIN itemtypes on biblioitems.itemtype=itemtypes.itemtype ";
     }    
-    $query .= " WHERE biblio.biblionumber = biblioitems.biblionumber 
-        AND biblioitemnumber = ? ";
+    $query .= " WHERE biblioitemnumber = ? ";
     my $sth       =  $dbh->prepare($query);
     my $data;
     $sth->execute($biblioitemnumber);
index f3b5dd5..361a0ca 100644 (file)
@@ -9,6 +9,61 @@ $(document).ready(function() {
 <!-- TMPL_IF NAME="patronimages" -->$(window).load(function() {
                        verify_patron_images();
                 });<!-- /TMPL_IF -->
+function uncheck_sibling(me){
+nodename=me.getAttribute("name");
+if (nodename =="barcodes[]"){
+    var Node=me.parentNode.previousSibling;
+    while (Node.nodeName!="TD"){Node=Node.previousSibling}
+    var Nodes=Node.childNodes;
+    for (var i=0;i<Nodes.length;i++){
+      if (Nodes[i].nodeName=="INPUT" && Nodes[i].getAttribute("type")=="checkbox"){
+        Nodes[i].checked=false;
+      }     
+   }   
+
+}else {
+    var Node=me.parentNode.nextSibling;
+    while (Node.nodeName!="TD"){Node=Node.nextSibling}
+    var Nodes=Node.childNodes;
+    for (var i=0;i<Nodes.length;i++){
+      if (Nodes[i].nodeName=="INPUT" && Nodes[i].getAttribute("type")=="checkbox"){
+        Nodes[i].checked=false;
+      }     
+   }   
+}
+}
+function checkall(myname){
+var ItemsNodes=document.getElementsByName('items[]');
+var BarcodesNodes=document.getElementsByName('barcodes[]');
+if (myname =="barcodes[]"){
+for (var i=0;i<ItemsNodes.length;i++){
+    ItemsNodes[i].checked=false;
+}   
+for (var i=0;i<BarcodesNodes.length;i++){
+    BarcodesNodes[i].checked=true;
+}   
+}else {
+for (var i=0;i<BarcodesNodes.length;i++){
+    BarcodesNodes[i].checked=false;
+}   
+for (var i=0;i<ItemsNodes.length;i++){
+    ItemsNodes[i].checked=true;
+}   
+}
+}
+function uncheckall(myname){
+var ItemsNodes=document.getElementsByName('items[]');
+var BarcodesNodes=document.getElementsByName('barcodes[]');
+if (myname =="barcodes[]"){
+for (var i=0;i<BarcodesNodes.length;i++){
+    BarcodesNodes[i].checked=false;
+}   
+}else {
+for (var i=0;i<ItemsNodes.length;i++){
+    ItemsNodes[i].checked=false;
+}   
+}
+}
 //]]>
 </script>
 
@@ -267,17 +322,19 @@ $(document).ready(function() {
                 <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->">On Hold</a>
             <!-- TMPL_ELSE -->
             <!-- TMPL_IF NAME="red" -->
-            <input type="checkbox" name="items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" />
+            <input type="checkbox" name="items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" onClick="javascript:uncheck_sibling(this);" />
             <!-- TMPL_ELSE -->
-            <input type="checkbox" name="items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" />
+            <input type="checkbox" name="items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" onClick="javascript:uncheck_sibling(this);" />
             <!-- /TMPL_IF -->
-            <input type="checkbox" name="all_items[]" value="<!-- TMPL_VAR NAME="itemnumber" -->" checked="checked" style="display: none;" />
             <!-- /TMPL_IF -->
             </td>
-            <td><a href="/cgi-bin/koha/circ/returns.pl?barcode=<!-- TMPL_VAR NAME="barcode" -->">Check In</a></td>
+            <td><input type="checkbox" name="barcodes[]"  value="<!-- TMPL_VAR NAME="barcode" -->" onClick="javascript:uncheck_sibling(this);" /></td>
                        <!-- TMPL_IF NAME="renew_failed" -->
                        <td>Renewal Failed</td>
                        <!-- /TMPL_IF -->
+      <!-- TMPL_IF NAME="return_failed" -->
+      <td>Return Failed</td>
+      <!-- /TMPL_IF -->
         </tr>
         <!-- /tmpl_loop -->
         <tr>
@@ -287,8 +344,11 @@ $(document).ready(function() {
         </tr>
         </table>
         <fieldset class="action">
-        <input type="submit" name="renew_checked" value="Renew checked items" />
-        <input type="submit" name="renew_all" value="Renew all" />
+        <input type="submit" name="renew_checked" value="Renew or Return checked items" />
+        <input type="submit" name="renew_all" value="Renew all" onClick="checkall('items[]');"/>
+        <input type="submit" name="return_all" value="Return all" onClick="checkall('barcodes[]');"/>
+        <input type="button" name="renew_all" value="Uncheck all Renew" onClick="uncheckall('items[]');"/>
+        <input type="button" name="return_all" value="Uncheck all Returns" onClick="uncheckall('barcodes[]');"/>
         </fieldset>
     </form><!-- TMPL_ELSE --><p>Patron has nothing checked out.</p><!-- /TMPL_IF -->
        </div>
index 8128d50..13cd8eb 100755 (executable)
@@ -61,9 +61,12 @@ my $input = new CGI;
 $debug or $debug = $input->param('debug') || 0;
 my $print = $input->param('print');
 my @failedrenews = $input->param('failedrenew');
+my @failedreturns = $input->param('failedreturn');
 my $error = $input->param('error');
 my @renew_failed;
-for (@failedrenews) { $renew_failed[$_] = 1; }
+for my $renew (@failedrenews) { $renew_failed[$renew] = 1; }
+my @return_failed;
+for my $failedret (@failedreturns) { $return_failed[$failedret] = 1; }
 
 my $template_name;
 
@@ -239,6 +242,7 @@ for ( my $i = 0 ; $i < $count ; $i++ ) {
     my ( $restype, $reserves ) = CheckReserves( $issue->[$i]{'itemnumber'} );
     $row{'norenew'} = ($restype) ? 1 : 0;
        $row{'renew_failed'} = $renew_failed[$issue->[$i]{'itemnumber'}];               
+  $row{'return_failed'} = $return_failed[$issue->[$i]{'barcode'}];   
     push( @issuedata, \%row );
 }
 
index 804f2fa..b01c43e 100755 (executable)
 
 use CGI;
 use C4::Circulation;
+use C4::Auth;
 
 my $input = new CGI;
 
+#Set Up User_env
+# And assures user is loggedin  and has correct accreditations.
+
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+    {
+        template_name   => "members/moremember.tmpl",
+        query           => $input,
+        type            => "intranet",
+        authnotrequired => 0,
+        flagsrequired   => { borrowers => 1 },
+        debug           => 1,
+    }
+);
+
 #
 # find items to renew, all items or a selection of items
 #
@@ -38,7 +53,10 @@ if ($input->param('renew_all')) {
 else {
     @data = $input->param('items[]');
 }
+my @barcodes = $input->param('barcodes[]');
 my $branch=$input->param('branch');
+
+# warn "barcodes : @barcodes";
 #
 # renew items
 #
@@ -54,17 +72,24 @@ foreach my $itemno (@data) {
                $failedrenews.="&failedrenew=$itemno";        
        }
 }
+my $failedreturn;
+foreach my $barcode (@barcodes) {
+    # check status before renewing issue  
+   my ( $returned, $messages, $issueinformation, $borrower ) = 
+    AddReturn($barcode,$branch,1);
+   $failedreturn.="&failedreturn=$barcode" unless ($returned);
+}
 
 #
 # redirection to the referrer page
 #
 if ($input->param('destination') eq "circ"){
     print $input->redirect(
-        '/cgi-bin/koha/circ/circulation.pl?findborrower='.$cardnumber.$failedrenews
+        '/cgi-bin/koha/circ/circulation.pl?findborrower='.$cardnumber.$failedrenews.$failedreturn
     );
 }
 else {
     print $input->redirect(
-        '/cgi-bin/koha/members/moremember.pl?borrowernumber='.$borrowernumber.$failedrenews
+        '/cgi-bin/koha/members/moremember.pl?borrowernumber='.$borrowernumber.$failedrenews.$failedreturn
     );
 }