use C4::Koha;
use C4::Biblio;
use C4::Members;
-use C4::Date;
+use C4::Dates;
use Date::Calc qw(
Today
Today_and_Now
if ( $actualissue->{borrowernumber} eq $borrower->{'borrowernumber'} ) {
AddRenewal(
$borrower->{'borrowernumber'},
- $item->{'itemnumber'}
+ $item->{'itemnumber'},
+ C4::Context->userenv->{'branch'},
+ $date
);
}
$dateduef=CheckValidDatedue($dateduef,$item->{'itemnumber'},C4::Context->userenv->{'branch'});
# if ReturnBeforeExpiry ON the datedue can't be after borrower expirydate
- if ( C4::Context->preference('ReturnBeforeExpiry') && $dateduef gt $borrower->{dateexpiry} ) {
- $dateduef = $borrower->{dateexpiry};
+ if ( C4::Context->preference('ReturnBeforeExpiry') && $dateduef->output('iso') gt $borrower->{dateexpiry} ) {
+ $dateduef = C4::Dates->new($borrower->{dateexpiry},'iso');
}
};
$sth->execute(
# get information on item
my $iteminformation = GetItemIssue( GetItemnumberFromBarcode($barcode));
+ my $biblio = GetBiblioFromItemNumber($iteminformation->{'itemnumber'});
unless ($iteminformation->{'itemnumber'} ) {
$messages->{'BadBarcode'} = $barcode;
$doreturn = 0;
$iteminformation->{'holdingbranch'} = C4::Context->userenv->{'branch'};
}
ModDateLastSeen( $iteminformation->{'itemnumber'} );
+ my $sth = $dbh->prepare("UPDATE items SET onloan = NULL where itemnumber = ?");
+ $sth->execute($iteminformation->{'itemnumber'});
+ $sth->finish();
+ my $record = GetMarcItem( $biblio->{'biblionumber'}, $iteminformation->{'itemnumber'} );
+ my $frameworkcode = GetFrameworkCode( $biblio->{'biblionumber'} );
+ ModItemInMarc( $record, $biblio->{'biblionumber'}, $iteminformation->{'itemnumber'}, $frameworkcode );
+
if ($iteminformation->{borrowernumber}){
- my $sth = $dbh->prepare("UPDATE items SET onloan = NULL where itemnumber = ?");
- $sth->execute($iteminformation->{'itemnumber'});
- $sth->finish();
- my $record = GetMarcItem( $iteminformation->{'biblionumber'}, $iteminformation->{'itemnumber'} );
- my $frameworkcode = GetFrameworkCode( $iteminformation->{'biblionumber'} );
- ModItemInMarc( $record, $iteminformation->{'biblionumber'}, $iteminformation->{'itemnumber'}, $frameworkcode );
- }
- ($borrower) = C4::Members::GetMemberDetails( $iteminformation->{borrowernumber}, 0 );
-
+ ($borrower) = C4::Members::GetMemberDetails( $iteminformation->{borrowernumber}, 0 );
+ }
# fix up the accounts.....
if ( $iteminformation->{'itemlost'} ) {
$messages->{'WasLost'} = 1;
if ($amountleft > 0){
$amountleft*=-1;
}
- my $desc="Book Returned ".$iteminfo->{'barcode'};
+ my $desc="Item Returned ".$iteminfo->{'barcode'};
$usth = $dbh->prepare("INSERT INTO accountlines
(borrowernumber,accountno,date,amount,description,accounttype,amountoutstanding)
VALUES (?,?,now(),?,?,'CR',?)");
my ( $borrowernumber, $itemnumber, $branch ,$datedue ) = @_;
my $dbh = C4::Context->dbh;
-
+
+ my $biblio = GetBiblioFromItemNumber($itemnumber);
# If the due date wasn't specified, calculate it by adding the
# book's loan length to today's date.
unless ( $datedue ) {
- my $biblio = GetBiblioFromItemNumber($itemnumber);
+
my $borrower = C4::Members::GetMemberDetails( $borrowernumber, 0 );
my $loanlength = GetLoanLength(
$borrower->{'categorycode'},
);
#FIXME -- choose issuer or borrower branch.
#FIXME -- where's the calendar ?
- my ( $due_year, $due_month, $due_day ) =
- Add_Delta_DHMS( Today_and_Now(), $loanlength, 0, 0, 0 );
- $datedue = C4::Dates->new( "$due_year-$due_month-$due_day",'iso');
- $datedue=CheckValidDatedue($datedue,$itemnumber,$branch);
+ #FIXME -- $debug-ify the (0)
+ my @darray = Add_Delta_DHMS( Today_and_Now(), $loanlength, 0, 0, 0 );
+ $datedue = C4::Dates->new( sprintf("%04d-%02d-%02d",@darray[0..2]), 'iso');
+ (0) and print STDERR "C4::Dates->new->output = " . C4::Dates->new()->output()
+ . "\ndatedue->output = " . $datedue->output()
+ . "\n(Y,M,D) = " . join ',', @darray;
+ $datedue=CheckValidDatedue($datedue,$itemnumber,$branch);
}
# Find the issues record for this book
);
$sth->execute( $datedue->output('iso'), $renews, $borrowernumber, $itemnumber );
$sth->finish;
-
- # Log the renewal
+
+ # Update the renewal count on the item, and tell zebra to reindex
+ $renews = $biblio->{'renewals'} + 1;
+ $sth = $dbh->prepare("UPDATE items SET renewals = ? WHERE itemnumber = ?");
+ $sth->execute($renews,$itemnumber);
+ $sth->finish();
+ my $record = GetMarcItem( $biblio->{'biblionumber'}, $itemnumber );
+ my $frameworkcode = GetFrameworkCode( $biblio->{'biblionumber'} );
+ ModItemInMarc( $record, $biblio->{'biblionumber'}, $itemnumber, $frameworkcode );
# Charge a new rental fee, if applicable?
my ( $charge, $type ) = GetIssuingCharges( $itemnumber, $borrowernumber );
'Rent', $charge, $itemnumber );
$sth->finish;
}
- UpdateStats( C4::Context->userenv->{'branchcode'}, 'renew', $charge, '', $itemnumber );
+ # Log the renewal
+ UpdateStats( $branch, 'renew', $charge, '', $itemnumber );
}
sub GetRenewCount {
my $years=$datedue[0];
my $month=$datedue[1];
my $day=$datedue[2];
+# die "Item# $itemnumber ($branchcode) due: " . ${date_due}->output() . "\n(Y,M,D) = ($years,$month,$day)":
my $dow;
for (my $i=0;$i<2;$i++){
$dow=Day_of_Week($years,$month,$day);
(($years,$month,$day) = Add_Delta_Days($years,$month,$day, 1))if ($i ne '1');
}
}
-my $newdatedue=C4::Dates->new( $years."-".$month."-".$day,'iso');
+ my $newdatedue=C4::Dates->new(sprintf("%04d-%02d-%02d",$years,$month,$day),'iso');
return $newdatedue;
}
=head2 CheckRepeatableHolidays