Browse Source

Adding feature : multiple returns via moremember page.

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>
3.0.x
Henri-Damien LAURENT 17 years ago
committed by Joshua Ferraro
parent
commit
e7b1232250
  1. 5
      C4/Biblio.pm
  2. 72
      koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl
  3. 6
      members/moremember.pl
  4. 29
      reserve/renewscript.pl

5
C4/Biblio.pm

@ -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);

72
koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl

@ -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>

6
members/moremember.pl

@ -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 );
}

29
reserve/renewscript.pl

@ -24,9 +24,24 @@
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
);
}

Loading…
Cancel
Save