+
+=head2 GetHardDueDate
+
+ my ($hardduedate,$hardduedatecompare) = &GetHardDueDate($borrowertype,$itemtype,branchcode)
+
+Get the Hard Due Date and it's comparison for an itemtype, a borrower type and a branch
+
+=cut
+
+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 (C4::Dates->new($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
+ if defined($results) && $results->{hardduedate} ne 'NULL';
+
+ $sth->execute( $borrowertype, "*", $branchcode );
+ $results = $sth->fetchrow_hashref;
+ return (C4::Dates->new($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
+ if defined($results) && $results->{hardduedate} ne 'NULL';
+
+ $sth->execute( "*", $itemtype, $branchcode );
+ $results = $sth->fetchrow_hashref;
+ return (C4::Dates->new($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
+ if defined($results) && $results->{hardduedate} ne 'NULL';
+
+ $sth->execute( "*", "*", $branchcode );
+ $results = $sth->fetchrow_hashref;
+ return (C4::Dates->new($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
+ if defined($results) && $results->{hardduedate} ne 'NULL';
+
+ $sth->execute( $borrowertype, $itemtype, "*" );
+ $results = $sth->fetchrow_hashref;
+ return (C4::Dates->new($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
+ if defined($results) && $results->{hardduedate} ne 'NULL';
+
+ $sth->execute( $borrowertype, "*", "*" );
+ $results = $sth->fetchrow_hashref;
+ return (C4::Dates->new($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
+ if defined($results) && $results->{hardduedate} ne 'NULL';
+
+ $sth->execute( "*", $itemtype, "*" );
+ $results = $sth->fetchrow_hashref;
+ return (C4::Dates->new($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
+ if defined($results) && $results->{hardduedate} ne 'NULL';
+
+ $sth->execute( "*", "*", "*" );
+ $results = $sth->fetchrow_hashref;
+ return (C4::Dates->new($results->{hardduedate}, 'iso'),$results->{hardduedatecompare})
+ if defined($results) && $results->{hardduedate} ne 'NULL';
+
+ # if no rule is set => return undefined
+ return (undef, undef);
+}
+