Bug 5549 : GetPendingIssues now returns DateTime objects
[koha.git] / opac / opac-user.pl
index 9806c9f..d49f778 100755 (executable)
@@ -30,11 +30,13 @@ use C4::Members;
 use C4::Members::AttributeTypes;
 use C4::Members::Attributes qw/GetBorrowerAttributeValue/;
 use C4::Output;
+use C4::Overdues qw/CheckBorrowerDebarred/;
 use C4::Biblio;
 use C4::Items;
 use C4::Dates qw/format_date/;
 use C4::Letters;
 use C4::Branch; # GetBranches
+use Koha::DateUtils;
 
 use constant ATTRIBUTE_SHOW_BARCODE => 'SHOW_BCODE';
 
@@ -66,6 +68,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
 
 my $OPACDisplayRequestPriority = (C4::Context->preference("OPACDisplayRequestPriority")) ? 1 : 0;
 my $patronupdate = $query->param('patronupdate');
+my $canrenew = 1;
 
 # get borrower information ....
 my ( $borr ) = GetMemberDetails( $borrowernumber );
@@ -78,8 +81,20 @@ for (qw(dateenrolled dateexpiry dateofbirth)) {
 }
 $borr->{'ethnicity'} = fixEthnicity( $borr->{'ethnicity'} );
 
-if ( $borr->{'debarred'} || $borr->{'gonenoaddress'} || $borr->{'lost'} ) {
+my $debar = CheckBorrowerDebarred($borrowernumber);
+my $userdebarred;
+
+if ($debar) {
+    $userdebarred = 1;
+    $template->param( 'userdebarred' => $userdebarred );
+    if ( $debar ne "9999-12-31" ) {
+        $borr->{'userdebarreddate'} = C4::Dates::format_date($debar);
+    }
+}
+
+if ( $userdebarred || $borr->{'gonenoaddress'} || $borr->{'lost'} ) {
     $borr->{'flagged'} = 1;
+    $canrenew = 0;
 }
 
 if ( $borr->{'amountoutstanding'} > 5 ) {
@@ -93,6 +108,7 @@ $no_renewal_amt ||= 0;
 
 if ( $borr->{amountoutstanding} > $no_renewal_amt ) {
     $borr->{'flagged'} = 1;
+    $canrenew = 0;
     $template->param(
         renewal_blocked_fines => sprintf( '%.02f', $no_renewal_amt ),
     );
@@ -104,13 +120,12 @@ if ( $borr->{'amountoutstanding'} < 0 ) {
 }
 
 $borr->{'amountoutstanding'} = sprintf "%.02f", $borr->{'amountoutstanding'};
-$borr->{'debarred'} = C4::Dates->new($borr->{'debarred'},'iso')->output;
 
 my @bordat;
 $bordat[0] = $borr;
 
 # Warningdate is the date that the warning starts appearing
-if ( C4::Context->preference('NotifyBorrowerDeparture') &&
+if ( $borr->{dateexpiry} && C4::Context->preference('NotifyBorrowerDeparture') &&
     Date_to_Days(Add_Delta_Days($warning_year,$warning_month,$warning_day,- C4::Context->preference('NotifyBorrowerDeparture'))) <
     Date_to_Days( $today_year, $today_month, $today_day ) ) 
 {
@@ -127,22 +142,21 @@ $template->param(   BORROWER_INFO     => \@bordat,
                     OPACMySummaryHTML => (C4::Context->preference("OPACMySummaryHTML")) ? 1 : 0,
                     surname           => $borr->{surname},
                     showname          => $borr->{showname},
+
                 );
 
 #get issued items ....
 
 my $count          = 0;
-my $toggle = 0;
 my $overdues_count = 0;
 my @overdues;
 my @issuedat;
 my $itemtypes = GetItemTypes();
-my ($issues) = GetPendingIssues($borrowernumber);
-my $canrenew = 0;
+my $issues = GetPendingIssues($borrowernumber);
 if ($issues){
-       foreach my $issue ( sort { $b->{'date_due'} cmp $a->{'date_due'} } @$issues ) {
+       foreach my $issue ( sort { $b->{date_due}->datetime() cmp $a->{date_due}->datetime() } @{$issues} ) {
                # check for reserves
-               my ( $restype, $res ) = CheckReserves( $issue->{'itemnumber'} );
+               my ( $restype, $res, undef ) = CheckReserves( $issue->{'itemnumber'} );
                if ( $restype ) {
                        $issue->{'reserved'} = 1;
                }
@@ -169,7 +183,6 @@ if ($issues){
                ($issue->{'renewcount'},$issue->{'renewsallowed'},$issue->{'renewsleft'}) = GetRenewCount($borrowernumber, $issue->{'itemnumber'});
         if($status && C4::Context->preference("OpacRenewalAllowed")){
             $issue->{'status'} = $status;
-            $canrenew = 1;
         }
                $issue->{'too_many'} = 1 if $renewerror and $renewerror eq 'too_many';
                $issue->{'on_reserve'} = 1 if $renewerror and $renewerror eq 'on_reserve';
@@ -188,7 +201,7 @@ if ($issues){
                        $issue->{'imageurl'}    = getitemtypeimagelocation( 'opac', $itemtypes->{$itemtype}->{'imageurl'} );
                        $issue->{'description'} = $itemtypes->{$itemtype}->{'description'};
                }
-               $issue->{date_due} = format_date($issue->{date_due});
+               $issue->{date_due} = output_pref($issue->{date_due});
                push @issuedat, $issue;
                $count++;