use C4::Log; # logaction
use C4::Koha qw(GetAuthorisedValueByCode);
use C4::Overdues qw(CalcFine UpdateFine);
+use Algorithm::CheckDigits;
+
use Data::Dumper;
use Koha::DateUtils;
use Koha::Calendar;
$barcode =~ s/^(\D+)[0]*(\d+)$/$branch-$1-$2/i;
}
}
+ } elsif ($filter eq 'EAN13') {
+ my $ean = CheckDigits('ean');
+ if ( $ean->is_valid($barcode) ) {
+ #$barcode = sprintf('%013d',$barcode); # this doesn't work on 32-bit systems
+ $barcode = '0' x ( 13 - length($barcode) ) . $barcode;
+ } else {
+ warn "# [$barcode] not valid EAN-13/UPC-A\n";
+ }
}
return $barcode; # return barcode, modified or not
}
sub GetHardDueDate {
my ( $borrowertype, $itemtype, $branchcode ) = @_;
- my $dbh = C4::Context->dbh;
- my $sth =
- $dbh->prepare(
-"select hardduedate, hardduedatecompare from issuingrules where categorycode=? and itemtype=? and branchcode=?"
- );
- $sth->execute( $borrowertype, $itemtype, $branchcode );
- my $results = $sth->fetchrow_hashref;
- return (dt_from_string($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
- if defined($results) && $results->{hardduedate};
-
- $sth->execute( $borrowertype, "*", $branchcode );
- $results = $sth->fetchrow_hashref;
- return (dt_from_string($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
- if defined($results) && $results->{hardduedate};
-
- $sth->execute( "*", $itemtype, $branchcode );
- $results = $sth->fetchrow_hashref;
- return (dt_from_string($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
- if defined($results) && $results->{hardduedate};
- $sth->execute( "*", "*", $branchcode );
- $results = $sth->fetchrow_hashref;
- return (dt_from_string($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
- if defined($results) && $results->{hardduedate};
-
- $sth->execute( $borrowertype, $itemtype, "*" );
- $results = $sth->fetchrow_hashref;
- return (dt_from_string($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
- if defined($results) && $results->{hardduedate};
-
- $sth->execute( $borrowertype, "*", "*" );
- $results = $sth->fetchrow_hashref;
- return (dt_from_string($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
- if defined($results) && $results->{hardduedate};
-
- $sth->execute( "*", $itemtype, "*" );
- $results = $sth->fetchrow_hashref;
- return (dt_from_string($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
- if defined($results) && $results->{hardduedate};
-
- $sth->execute( "*", "*", "*" );
- $results = $sth->fetchrow_hashref;
- return (dt_from_string($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
- if defined($results) && $results->{hardduedate};
+ my $rule = GetIssuingRule( $borrowertype, $itemtype, $branchcode );
- # if no rule is set => return undefined
- return (undef, undef);
+ if ( defined( $rule ) ) {
+ if ( $rule->{hardduedate} ) {
+ return (dt_from_string($rule->{hardduedate}, 'iso'),$rule->{hardduedatecompare});
+ } else {
+ return (undef, undef);
+ }
+ }
}
=head2 GetIssuingRule
if ($borrowernumber) {
if($issue->{'overdue'}){
- my ( $amount, $type, $daycounttotal ) = C4::Overdues::CalcFine( $item, $borrower->{categorycode},$branch, $datedue, $today );
+ my ( $amount, $type, $unitcounttotal ) = C4::Overdues::CalcFine( $item, $borrower->{categorycode},$branch, $datedue, $today );
$type ||= q{};
if ( $amount > 0 && ( C4::Context->preference('finesMode') eq 'production' )) {
C4::Overdues::UpdateFine(
MarkIssueReturned( $borrowernumber, $itemnum );
my $borrower = C4::Members::GetMember( 'borrowernumber'=>$borrowernumber );
+ my $item = C4::Items::GetItem( $itemnum );
+ my $old_note = ($item->{'paidfor'} && ($item->{'paidfor'} ne q{})) ? $item->{'paidfor'}.' / ' : q{};
my @datearr = localtime(time);
my $date = ( 1900 + $datearr[5] ) . "-" . ( $datearr[4] + 1 ) . "-" . $datearr[3];
my $bor = "$borrower->{'firstname'} $borrower->{'surname'} $borrower->{'cardnumber'}";
- ModItem({ paidfor => "Paid for by $bor $date" }, undef, $itemnum);
+ ModItem({ paidfor => $old_note."Paid for by $bor $date" }, undef, $itemnum);
}